This commit is contained in:
mohammed-alkhazrji 2025-12-14 17:34:00 +03:00
parent 179989e497
commit 726dc59ece
5 changed files with 71 additions and 23 deletions

View File

@ -1221,7 +1221,7 @@ msgstr "لجان الإحتياج السنوي"
#. module: odex25_annual_purchase #. module: odex25_annual_purchase
#: model:ir.model.fields,field_description:odex25_annual_purchase.field_annual_rfq__technical_attachment_ids #: model:ir.model.fields,field_description:odex25_annual_purchase.field_annual_rfq__technical_attachment_ids
#: model_terms:ir.ui.view,arch_db:odex25_annual_purchase.view_annual_rfq_form_hide_chatter_for_committee #: model_terms:ir.ui.view,arch_db:odex25_annual_purchase.view_annual_rfq_form
msgid "Technical Attachments" msgid "Technical Attachments"
msgstr "المرفقات الفنية" msgstr "المرفقات الفنية"

View File

@ -3,3 +3,4 @@ from . import addendum
from . import purchase_requisition from . import purchase_requisition
from . import annual_rfq from . import annual_rfq
from . import committe from . import committe
from . import purchase_order

View File

@ -164,28 +164,12 @@ class PurchaseRFQ(models.Model):
} }
def action_refuse_rfq(self): def action_refuse_rfq(self):
self.ensure_one() self.ensure_one()
member = self._get_current_member_vote()
member = self.env['committe.member'].search([
('rfq_id', '=', self.id),
('user_id', '=', self.env.user.id),
], limit=1)
vals = {
'refused': True,
'select': False,
'selection_reason': False,
}
if member: if member:
member.write(vals) if member.refused:
else: raise UserError(_("You have already refused this RFQ before."))
self.env['committe.member'].create({
'rfq_id': self.id,
'user_id': self.env.user.id,
**vals
})
self._check_committee_rejection()
return { return {
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
@ -195,6 +179,7 @@ class PurchaseRFQ(models.Model):
'target': 'new', 'target': 'new',
'context': { 'context': {
'default_rfq_id': self.id 'default_rfq_id': self.id
} }
} }

View File

@ -0,0 +1,62 @@
from odoo import models, fields, api, _
class PurchaseOrder(models.Model):
_inherit = 'purchase.order'
@api.onchange('requisition_id')
def _onchange_requisition_id(self):
if not self.requisition_id:
return super(PurchaseOrder, self)._onchange_requisition_id()
requisition = self.requisition_id
is_annual = bool(requisition.annual_request_id)
if not is_annual:
return super(PurchaseOrder, self)._onchange_requisition_id()
self = self.with_company(self.company_id)
if self.partner_id:
partner = self.partner_id
else:
partner = requisition.vendor_id
payment_term = partner.property_supplier_payment_term_id
FiscalPosition = self.env['account.fiscal.position']
fpos = FiscalPosition.with_company(self.company_id).get_fiscal_position(partner.id)
self.partner_id = partner.id
self.fiscal_position_id = fpos.id
self.payment_term_id = payment_term.id
self.company_id = requisition.company_id.id
self.currency_id = requisition.currency_id.id
current_origins = (self.origin or '').split(', ')
if requisition.name and requisition.name not in current_origins:
if self.origin:
self.origin = self.origin + ', ' + requisition.name
else:
self.origin = requisition.name
self.notes = requisition.description
self.date_order = fields.Datetime.now()
requisition_lines_map = {
line.product_id.id: line
for line in requisition.line_ids
}
for po_line in self.order_line:
req_line = requisition_lines_map.get(po_line.product_id.id)
if req_line:
price_unit = req_line.price_unit
if req_line.product_uom_id != po_line.product_uom:
price_unit = req_line.product_uom_id._compute_price(
req_line.price_unit, po_line.product_uom
)
po_line.price_unit = price_unit

View File

@ -33,14 +33,14 @@
string="Select" string="Select"
class="oe_highlight" class="oe_highlight"
attrs="{'invisible': [('show_committee_actions','=',False)]}" attrs="{'invisible': [('show_committee_actions','=',False)]}"
groups="odex25_annual_purchase.group_technical_committee,odex25_annual_purchase.group_annual_committee"
/> />
<button name="action_refuse_rfq" <button name="action_refuse_rfq"
type="object" type="object"
string="Refuse" string="Refuse"
attrs="{'invisible': [('show_committee_actions','=',False)]}" attrs="{'invisible': [('show_committee_actions','=',False)]}"
groups="odex25_annual_purchase.group_technical_committee,odex25_annual_purchase.group_annual_committee"
/> />
<button type="object" name="action_recommend" <button type="object" name="action_recommend"