diff --git a/product/ERP5/Document/TradeCondition.py b/product/ERP5/Document/TradeCondition.py index d5fe3c0179e29e206bae663089b136ef74647fc4..3dfae8c05817b1c5ba0cd188c10bbde68742f9bf 100644 --- a/product/ERP5/Document/TradeCondition.py +++ b/product/ERP5/Document/TradeCondition.py @@ -105,7 +105,10 @@ class TradeCondition(Path, Transformation): trade_model_line_composed_list = [] containting_object_list = [] if context is not None: - containting_object_list.append(context) + document = context + if getattr(context, 'getExplanationValue', None) is not None: + document = context.getExplanationValue() + containting_object_list.append(document) containting_object_list.extend(findSpecialiseValueList(self)) for specialise in containting_object_list: diff --git a/product/ERP5/tests/testBPMCore.py b/product/ERP5/tests/testBPMCore.py index 93478f448c23e45674745b03cb505a7334babb9c..dea6a466a69184a8a08fbaac6be45ba6e18b6870 100644 --- a/product/ERP5/tests/testBPMCore.py +++ b/product/ERP5/tests/testBPMCore.py @@ -1096,11 +1096,15 @@ class TestBPMMixin(ERP5TypeTestCase): order_line_discounted_taxed = order_line ) - def createTradeModelLine(self, trade_condition, **kw): - return trade_condition.newContent( + def createTradeModelLine(self, document, **kw): + return document.newContent( portal_type='Trade Model Line', **kw) + def stepOrderCreateTradeModelLine(self, sequence=None, **kw): + order = sequence.get('order') + sequence.edit(trade_model_line = self.createTradeModelLine(order)) + def stepCreateTradeModelLine(self, sequence=None, **kw): trade_condition = sequence.get('trade_condition') sequence.edit(trade_model_line = self.createTradeModelLine(trade_condition)) @@ -1519,6 +1523,48 @@ class TestBPMTestCases(TestBPMMixin): sequence_list.addSequenceString(sequence_string) sequence_list.play(self) + order_specialise_aggregated_amount_common_sequence_string = \ + common_documents_creation + """ + CreateBusinessProcess + CreateBusinessState + ModifyBusinessStateTaxed + CreateBusinessState + ModifyBusinessStateInvoiced + CreateBusinessPath + ModifyBusinessPathTaxing + CreateBusinessPath + ModifyBusinessPathDiscounting + CreateTradeCondition + SpecialiseTradeConditionWithBusinessProcess + CreateTradeModelLine + ModifyTradeModelLineTax + Tic + CreateOrder + OrderCreateTradeModelLine + ModifyTradeModelLineDiscount + SpecialiseOrderTradeCondition + FillOrder + Tic + CreateOrderLine + ModifyOrderLineTaxed + CreateOrderLine + ModifyOrderLineDiscounted + CreateOrderLine + ModifyOrderLineDiscountedTaxed + Tic + """ + aggregated_amount_list_check + + def test_getAggreagtedAmountListOrderSpecialise(self): + """ + Test for case, when discount contributes to tax, and order has mix of contributing lines and order itself defines Trade Model Line + """ + sequence_list = SequenceList() + sequence_string = self\ + .order_specialise_aggregated_amount_common_sequence_string + + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self) + def test_getAggreagtedAmountList_afterUpdateAggregatedAmountList(self): """ Test for case, when discount contributes to tax, and order has mix of contributing lines @@ -1569,6 +1615,34 @@ class TestBPMTestCases(TestBPMMixin): sequence_list.addSequenceString(sequence_string) sequence_list.play(self) + trade_model_rule_simulation_common_order_specialised_string = \ + order_specialise_aggregated_amount_common_sequence_string + """ + Tic + PlanOrder + Tic + """ + aggregated_amount_simulation_check + + def test_TradeModelRuleSimulationExpandOrderSpecialise(self): + """Tests tree of simulations from Trade Model Rule""" + sequence_list = SequenceList() + sequence_string = self \ + .trade_model_rule_simulation_common_order_specialised_string + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self) + + def test_TradeModelRuleSimulationReexpandOrderSpecialise(self): + """Tests tree of simulations from Trade Model Rule with reexpanding""" + sequence_list = SequenceList() + sequence_string = self \ + .trade_model_rule_simulation_common_order_specialised_string+ """ + ModifyAgainOrderLineTaxed + ModifyAgainOrderLineDiscounted + ModifyAgainOrderLineDiscountedTaxed + Tic + """ + self.aggregated_amount_simulation_check + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self) + def test_TradeModelRuleSimulationWithoutBPM(self): """Tests tree of simulations from Trade Model Rule when there is no BPM""" sequence_list = SequenceList()