diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-02-13 11:05:51 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-02-13 11:05:51 +0700 |
| commit | 3474af21127db27f1b63ddb879e26da232e2e3d0 (patch) | |
| tree | d9d8dbca8bf610edc492f8a06f77aee6a4133711 | |
| parent | 3a53992e940724ccb1fbd72329c2db810b8fc83d (diff) | |
cr get validate purchase price
| -rw-r--r-- | indoteknik_custom/models/sale_order_line.py | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/indoteknik_custom/models/sale_order_line.py b/indoteknik_custom/models/sale_order_line.py index aed95aab..abf10f42 100644 --- a/indoteknik_custom/models/sale_order_line.py +++ b/indoteknik_custom/models/sale_order_line.py @@ -159,7 +159,7 @@ class SaleOrderLine(models.Model): # [('vendor_id', '=', self.product_id.x_manufacture.override_vendor_id.id), # ('product_id', '=', self.product_id.id)], # limit=1, order='count_trx_po desc, count_trx_po_vendor desc') - price, taxes, vendor_id = self._get_purchase_price_by_vendor(self.product_id, self.vendor_id) + price, taxes, vendor_id = self._get_purchase_price_by_vendor(self.product_id, self.vendor_id, manual=True) self.purchase_price = price self.purchase_tax_id = taxes # else: @@ -205,37 +205,46 @@ class SaleOrderLine(models.Model): def _get_purchase_price(self, product_id): purchase_price = self.env['purchase.pricelist'].search( [('product_id', '=', product_id.id), - ('is_winner', '=', True)], + # ('is_winner', '=', True) + ], limit=1) + + vendor_id = purchase_price.brand_id.override_vendor_id + if vendor_id: + return self._get_purchase_price_by_vendor(product_id, vendor_id) + return self._get_valid_purchase_price(purchase_price) - def _get_purchase_price_by_vendor(self, product_id, vendor_id): + def _get_purchase_price_by_vendor(self, product_id, vendor_id, manual=False): purchase_price = self.env['purchase.pricelist'].search( [('product_id', '=', product_id.id), - ('vendor_id', '=', vendor_id.id), - # ('is_winner', '=', True) - ], - limit=1) + ('vendor_id', '=', vendor_id.id)], + limit=1 + ) + + if purchase_price: + return self._get_valid_purchase_price(purchase_price, manual) + + # Return default values when no purchase_price is found + return 0, '', None # Ensure 3 values are always returned - return self._get_valid_purchase_price(purchase_price) - def _get_valid_purchase_price(self, purchase_price): + def _get_valid_purchase_price(self, purchase_price, manual): current_time = datetime.now() delta_time = current_time - timedelta(days=365) # delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') price = 0 taxes = '' - vendor_id = '' + vendor_id = purchase_price.vendor_id.id or '' human_last_update = purchase_price.human_last_update or datetime.min system_last_update = purchase_price.system_last_update or datetime.min if purchase_price.taxes_product_id.type_tax_use == 'purchase': price = purchase_price.product_price taxes = purchase_price.taxes_product_id.id - vendor_id = purchase_price.vendor_id.id - if delta_time > human_last_update: + if delta_time > human_last_update or (not purchase_price.brand_id.override_vendor_id and manual == False): price = 0 taxes = '' vendor_id = '' @@ -244,8 +253,7 @@ class SaleOrderLine(models.Model): if purchase_price.taxes_system_id.type_tax_use == 'purchase': price = purchase_price.system_price taxes = purchase_price.taxes_system_id.id - vendor_id = purchase_price.vendor_id.id - if delta_time > system_last_update: + if delta_time > human_last_update or (not purchase_price.brand_id.override_vendor_id and manual == False): price = 0 taxes = '' vendor_id = '' |
