30 lines
1 KiB
Python
30 lines
1 KiB
Python
from odoo import models
|
|
|
|
class PurchaseOrder(models.Model):
|
|
_inherit = 'purchase.order'
|
|
|
|
def _merge_alternative_po(self, rfqs):
|
|
"""Override to handle requisition_id during merge.
|
|
|
|
Args:
|
|
rfqs: recordset of purchase.order to merge
|
|
|
|
Returns:
|
|
purchase.order: the merged purchase order
|
|
"""
|
|
# Only merge orders in draft or sent state
|
|
rfqs = rfqs.filtered(lambda o: o.state in ('draft', 'sent'))
|
|
|
|
# Get the oldest order as base
|
|
base_order = rfqs.sorted(lambda x: (x.date_order, x.id))[0]
|
|
|
|
# Call parent method to merge orders
|
|
merged_order = super()._merge_alternative_po(rfqs)
|
|
|
|
# After merge, ensure lines are properly linked to their requisitions
|
|
for line in merged_order.order_line:
|
|
line._compute_requisition_id()
|
|
if line.requisition_id and line.requisition_line_id:
|
|
line.price_unit = line.requisition_line_id.price_unit
|
|
|
|
return merged_order
|