From 839c47c7160b3435db58237f8f2d317328c312f4 Mon Sep 17 00:00:00 2001 From: Nicolas Wavrant <nicolas.wavrant@nexedi.com> Date: Wed, 8 Sep 2021 03:51:01 +0200 Subject: [PATCH] erp5_base: minimum bound of quantity_step_list should be 0 we don't support negative quantity (it is better represented by an inversion of source and destination), and this allows better support of the smallest slice in ERP5, more especially in SupplyLine_asCellRange, where the title of the cell is computed with the min and max being None or not. --- .../portal_components/document.erp5.SupplyLine.py | 2 +- .../erp5_pdm/Resource_getPriceCalculationOperandDict.py | 2 +- .../portal_skins/erp5_pdm/SupplyCell_updateSliceBasePrice.py | 2 +- .../resource_default_internal_supply_line_price_per_slice.zpt | 2 +- ...ource_default_internal_supply_line_price_quantity_step.zpt | 2 +- .../resource_default_purchase_supply_line_price_per_slice.zpt | 2 +- ...ource_default_purchase_supply_line_price_quantity_step.zpt | 2 +- .../resource_default_sale_supply_line_price_per_slice.zpt | 2 +- .../resource_default_sale_supply_line_price_quantity_step.zpt | 2 +- .../portal_components/test.erp5.testResource.py | 4 ++-- .../trade_zuite/testInternalSupplyLinePricePerSlice.zpt | 2 +- .../trade_zuite/testPurchaseSupplyLinePricePerSlice.zpt | 2 +- .../trade_zuite/testSaleSupplyLinePricePerSlice.zpt | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SupplyLine.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SupplyLine.py index 95093dd1b4..552a4d62b7 100644 --- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SupplyLine.py +++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SupplyLine.py @@ -201,7 +201,7 @@ class SupplyLine(Path, Amount, XMLMatrix): unused_predicate_id_set = self.getQuantityPredicateIdList(price_parameter) if quantity_step_list: quantity_step_list.sort() - quantity_step_list = [None] + quantity_step_list + [None] + quantity_step_list = [0] + quantity_step_list + [None] getTitle = getattr( self, 'SupplyLine_getTitle', diff --git a/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Resource_getPriceCalculationOperandDict.py b/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Resource_getPriceCalculationOperandDict.py index d43a3e7a8a..fe74bb4602 100644 --- a/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Resource_getPriceCalculationOperandDict.py +++ b/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Resource_getPriceCalculationOperandDict.py @@ -29,7 +29,7 @@ if result["slice_base_price"]: slice_min, slice_max = slice_range if slice_max is None: slice_max = quantity + 1 - if slice_min is None: + if slice_min == 0: slice_min = 1 priced_quantity = min(slice_max - 1, quantity) - (slice_min - 1) total_price += priced_quantity * slice_price diff --git a/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/SupplyCell_updateSliceBasePrice.py b/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/SupplyCell_updateSliceBasePrice.py index b20769f4e9..b0424638c1 100644 --- a/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/SupplyCell_updateSliceBasePrice.py +++ b/bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/SupplyCell_updateSliceBasePrice.py @@ -7,7 +7,7 @@ if not quantity_criterion_list: quantity_criterion, = quantity_criterion_list supply_line_value = context.getParentValue() if supply_line_value.isBasePricePerSlice(): - quantity_step_list = [None] + supply_line_value.getQuantityStepList(base_id='path') + [None] + quantity_step_list = [0] + supply_line_value.getQuantityStepList(base_id='path') + [None] try: index = quantity_step_list.index(quantity_criterion.min) except ValueError: diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_per_slice.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_per_slice.zpt index dab1a253ab..b545bca905 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_per_slice.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_per_slice.zpt @@ -39,7 +39,7 @@ Test toggling price per slice updates internal supply cells correctly <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_quantity_step.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_quantity_step.zpt index 7e2a95a503..96c806ac8f 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_quantity_step.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_internal_supply_line_price_quantity_step.zpt @@ -36,7 +36,7 @@ Test quantity steps for price on internal supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 10.0</td> + <td>0 <= Quantity < 10.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_per_slice.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_per_slice.zpt index ecd8021a8b..b90e02e41e 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_per_slice.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_per_slice.zpt @@ -39,7 +39,7 @@ Test toggling price per slice updates purchase supply cells correctly <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_quantity_step.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_quantity_step.zpt index 8da66378b6..e318f00ee6 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_quantity_step.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_purchase_supply_line_price_quantity_step.zpt @@ -36,7 +36,7 @@ Test quantity steps for price on purchase supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 10.0</td> + <td>0 <= Quantity < 10.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_per_slice.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_per_slice.zpt index ad37630ad4..abe3d1510f 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_per_slice.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_per_slice.zpt @@ -39,7 +39,7 @@ Test toggling price per slice updates sale supply cells correctly <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_quantity_step.zpt b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_quantity_step.zpt index 897bdefdfd..ee7413b19c 100644 --- a/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_quantity_step.zpt +++ b/bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/resource_default_sale_supply_line_price_quantity_step.zpt @@ -36,7 +36,7 @@ Test quantity steps for price on sale supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 10.0</td> + <td>0 <= Quantity < 10.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_trade/TestTemplateItem/portal_components/test.erp5.testResource.py b/bt5/erp5_trade/TestTemplateItem/portal_components/test.erp5.testResource.py index 3d5673b70a..fd3cb9b2d6 100644 --- a/bt5/erp5_trade/TestTemplateItem/portal_components/test.erp5.testResource.py +++ b/bt5/erp5_trade/TestTemplateItem/portal_components/test.erp5.testResource.py @@ -1266,10 +1266,10 @@ class TestResource(ERP5TypeTestCase): portal_type=self.sale_supply_cell_portal_type, id='path_0', slice_base_price=10., - slice_quantity_range=(1, 11), + slice_quantity_range=(0, 11), ) cell0.setCriterionPropertyList(('quantity', )) - cell0.setCriterion('quantity', min=1, max=None) + cell0.setCriterion('quantity', min=0, max=None) cell0.setMappedValuePropertyList( ["slice_base_price", "slice_quantity_range", "base_price", "base_unit_price"] ) diff --git a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testInternalSupplyLinePricePerSlice.zpt b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testInternalSupplyLinePricePerSlice.zpt index 2ff7ac919b..24bafd0b01 100644 --- a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testInternalSupplyLinePricePerSlice.zpt +++ b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testInternalSupplyLinePricePerSlice.zpt @@ -101,7 +101,7 @@ Test quantity steps for price on internal supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testPurchaseSupplyLinePricePerSlice.zpt b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testPurchaseSupplyLinePricePerSlice.zpt index e2520d860b..871becba28 100644 --- a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testPurchaseSupplyLinePricePerSlice.zpt +++ b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testPurchaseSupplyLinePricePerSlice.zpt @@ -101,7 +101,7 @@ Test quantity steps for price on purchase supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> diff --git a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testSaleSupplyLinePricePerSlice.zpt b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testSaleSupplyLinePricePerSlice.zpt index cee7bc88cb..a00fec8e6a 100644 --- a/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testSaleSupplyLinePricePerSlice.zpt +++ b/bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testSaleSupplyLinePricePerSlice.zpt @@ -100,7 +100,7 @@ Test quantity steps for price on sale supply line <tr> <td>assertText</td> <td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]/../../../td[1]</td> - <td>Quantity < 11.0</td> + <td>0 <= Quantity < 11.0</td> </tr> <tr> <td>assertText</td> -- 2.30.9