Correction cron faircot

This commit is contained in:
2026-04-21 14:33:12 +02:00
parent 280cff5fdb
commit 4013f9d74c
3 changed files with 37 additions and 24 deletions

View File

@@ -1209,8 +1209,9 @@ class SaleLine(metaclass=PoolMeta):
unit_factor = Decimal(1) unit_factor = Decimal(1)
if self.linked_unit: if self.linked_unit:
source_unit = getattr(self, 'unit', None) source_unit = getattr(self, 'unit', None)
if not source_unit and self.product: product = getattr(self, 'product', None)
source_unit = self.product.sale_uom if not source_unit and product:
source_unit = product.sale_uom
if not source_unit: if not source_unit:
return factor return factor
Uom = Pool().get('product.uom') Uom = Pool().get('product.uom')

View File

@@ -990,7 +990,6 @@ class ShipmentIn(metaclass=PoolMeta):
sale_line.linked_currency = 1 sale_line.linked_currency = 1
sale_line.linked_unit = Uom.get_by_name(sell_price_unit) sale_line.linked_unit = Uom.get_by_name(sell_price_unit)
sale_line.linked_price = round(sell_price,4) sale_line.linked_price = round(sell_price,4)
sale_line.unit_price = sale_line.get_price_linked_currency()
else: else:
sale.currency = Currency.get_by_name(sell_price_currency) sale.currency = Currency.get_by_name(sell_price_currency)
sale_line.unit_price = round(sell_price,4) sale_line.unit_price = round(sell_price,4)
@@ -1003,6 +1002,8 @@ class ShipmentIn(metaclass=PoolMeta):
sale_line.product = Product.get_by_name('BRAZIL COTTON') sale_line.product = Product.get_by_name('BRAZIL COTTON')
logger.info("PRODUCT:%s",sale_line.product) logger.info("PRODUCT:%s",sale_line.product)
sale_line.unit = Uom.get_by_name(lot_unit) sale_line.unit = Uom.get_by_name(lot_unit)
if sell_price_currency == 'USC':
sale_line.unit_price = sale_line.get_price_linked_currency()
sale_line.price_type = 'priced' sale_line.price_type = 'priced'
sale_line.created_by_code = False sale_line.created_by_code = False
sale_line.note = dec_key sale_line.note = dec_key

View File

@@ -258,6 +258,17 @@ class PurchaseTradeTestCase(ModuleTestCase):
line.compute_unit_price(), line.compute_unit_price(),
Decimal('123.45')) Decimal('123.45'))
def test_sale_line_linked_unit_factor_keeps_currency_factor_without_product(self):
'linked price conversion does not crash when automation builds a sale line before setting product'
SaleLine = Pool().get('sale.line')
line = SaleLine()
line.enable_linked_currency = True
line.linked_currency = Mock(factor=Decimal('2'))
line.linked_unit = Mock()
line.unit = None
self.assertEqual(line._get_linked_unit_factor(), Decimal('2'))
def test_purchase_line_default_pricing_rule_comes_from_configuration(self): def test_purchase_line_default_pricing_rule_comes_from_configuration(self):
'purchase line pricing_rule defaults to the purchase_trade singleton value' 'purchase line pricing_rule defaults to the purchase_trade singleton value'
PurchaseLine = Pool().get('purchase.line') PurchaseLine = Pool().get('purchase.line')