diff options
Diffstat (limited to 'indoteknik_custom/models/purchase_order_line.py')
| -rwxr-xr-x | indoteknik_custom/models/purchase_order_line.py | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 807ee628..c7da0e24 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -78,14 +78,12 @@ class PurchaseOrderLine(models.Model): def _onchange_product_custom(self): self._compute_qty_stock() - # Override method from addons/purchase/models/purchase.py - @api.onchange('product_qty', 'product_uom') + @api.onchange('product_id','product_qty', 'product_uom') def _onchange_quantity(self): res = super(PurchaseOrderLine, self)._onchange_quantity() - # Custom script purchase_pricelist = self.env['purchase.pricelist'].search([ ('product_id', '=', self.product_id.id), - ('vendor_id', '=', self.partner_id.id) + ('vendor_id', '=', self.partner_id.id), ], limit=1) price_unit = purchase_pricelist.product_price @@ -96,8 +94,33 @@ class PurchaseOrderLine(models.Model): ], limit=1) price_unit = product_supplierinfo.price + price_unit, taxes = self._get_valid_purchase_price(purchase_pricelist) + self.price_unit = price_unit + if purchase_pricelist.taxes_product_id or purchase_pricelist.taxes_system_id: + self.taxes_id = taxes + return res + + def _get_valid_purchase_price(self, purchase_price): + p_price = 0 + taxes = False + + if purchase_price.system_price > 0 and purchase_price.product_price > 0: + if purchase_price.human_last_update > purchase_price.system_last_update: + p_price = purchase_price.product_price + taxes = purchase_price.taxes_product_id + else: + p_price = purchase_price.system_price + taxes = purchase_price.taxes_system_id + elif purchase_price.system_price > 0 and purchase_price.product_price == 0: + p_price = purchase_price.system_price + taxes = purchase_price.taxes_system_id + elif purchase_price.system_price == 0 and purchase_price.product_price > 0: + p_price = purchase_price.product_price + taxes = purchase_price.taxes_product_id + + return p_price, taxes def compute_item_margin(self): sum_so_margin = sum_sales_price = sum_margin = 0 |
