from odoo import fields, models, api class PurchaseOrder(models.Model): _inherit = 'purchase.order' sale_order_id = fields.Many2one('sale.order', string='Sale Order') procurement_status = fields.Char(string='Procurement Status', compute='get_procurement_status',readonly=True) def get_procurement_status(self): for purchase_order in self: product_uom_qty = sum_qty_received = 0 for order_line in purchase_order.order_line: product_uom_qty += order_line.product_uom_qty sum_qty_received += order_line.qty_received if product_uom_qty == sum_qty_received: status = 'Terproses' elif product_uom_qty > sum_qty_received > 0: status = 'Sebagian Diproses' else: status = 'Menunggu Diproses' purchase_order.procurement_status = status def sale_order_sync(self): if not self.sale_order_id: return purchase_orders = self.search(['&', ('sale_order_id', '=', self.sale_order_id.id), ('id', '!=', self.id)]) products_exception = [] for purchase_order in purchase_orders: for order_line in purchase_order.order_line: products_exception.append(order_line.product_id.id) self.order_line.unlink() for order_line in self.sale_order_id.order_line: if order_line.product_id.id and order_line.product_id.id not in products_exception: values = { 'order_id': self.id, 'product_id': order_line.product_id.id, 'name': order_line.product_id.display_name, 'product_qty': order_line.product_qty, } self.env['purchase.order.line'].sudo().create(values)