bemade-addons/purchase_customer_requisition/models/purchase_order.py
2025-02-19 11:51:54 -05:00

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