Lot invoicing + Fee padding

This commit is contained in:
2026-06-23 15:08:49 +02:00
parent 83b879d200
commit 2998d8d570
2 changed files with 41 additions and 1 deletions

View File

@@ -3369,6 +3369,39 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(fee_line.fee_quantity, Decimal('7'))
self.assertEqual(fee_line.fee_amount, Decimal('14.00'))
def test_lot_invoice_final_existing_fee_display_ignores_padding(self):
'final DN/CN fee display ignores padding for the current value'
start = lot_module.LotInvoiceStart()
unit = SimpleNamespace(id=1)
sale_line = SimpleNamespace(unit=unit, unit_price=Decimal('100'))
lot = SimpleNamespace(id=10, sale_line=sale_line)
fee = SimpleNamespace(
add_padding=True,
state='invoiced',
mode='pprice',
price=Decimal('2'),
quantity=Decimal('5'),
sale_line=sale_line,
_get_effective_fee_lots=Mock(return_value=[lot]),
_get_effective_fee_lots_quantity=Mock(return_value=Decimal('5')),
_convert_padding_quantity=Mock(
side_effect=lambda quantity, unit: Decimal(str(quantity))),
get_quantity=Mock(return_value=Decimal('5')))
fee_line = SimpleNamespace(
fee=fee,
fee_quantity=Decimal('5'),
fee_amount=Decimal('10'))
start.type = 'sale'
start.action = 'final'
start.sale_padding = Decimal('2')
start.lot_s = [SimpleNamespace(lot=lot)]
start.fee_sale = [fee_line]
start.on_change_sale_padding()
self.assertEqual(fee_line.fee_quantity, Decimal('5'))
self.assertEqual(fee_line.fee_amount, Decimal('10.00'))
def test_fee_get_non_cog_returns_zero_without_move_lines(self):
'fee non-cog amount is zero before any accounting move line exists'
fee = fee_module.Fee()