summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-02-13 11:05:51 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-02-13 11:05:51 +0700
commit3474af21127db27f1b63ddb879e26da232e2e3d0 (patch)
treed9d8dbca8bf610edc492f8a06f77aee6a4133711
parent3a53992e940724ccb1fbd72329c2db810b8fc83d (diff)
cr get validate purchase price
-rw-r--r--indoteknik_custom/models/sale_order_line.py36
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 = ''