46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
Index: product.py
|
|
===================================================================
|
|
|
|
--- .a/trytond/trytond/modules/purchase/product.py
|
|
+++ .b/trytond/trytond/modules/purchase/product.py
|
|
@@ -125,12 +125,14 @@
|
|
supplier_id = Transaction().context['supplier']
|
|
for product_supplier in product.product_suppliers:
|
|
if product_supplier.party.id == supplier_id:
|
|
- for price in product_supplier.prices:
|
|
- if Uom.compute_qty(product.purchase_uom,
|
|
- price.quantity, uom) <= quantity:
|
|
- res[product.id] = price.unit_price
|
|
- default_uom = product.purchase_uom
|
|
- default_currency = product_supplier.currency
|
|
+ price = product.get_supplier_price(product_supplier,
|
|
+ quantity, uom)
|
|
+ if price is not None:
|
|
+ res[product.id] = price
|
|
+ default_uom = product.purchase_uom
|
|
+ default_currency = product_supplier.currency
|
|
+ else:
|
|
+ price = product.cost_price
|
|
break
|
|
res[product.id] = Uom.compute_price(default_uom, res[product.id],
|
|
uom)
|
|
@@ -141,6 +143,17 @@
|
|
res[product.id], currency, round=False)
|
|
return res
|
|
|
|
+ def get_supplier_price(self, product_supplier, quantity, to_uom):
|
|
+ pool = Pool()
|
|
+ Uom = pool.get('product.uom')
|
|
+
|
|
+ res = None
|
|
+ for price in product_supplier.prices:
|
|
+ if Uom.compute_qty(self.purchase_uom,
|
|
+ price.quantity, to_uom) <= quantity:
|
|
+ res = price.unit_price
|
|
+ return res
|
|
+
|
|
|
|
class ProductSupplier(ModelSQL, ModelView):
|
|
'Product Supplier'
|
|
|