diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py
index 6c8f777..612008a 100644
--- a/modules/purchase_trade/tests/test_module.py
+++ b/modules/purchase_trade/tests/test_module.py
@@ -1208,6 +1208,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
lot = Mock(id=5, sale_line=None, lot_type='virtual')
lot.get_current_quantity_converted.return_value = Decimal('10')
fee = Mock(
+ id=11,
product=product,
supplier=supplier,
type='budgeted',
@@ -1241,6 +1242,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
values = Valuation.create_pnl_fee_from_line(line)
self.assertEqual(values[0]['amount'], Decimal('0'))
+ self.assertEqual(values[0]['fee'], fee.id)
def test_fee_quantity_sync_uses_physical_lots_when_present(self):
'fee quantity sync ignores virtual lot once physical lots exist'
@@ -1762,6 +1764,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
sale_lot.get_current_quantity_converted.return_value = Decimal('220')
sale_line.lots = [sale_lot]
fee = Mock(
+ id=12,
product=Mock(id=6, name='Broker commission'),
supplier=Mock(id=7),
type='budgeted',
@@ -1802,6 +1805,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
values = Valuation.create_pnl_fee_from_sale_line(sale_line)
self.assertEqual(len(values), 2)
+ self.assertEqual(values[0]['fee'], fee.id)
+ self.assertEqual(values[1]['fee'], fee.id)
self.assertEqual(values[0]['shipment_in'], shipment.id)
self.assertEqual(values[0]['quantity'], Decimal('88.00000'))
self.assertEqual(values[0]['amount'], Decimal('-880.00'))
diff --git a/modules/purchase_trade/valuation.py b/modules/purchase_trade/valuation.py
index cee059a..e6e91b8 100644
--- a/modules/purchase_trade/valuation.py
+++ b/modules/purchase_trade/valuation.py
@@ -64,6 +64,7 @@ class ValuationBase(ModelSQL):
strategy = fields.Many2One('mtm.strategy',"Strategy")
lot = fields.Many2One('lot.lot',"Lot")
shipment_in = fields.Many2One('stock.shipment.in', "Shipment In")
+ fee = fields.Many2One('fee.fee', "Fee")
base_amount = fields.Numeric("Base Amount",digits=(16,2))
rate = fields.Numeric("Rate", digits=(16,6))
@@ -337,6 +338,7 @@ class ValuationBase(ModelSQL):
value.get('state'),
value.get('strategy'),
value.get('shipment_in'),
+ value.get('fee'),
value.get('mtm_curve'),
)
@@ -363,6 +365,7 @@ class ValuationBase(ModelSQL):
('state', '=', value.get('state')),
('strategy', '=', value.get('strategy')),
('shipment_in', '=', value.get('shipment_in')),
+ ('fee', '=', value.get('fee')),
('mtm_curve', '=', value.get('mtm_curve')),
]
if value.get('sale_line'):
@@ -1230,6 +1233,7 @@ class ValuationBase(ModelSQL):
'purchase': line.purchase.id,
'line': line.id,
'shipment_in': segment.get('shipment_in'),
+ 'fee': sf.id,
'type': (
'shipment fee' if sf.shipment_in
else 'sale fee' if sf.sale_line
@@ -1291,6 +1295,7 @@ class ValuationBase(ModelSQL):
'sale': sale_line.sale.id,
'sale_line': sale_line.id,
'shipment_in': segment.get('shipment_in'),
+ 'fee': sf.id,
'type': (
'shipment fee' if sf.shipment_in
else 'sale fee'
@@ -1520,6 +1525,7 @@ class ValuationDyn(ModelSQL,ModelView):
r_strategy = fields.Many2One('mtm.strategy',"Strategy")
r_lot = fields.Many2One('lot.lot',"Lot")
r_shipment_in = fields.Many2One('stock.shipment.in', "Shipment In")
+ r_fee = fields.Many2One('fee.fee', "Fee")
@classmethod
def table_query(cls):
@@ -1558,6 +1564,7 @@ class ValuationDyn(ModelSQL,ModelView):
Max(val.strategy).as_('r_strategy'),
Max(val.lot).as_('r_lot'),
Max(val.shipment_in).as_('r_shipment_in'),
+ Max(val.fee).as_('r_fee'),
where=wh,
group_by=[val.type, val.counterparty, val.state, val.mtm_curve])
@@ -1615,6 +1622,7 @@ class ValuationReport(ValuationBase, ModelView):
val.strategy.as_('strategy'),
val.lot.as_('lot'),
val.shipment_in.as_('shipment_in'),
+ val.fee.as_('fee'),
where=wh)
return query
diff --git a/modules/purchase_trade/view/valuation_list.xml b/modules/purchase_trade/view/valuation_list.xml
index 5a05b4d..d3baf8f 100644
--- a/modules/purchase_trade/view/valuation_list.xml
+++ b/modules/purchase_trade/view/valuation_list.xml
@@ -3,6 +3,7 @@
+
diff --git a/modules/purchase_trade/view/valuation_tree_sequence3.xml b/modules/purchase_trade/view/valuation_tree_sequence3.xml
index 65aaf95..3d6c496 100755
--- a/modules/purchase_trade/view/valuation_tree_sequence3.xml
+++ b/modules/purchase_trade/view/valuation_tree_sequence3.xml
@@ -4,6 +4,7 @@ this repository contains the full copyright notices and license terms. -->
+
diff --git a/modules/purchase_trade/view/valuation_tree_sequence4.xml b/modules/purchase_trade/view/valuation_tree_sequence4.xml
index 0070c03..6febbdb 100755
--- a/modules/purchase_trade/view/valuation_tree_sequence4.xml
+++ b/modules/purchase_trade/view/valuation_tree_sequence4.xml
@@ -4,6 +4,7 @@ this repository contains the full copyright notices and license terms. -->
+