From 14b9c9168f5e1b2580806aaa96966b5c46805c21 Mon Sep 17 00:00:00 2001 From: yanyuan <yuan.yan@capgemini.com> Date: 星期四, 07 九月 2023 14:55:05 +0800 Subject: [PATCH] Combine code of MPsync --- _Main/BL/Type_MPSync/Method_MappingOperationData.qbl | 102 ++ _Main/UI/MacroPlanner/Component_LanesDataTestDialog/Component_Toolbar458.def | 70 + _Main/BL/Type_MPSync/Method_ImportDBDataCustom.qbl | 91 + _Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Method_OpenDialog.def | 17 _Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnCancel_OnClick.def | 11 _Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnOk_OnClick.def | 12 _Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnCancel_OnClick.def | 11 _Main/BL/Type_MPSync/Method_MappingLaneData.qbl | 16 _Main/BL/Type_MPSync/Method_MappingOperationBOMData.qbl | 181 +++ _Main/BL/Type_IOCurrencyRate_MP/StaticMethod_DeleteIfExist.qbl | 18 _Main/UI/MacroPlanner/Component_StockpointDataTestDialog/_ROOT_Component_StockpointDataTestDialog.def | 55 + _Main/BL/Type_MPSync/Method_MappingCurrencyData#670.qbl | 23 _Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnCancel_OnClick.def | 11 _Main/BL/Type_MPSync/Method_MappingUnitData.qbl | 52 + _Main/BL/Relations/Relation_MappingProduct_MPSync_MPSync_MappingProduct.qbl | 23 _Main/BL/Type_IOLane/StaticMethod_DeleteIfExist.qbl | 16 _Main/BL/Type_MPSync/Method_MappingForecastData.qbl | 40 _Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew#821.qbl | 17 _Main/BL/Type_MPSync/Method_MappingActualPISPIPData.qbl | 30 _Main/BL/Type_IOLane/_ROOT_Type_IOLane.qbl | 6 _var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.xml | 11 _var/_Main/Data/.keep | 0 _Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/_ROOT_Component_CurrencyRateDataTestDialog.def | 54 + _Main/UI/MacroPlanner/Component_LanesDataTestDialog/_ROOT_Component_LanesDataTestDialog.def | 55 + _Main/BL/Type_MPSync/Method_MappingCurrencyData.qbl | 17 _Main/BL/Type_MPSync/StaticMethod_ApiResponesCheck.qbl | 54 + _Main/BL/Relations/Relation_MappingExternalSupply_MPSync_MPSync_MappingExternalSupply.qbl | 23 _Main/BL/Relations/Relation_MappingBaseConversionFactor_MPSync_MPSync_MappingBaseConversionFact.qbl | 23 _Main/BL/Relations/Relation_MappingSalesSegment_MPSync_MPSync_MappingSalesSegment.qbl | 23 _Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/_ROOT_Component_CurrencyDataTestDialog.def | 55 + _Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnOk_OnClick.def | 12 _Main/BL/Type_MPSync/Method_MappingCurrencyRateData.qbl | 17 _Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/_ROOT_Component_LanesLegsDataTestDialog.def | 54 + _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrency_OnClick.def | 13 _Main/BL/Type_IOUnit/StaticMethod_FindById.qbl | 14 _Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Method_OpenDialog.def | 17 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesLegsData_OnClick.def | 13 _Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnCancel_OnClick.def | 11 _Main/BL/Relations/Relation_MappingCustomerOrder_MPSync_MPSync_MappingCustomerOrder.qbl | 23 _Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Component_Toolbar868.def | 70 + _Main/BL/Type_MPSync/Method_GetProductTypeByProductId.qbl | 17 _var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Change_1086.kbc | 76 + _Main/BL/Type_IOUnitOfMeasure_MP/StaticMethod_DeleteIfExist.qbl | 17 _Main/BL/Type_MPSync/Method_MappingInventoryValueAndCostData.qbl | 19 _Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Method_OpenDialog.def | 17 _Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnOk_OnClick.def | 12 _Main/BL/Type_IOBaseConversionFactor/_ROOT_Type_IOBaseConversionFactor.qbl | 6 _Main/BL/Type_IOOperation/_ROOT_Type_IOOperation.qbl | 6 _Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Method_OpenDialog.def | 17 _Main/BL/Type_MPSync/Method_MappingStockingPointData.qbl | 16 _Main/BL/Type_IOCurrency_MP/_ROOT_Type_IOCurrency_MP.qbl | 6 _Main/BL/Type_MPSync/Method_MappingLaneLegData.qbl | 16 _Main/BL/Relations/Relation_MappingProductInLane_MPSync_MPSync_MappingProductInLane.qbl | 23 _Main/BL/Type_MPSync/Method_MappingStockingPointData#321.qbl | 29 _Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Component_Toolbar484.def | 70 + _Main/BL/Type_MPSync/Method_MappingOperationCostData.qbl | 55 + _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesData_OnClick.def | 13 _Main/BL/Type_IOOperation/StaticMethod_CreateIfNotExist.qbl | 18 _Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnOk_OnClick.def | 12 _Main/BL/Type_MPSync/Method_MappingProductData.qbl | 47 + _Main/BL/Relations/Relation_MappingInventoryValueAndCost_MPSync_MPSync_MappingInventoryValueAnd.qbl | 23 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestStockpointData_OnClick.def | 13 _Main/BL/Type_MPSync/StaticMethod_ApiBuildPostRequestBody.qbl | 25 _Main/BL/Relations/Relation_MappingActualPISPIP_MPSync_MPSync_MappingActualPISPIP.qbl | 23 _Main/BL/Relations/Relation_MappingOperationCost_MPSync_MPSync_MappingOperationCost.qbl | 23 _Main/BL/Type_MPSync/Method_MappingExternalSupplyData.qbl | 34 _Main/BL/Type_MPSync/Method_MappingLaneData#474.qbl | 23 _Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew#331.qbl | 21 _Main/BL/Type_IOUnit/_ROOT_Type_IOUnit.qbl | 6 _Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl | 6 _Main/BL/Type_MPSync/Method_MappingCustomerOrderData.qbl | 44 _Main/UI/MacroPlanner/Component_LanesDataTestDialog/Method_OpenDialog.def | 17 _Main/BL/Type_IOProduct_MP/StaticMethod_CreateIfNotExist.qbl | 23 _Main/BL/Type_IOBaseConversionFactor/StaticMethod_DeleteIfExist.qbl | 19 _Main/BL/Type_MPSync/Method_MappingSalesSegmentData.qbl | 23 _Main/BL/Type_MPSync/Method_MappingCurencyRatesData.qbl | 28 _Main/BL/Type_IOUnit/StaticMethod_CreateIfNotExistByTree.qbl | 32 _Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnOk_OnClick.def | 12 _Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew.qbl | 17 _Main/BL/Type_IORoutingStep/_ROOT_Type_IORoutingStep.qbl | 6 _Main/BL/Type_IOProduct_MP/StaticMethod_FindById.qbl | 14 _var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.elm | 10 _Main/BL/Relations/Relation_MappingUnit_MPSync_MPSync_MappingUnit.qbl | 23 _Main/BL/Relations/Relation_MappingBOM_MPSync_MPSync_MappingBOM.qbl | 23 _Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnCancel_OnClick.def | 11 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrencyData_OnClick.def | 13 _Main/BL/Type_MPSync/Method_MappingProductInLaneData.qbl | 15 _Main/BL/Type_MPSync/Method_MappingUnitOfMeasureData.qbl | 14 _Main/BL/Relations/Relation_MappingUnitOfMeasure_MPSync_MPSync_MappingUnitOfMeasure.qbl | 23 _Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Component_Toolbar886.def | 70 + _Main/BL/Relations/Relation_MappingForecast_MPSync_MPSync_MappingForecast.qbl | 23 _Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Component_Toolbar309.def | 70 + _Main/BL/Type_IOProduct_MP/_ROOT_Type_IOProduct_MP.qbl | 6 _Main/BL/Type_MPSync/Method_MappingBaseConversionFactorData.qbl | 19 _Main/BL/Type_IOCurrency_MP/StaticMethod_DeleteIfExist.qbl | 16 _Main/BL/Type_IORoutingStep/StaticMethod_CreateIfNotExist.qbl | 22 _Main/BL/Type_IOCurrencyRate_MP/_ROOT_Type_IOCurrencyRate_MP.qbl | 6 _Main/BL/Type_MPSync/Method_MappingLaneLegData#257.qbl | 30 _Main/BL/Relations/Relation_MappingOperation_MPSync_MPSync_MappingOperation.qbl | 23 _Main/BL/Type_MPSync/Method_MappingSalesLevelData.qbl | 18 100 files changed, 2,720 insertions(+), 0 deletions(-) diff --git a/_Main/BL/Relations/Relation_MappingActualPISPIP_MPSync_MPSync_MappingActualPISPIP.qbl b/_Main/BL/Relations/Relation_MappingActualPISPIP_MPSync_MPSync_MappingActualPISPIP.qbl new file mode 100644 index 0000000..0f7a1ec --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingActualPISPIP_MPSync_MPSync_MappingActualPISPIP.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingActualPISPIP_MPSync_MPSync_MappingActualPISPIP +{ + #keys: '1[414384.0.737300004]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300006][414384.0.737300005][414384.0.737300007]' + Cardinality: '0to1' + ObjectDefinition: MappingActualPISPIP + OwningSide: 'Reference' + } + RelationSide.RightSide MappingActualPISPIP + { + #keys: '3[414384.0.737300009][414384.0.737300008][414384.0.737300010]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingBOM_MPSync_MPSync_MappingBOM.qbl b/_Main/BL/Relations/Relation_MappingBOM_MPSync_MPSync_MappingBOM.qbl new file mode 100644 index 0000000..0af0e9d --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingBOM_MPSync_MPSync_MappingBOM.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingBOM_MPSync_MPSync_MappingBOM +{ + #keys: '1[414384.0.737300037]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300039][414384.0.737300038][414384.0.737300040]' + Cardinality: '0to1' + ObjectDefinition: MappingBOM + OwningSide: 'Reference' + } + RelationSide.RightSide MappingBOM + { + #keys: '3[414384.0.737300042][414384.0.737300041][414384.0.737300043]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingBaseConversionFactor_MPSync_MPSync_MappingBaseConversionFact.qbl b/_Main/BL/Relations/Relation_MappingBaseConversionFactor_MPSync_MPSync_MappingBaseConversionFact.qbl new file mode 100644 index 0000000..d038edc --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingBaseConversionFactor_MPSync_MPSync_MappingBaseConversionFact.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingBaseConversionFactor_MPSync_MPSync_MappingBaseConversionFactor +{ + #keys: '1[414384.0.737300021]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300023][414384.0.737300022][414384.0.737300024]' + Cardinality: '0to1' + ObjectDefinition: MappingBaseConversionFactor + OwningSide: 'Reference' + } + RelationSide.RightSide MappingBaseConversionFactor + { + #keys: '3[414384.0.737300026][414384.0.737300025][414384.0.737300027]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingCustomerOrder_MPSync_MPSync_MappingCustomerOrder.qbl b/_Main/BL/Relations/Relation_MappingCustomerOrder_MPSync_MPSync_MappingCustomerOrder.qbl new file mode 100644 index 0000000..0b61f30 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingCustomerOrder_MPSync_MPSync_MappingCustomerOrder.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingCustomerOrder_MPSync_MPSync_MappingCustomerOrder +{ + #keys: '1[414384.0.737300053]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300055][414384.0.737300054][414384.0.737300056]' + Cardinality: '0to1' + ObjectDefinition: MappingCustomerOrder + OwningSide: 'Reference' + } + RelationSide.RightSide MappingCustomerOrder + { + #keys: '3[414384.0.737300058][414384.0.737300057][414384.0.737300059]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingExternalSupply_MPSync_MPSync_MappingExternalSupply.qbl b/_Main/BL/Relations/Relation_MappingExternalSupply_MPSync_MPSync_MappingExternalSupply.qbl new file mode 100644 index 0000000..a4fbde1 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingExternalSupply_MPSync_MPSync_MappingExternalSupply.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingExternalSupply_MPSync_MPSync_MappingExternalSupply +{ + #keys: '1[414384.0.737300069]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300071][414384.0.737300070][414384.0.737300072]' + Cardinality: '0to1' + ObjectDefinition: MappingExternalSupply + OwningSide: 'Reference' + } + RelationSide.RightSide MappingExternalSupply + { + #keys: '3[414384.0.737300074][414384.0.737300073][414384.0.737300075]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingForecast_MPSync_MPSync_MappingForecast.qbl b/_Main/BL/Relations/Relation_MappingForecast_MPSync_MPSync_MappingForecast.qbl new file mode 100644 index 0000000..d90edf7 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingForecast_MPSync_MPSync_MappingForecast.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingForecast_MPSync_MPSync_MappingForecast +{ + #keys: '1[414384.0.737300085]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300087][414384.0.737300086][414384.0.737300088]' + Cardinality: '0to1' + ObjectDefinition: MappingForecast + OwningSide: 'Reference' + } + RelationSide.RightSide MappingForecast + { + #keys: '3[414384.0.737300090][414384.0.737300089][414384.0.737300091]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingInventoryValueAndCost_MPSync_MPSync_MappingInventoryValueAnd.qbl b/_Main/BL/Relations/Relation_MappingInventoryValueAndCost_MPSync_MPSync_MappingInventoryValueAnd.qbl new file mode 100644 index 0000000..9f91cf9 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingInventoryValueAndCost_MPSync_MPSync_MappingInventoryValueAnd.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingInventoryValueAndCost_MPSync_MPSync_MappingInventoryValueAndCost +{ + #keys: '1[414384.0.737300101]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300103][414384.0.737300102][414384.0.737300104]' + Cardinality: '0to1' + ObjectDefinition: MappingInventoryValueAndCost + OwningSide: 'Reference' + } + RelationSide.RightSide MappingInventoryValueAndCost + { + #keys: '3[414384.0.737300106][414384.0.737300105][414384.0.737300107]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingOperationCost_MPSync_MPSync_MappingOperationCost.qbl b/_Main/BL/Relations/Relation_MappingOperationCost_MPSync_MPSync_MappingOperationCost.qbl new file mode 100644 index 0000000..67b9f81 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingOperationCost_MPSync_MPSync_MappingOperationCost.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingOperationCost_MPSync_MPSync_MappingOperationCost +{ + #keys: '1[414384.0.736080617]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080619][414384.0.736080618][414384.0.736080620]' + Cardinality: '0to1' + ObjectDefinition: MappingOperationCost + OwningSide: 'Reference' + } + RelationSide.RightSide MappingOperationCost + { + #keys: '3[414384.0.736080622][414384.0.736080621][414384.0.736080623]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingOperation_MPSync_MPSync_MappingOperation.qbl b/_Main/BL/Relations/Relation_MappingOperation_MPSync_MPSync_MappingOperation.qbl new file mode 100644 index 0000000..bb6553e --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingOperation_MPSync_MPSync_MappingOperation.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingOperation_MPSync_MPSync_MappingOperation +{ + #keys: '1[414384.0.737300117]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.737300119][414384.0.737300118][414384.0.737300120]' + Cardinality: '0to1' + ObjectDefinition: MappingOperation + OwningSide: 'Reference' + } + RelationSide.RightSide MappingOperation + { + #keys: '3[414384.0.737300122][414384.0.737300121][414384.0.737300123]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingProductInLane_MPSync_MPSync_MappingProductInLane.qbl b/_Main/BL/Relations/Relation_MappingProductInLane_MPSync_MPSync_MappingProductInLane.qbl new file mode 100644 index 0000000..a8def35 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingProductInLane_MPSync_MPSync_MappingProductInLane.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingProductInLane_MPSync_MPSync_MappingProductInLane +{ + #keys: '1[414384.0.736080646]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080648][414384.0.736080647][414384.0.736080649]' + Cardinality: '0to1' + ObjectDefinition: MappingProductInLane + OwningSide: 'Reference' + } + RelationSide.RightSide MappingProductInLane + { + #keys: '3[414384.0.736080651][414384.0.736080650][414384.0.736080652]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingProduct_MPSync_MPSync_MappingProduct.qbl b/_Main/BL/Relations/Relation_MappingProduct_MPSync_MPSync_MappingProduct.qbl new file mode 100644 index 0000000..64c3aef --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingProduct_MPSync_MPSync_MappingProduct.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingProduct_MPSync_MPSync_MappingProduct +{ + #keys: '1[414384.0.736080633]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080635][414384.0.736080634][414384.0.736080636]' + Cardinality: '0to1' + ObjectDefinition: MappingProduct + OwningSide: 'Reference' + } + RelationSide.RightSide MappingProduct + { + #keys: '3[414384.0.736080638][414384.0.736080637][414384.0.736080639]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingSalesSegment_MPSync_MPSync_MappingSalesSegment.qbl b/_Main/BL/Relations/Relation_MappingSalesSegment_MPSync_MPSync_MappingSalesSegment.qbl new file mode 100644 index 0000000..7af3e26 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingSalesSegment_MPSync_MPSync_MappingSalesSegment.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingSalesSegment_MPSync_MPSync_MappingSalesSegment +{ + #keys: '1[414384.0.736080662]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080664][414384.0.736080663][414384.0.736080665]' + Cardinality: '0to1' + ObjectDefinition: MappingSalesSegment + OwningSide: 'Reference' + } + RelationSide.RightSide MappingSalesSegment + { + #keys: '3[414384.0.736080667][414384.0.736080666][414384.0.736080668]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingUnitOfMeasure_MPSync_MPSync_MappingUnitOfMeasure.qbl b/_Main/BL/Relations/Relation_MappingUnitOfMeasure_MPSync_MPSync_MappingUnitOfMeasure.qbl new file mode 100644 index 0000000..f1c43b5 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingUnitOfMeasure_MPSync_MPSync_MappingUnitOfMeasure.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingUnitOfMeasure_MPSync_MPSync_MappingUnitOfMeasure +{ + #keys: '1[414384.0.736080697]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080699][414384.0.736080698][414384.0.736080700]' + Cardinality: '0to1' + ObjectDefinition: MappingUnitOfMeasure + OwningSide: 'Reference' + } + RelationSide.RightSide MappingUnitOfMeasure + { + #keys: '3[414384.0.736080702][414384.0.736080701][414384.0.736080703]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_MappingUnit_MPSync_MPSync_MappingUnit.qbl b/_Main/BL/Relations/Relation_MappingUnit_MPSync_MPSync_MappingUnit.qbl new file mode 100644 index 0000000..96a13c9 --- /dev/null +++ b/_Main/BL/Relations/Relation_MappingUnit_MPSync_MPSync_MappingUnit.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation MappingUnit_MPSync_MPSync_MappingUnit +{ + #keys: '1[414384.0.736080678]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MPSync + { + #keys: '3[414384.0.736080680][414384.0.736080679][414384.0.736080681]' + Cardinality: '0to1' + ObjectDefinition: MappingUnit + OwningSide: 'Reference' + } + RelationSide.RightSide MappingUnit + { + #keys: '3[414384.0.736080683][414384.0.736080682][414384.0.736080684]' + Cardinality: '1toN' + ObjectDefinition: MPSync + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Type_IOBaseConversionFactor/StaticMethod_DeleteIfExist.qbl b/_Main/BL/Type_IOBaseConversionFactor/StaticMethod_DeleteIfExist.qbl new file mode 100644 index 0000000..9802666 --- /dev/null +++ b/_Main/BL/Type_IOBaseConversionFactor/StaticMethod_DeleteIfExist.qbl @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DeleteIfExist ( + MPSync mpSync, + String from, + String to, + String productId +) +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + toDel := select( mpSync, IOBaseConversionFactor, item, + item.SourceUnitOfMeasureName() = from and item.TargetUnitOfMeasureName() = to and item.ProductID() = productId ); + if( not isnull( toDel ) ) { + toDel.Delete(); + } + *] +} diff --git a/_Main/BL/Type_IOBaseConversionFactor/_ROOT_Type_IOBaseConversionFactor.qbl b/_Main/BL/Type_IOBaseConversionFactor/_ROOT_Type_IOBaseConversionFactor.qbl new file mode 100644 index 0000000..6636e3d --- /dev/null +++ b/_Main/BL/Type_IOBaseConversionFactor/_ROOT_Type_IOBaseConversionFactor.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOBaseConversionFactor #extension +{ +} diff --git a/_Main/BL/Type_IOCurrencyRate_MP/StaticMethod_DeleteIfExist.qbl b/_Main/BL/Type_IOCurrencyRate_MP/StaticMethod_DeleteIfExist.qbl new file mode 100644 index 0000000..474e3f5 --- /dev/null +++ b/_Main/BL/Type_IOCurrencyRate_MP/StaticMethod_DeleteIfExist.qbl @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DeleteIfExist ( + MPSync mpSync, + String currencyId, + Date start +) +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + toDel := select( mpSync, IOCurrencyRate_MP, item, + item.CurrencyID() = currencyId and item.Start() = start ); + if( not isnull( toDel ) ) { + toDel.Delete(); + } + *] +} diff --git a/_Main/BL/Type_IOCurrencyRate_MP/_ROOT_Type_IOCurrencyRate_MP.qbl b/_Main/BL/Type_IOCurrencyRate_MP/_ROOT_Type_IOCurrencyRate_MP.qbl new file mode 100644 index 0000000..21d526b --- /dev/null +++ b/_Main/BL/Type_IOCurrencyRate_MP/_ROOT_Type_IOCurrencyRate_MP.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOCurrencyRate_MP #extension +{ +} diff --git a/_Main/BL/Type_IOCurrency_MP/StaticMethod_DeleteIfExist.qbl b/_Main/BL/Type_IOCurrency_MP/StaticMethod_DeleteIfExist.qbl new file mode 100644 index 0000000..b476627 --- /dev/null +++ b/_Main/BL/Type_IOCurrency_MP/StaticMethod_DeleteIfExist.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DeleteIfExist ( + MPSync mpSync, + String id +) +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + toDel := select( mpSync, IOCurrency_MP, item, item.ID() = id ); + if( not isnull( toDel ) ) { + toDel.Delete(); + } + *] +} diff --git a/_Main/BL/Type_IOCurrency_MP/_ROOT_Type_IOCurrency_MP.qbl b/_Main/BL/Type_IOCurrency_MP/_ROOT_Type_IOCurrency_MP.qbl new file mode 100644 index 0000000..36fb030 --- /dev/null +++ b/_Main/BL/Type_IOCurrency_MP/_ROOT_Type_IOCurrency_MP.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOCurrency_MP #extension +{ +} diff --git a/_Main/BL/Type_IOLane/StaticMethod_DeleteIfExist.qbl b/_Main/BL/Type_IOLane/StaticMethod_DeleteIfExist.qbl new file mode 100644 index 0000000..cfd3b35 --- /dev/null +++ b/_Main/BL/Type_IOLane/StaticMethod_DeleteIfExist.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DeleteIfExist ( + MPSync mpSync, + String id +) +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + toDel := select( mpSync, IOLane, item, item.ID() = id ); + if( not isnull( toDel ) ) { + toDel.Delete(); + } + *] +} diff --git a/_Main/BL/Type_IOLane/_ROOT_Type_IOLane.qbl b/_Main/BL/Type_IOLane/_ROOT_Type_IOLane.qbl new file mode 100644 index 0000000..66ac220 --- /dev/null +++ b/_Main/BL/Type_IOLane/_ROOT_Type_IOLane.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOLane #extension +{ +} diff --git a/_Main/BL/Type_IOOperation/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_IOOperation/StaticMethod_CreateIfNotExist.qbl new file mode 100644 index 0000000..c6d4e89 --- /dev/null +++ b/_Main/BL/Type_IOOperation/StaticMethod_CreateIfNotExist.qbl @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateIfNotExist ( + MPSync mpSync, + String id +) as IOOperation +{ + TextBody: + [* + // yypsybs Sep-5-2023 (created) + result := select( mpSync, IOOperation, op, op.ID() = id ); + if( isnull( result ) ) { + result := mpSync.IOOperation( relnew, + ID := id ); + } + return result; + *] +} diff --git a/_Main/BL/Type_IOOperation/_ROOT_Type_IOOperation.qbl b/_Main/BL/Type_IOOperation/_ROOT_Type_IOOperation.qbl new file mode 100644 index 0000000..3bb29a6 --- /dev/null +++ b/_Main/BL/Type_IOOperation/_ROOT_Type_IOOperation.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOOperation #extension +{ +} diff --git a/_Main/BL/Type_IOProduct_MP/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_IOProduct_MP/StaticMethod_CreateIfNotExist.qbl new file mode 100644 index 0000000..3a636ab --- /dev/null +++ b/_Main/BL/Type_IOProduct_MP/StaticMethod_CreateIfNotExist.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateIfNotExist ( + MPSync mpSync, + String id, + String name, + String parentId, + String uom +) as IOProduct_MP +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + value := IOProduct_MP::FindById( mpSync, id ); + if( isnull( value ) ) { + value := IOProduct_MP::Create( mpSync, id, name, "", uom ); + if( parentId <> "" ) { + value.ParentID( parentId ); + } + } + return value; + *] +} diff --git a/_Main/BL/Type_IOProduct_MP/StaticMethod_FindById.qbl b/_Main/BL/Type_IOProduct_MP/StaticMethod_FindById.qbl new file mode 100644 index 0000000..b080495 --- /dev/null +++ b/_Main/BL/Type_IOProduct_MP/StaticMethod_FindById.qbl @@ -0,0 +1,14 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod FindById ( + MPSync mpSync, + String id +) as IOProduct_MP +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + result := select( mpSync, IOProduct_MP, item, item.ID() = id ); + return result; + *] +} diff --git a/_Main/BL/Type_IOProduct_MP/_ROOT_Type_IOProduct_MP.qbl b/_Main/BL/Type_IOProduct_MP/_ROOT_Type_IOProduct_MP.qbl new file mode 100644 index 0000000..e99d7ea --- /dev/null +++ b/_Main/BL/Type_IOProduct_MP/_ROOT_Type_IOProduct_MP.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOProduct_MP #extension +{ +} diff --git a/_Main/BL/Type_IORoutingStep/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_IORoutingStep/StaticMethod_CreateIfNotExist.qbl new file mode 100644 index 0000000..e5e10b1 --- /dev/null +++ b/_Main/BL/Type_IORoutingStep/StaticMethod_CreateIfNotExist.qbl @@ -0,0 +1,22 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateIfNotExist ( + MPSync mpSync, + String routingId, + String name, + Number seq +) as IORoutingStep +{ + TextBody: + [* + // yypsybs Sep-5-2023 (created) + value := select( mpSync, IORoutingStep, item, item.RoutingID() = routingId and item.Name() = name and item.SequenceNumberForExcel() = seq ); + if( isnull( value ) ) { + mpSync.IORoutingStep( relnew, + RoutingID := routingId, + Name := name, + SequenceNumberForExcel := seq ); + } + return value; + *] +} diff --git a/_Main/BL/Type_IORoutingStep/_ROOT_Type_IORoutingStep.qbl b/_Main/BL/Type_IORoutingStep/_ROOT_Type_IORoutingStep.qbl new file mode 100644 index 0000000..966b160 --- /dev/null +++ b/_Main/BL/Type_IORoutingStep/_ROOT_Type_IORoutingStep.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IORoutingStep #extension +{ +} diff --git a/_Main/BL/Type_IOUnit/StaticMethod_CreateIfNotExistByTree.qbl b/_Main/BL/Type_IOUnit/StaticMethod_CreateIfNotExistByTree.qbl new file mode 100644 index 0000000..61c9d6b --- /dev/null +++ b/_Main/BL/Type_IOUnit/StaticMethod_CreateIfNotExistByTree.qbl @@ -0,0 +1,32 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateIfNotExistByTree ( + MPSync mpSync, + String id, + String name, + String parentId, + String UOMName, + String currencyId, + Date startDate, + Date endDate, + String capacityType +) as IOUnit +{ + TextBody: + [* + // yypsybs Sep-6-2023 (created) + value := IOUnit::FindById( mpSync, id ); + if( isnull( value ) ) { + value := mpSync.IOUnit( relnew, + ID := id, + Name := name, + ParentUnitID := parentId, + UnitOfMeasureName := UOMName, + CurrencyID := currencyId, + StartDate := startDate, + EndDate := endDate, + CapacityType := capacityType ); + } + return value; + *] +} diff --git a/_Main/BL/Type_IOUnit/StaticMethod_FindById.qbl b/_Main/BL/Type_IOUnit/StaticMethod_FindById.qbl new file mode 100644 index 0000000..8d1460c --- /dev/null +++ b/_Main/BL/Type_IOUnit/StaticMethod_FindById.qbl @@ -0,0 +1,14 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod FindById ( + MPSync mpSync, + String id +) as IOUnit +{ + TextBody: + [* + // yypsybs Sep-6-2023 (created) + value := select( mpSync, IOUnit, item, item.ID() = id ); + return value; + *] +} diff --git a/_Main/BL/Type_IOUnit/_ROOT_Type_IOUnit.qbl b/_Main/BL/Type_IOUnit/_ROOT_Type_IOUnit.qbl new file mode 100644 index 0000000..4056a12 --- /dev/null +++ b/_Main/BL/Type_IOUnit/_ROOT_Type_IOUnit.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +TypeSpecialization IOUnit #extension +{ +} diff --git a/_Main/BL/Type_IOUnitOfMeasure_MP/StaticMethod_DeleteIfExist.qbl b/_Main/BL/Type_IOUnitOfMeasure_MP/StaticMethod_DeleteIfExist.qbl new file mode 100644 index 0000000..43a9efe --- /dev/null +++ b/_Main/BL/Type_IOUnitOfMeasure_MP/StaticMethod_DeleteIfExist.qbl @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DeleteIfExist ( + MPSync mpSync, + String name +) +{ + TextBody: + [* + // yypsybs Sep-1-2023 (created) + toDel := select( mpSync, IOUnitOfMeasure_MP, item, + item.Name() = name ); + if( not isnull( toDel ) ) { + toDel.Delete(); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_GetProductTypeByProductId.qbl b/_Main/BL/Type_MPSync/Method_GetProductTypeByProductId.qbl new file mode 100644 index 0000000..7e4e927 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_GetProductTypeByProductId.qbl @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method GetProductTypeByProductId ( + String productId +) as String +{ + TextBody: + [* + // yypsybs Sep-5-2023 (created) + values := selectvalues( this, MappingBOM, item, item.ProductCode() = productId, item.ProductType() ); + value := ""; + if( values.Size() > 0 ) { + value := values.Element( 0 ); + } + return value; + *] +} diff --git a/_Main/BL/Type_MPSync/Method_ImportDBDataCustom.qbl b/_Main/BL/Type_MPSync/Method_ImportDBDataCustom.qbl new file mode 100644 index 0000000..0646b5f --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_ImportDBDataCustom.qbl @@ -0,0 +1,91 @@ +Quintiq file version 2.0 +#parent: #root +Method ImportDBDataCustom ( + MacroPlan macroPlan, + Strings businessTypes, + Boolean isKeyProduct, + Boolean createPurchaseSupplyMaterial +) +{ + Description: '灏嗚〃鐨勬暟鎹浆涓篒Oxxxx鐨勬暟鎹�' + TextBody: + [* + // Import data from DB + + // 鏁版嵁澶勭悊 + + // 閿�鍞骇鍒強閿�鍞儴闂� + this.MappingSalesLevelData(); + this.Broker_OTD_SalesSegment().Execute(); + this.MappingSalesSegmentData( businessTypes ); + + // 鍗曚綅鍙婂崟浣嶆崲绠� + this.Broker_OTD_UnitOfMeasure().Execute(); + this.MappingUnitOfMeasureData(); + this.Broker_OTD_BaseConversionFactor().Execute(); + this.MappingBaseConversionFactorData(); + + // 璐у竵鍙婅揣甯佹眹鐜� + this.MappingCurrencyData(); + this.MappingCurrencyRateData(); + + // 搴撳瓨鐐� + this.MappingStockingPointData(); + + // 浜у搧 + this.Broker_OTD_Product().Execute(); + this.MappingProductData( businessTypes, isKeyProduct ); + + // 璁㈠崟棰勬祴 + this.Broker_OTD_Forecast().Execute(); + this.MappingForecastData( businessTypes ); + + // 璁㈠崟闇�姹� + this.Broker_OTD_CustomerOrder().Execute(); + this.MappingCustomerOrderData( businessTypes ); + + // 杞﹂亾 + this.MappingLaneData(); + // 杞﹂亾杩愯緭娈� + this.MappingLaneLegData(); + // 渚涘簲缃戠粶锛堣溅閬擄級 + this.Broker_OTD_ProductInLane().Execute(); + this.MappingProductInLaneData(); + + // routing routingStep unit operation operationLink operationInputGroup operationBOM + this.Broker_OTD_Operation().Execute(); + this.Broker_OTD_BOM().Execute(); + // 娓呯悊鏃ф暟鎹� + this.IOUnit( relflush ); + this.IOOperation( relflush ); + this.IOOperationLink( relflush ); + this.IOOperationInputGroup( relflush ); + // 澶勭悊鏁版嵁 + this.MappingUnitData( businessTypes ); + this.MappingOperationData( businessTypes ); + // 娓呯悊鏃ф暟鎹� + this.IOOperationBOM( relflush ); + // 澶勭悊鏁版嵁 + this.MappingOperationBOMData( businessTypes, isKeyProduct, createPurchaseSupplyMaterial ); + + // 搴撳瓨鎴愭湰 + this.Broker_OTD_InventoryCost().Execute(); + this.MappingInventoryValueAndCostData(); + + // 搴撳瓨鏁版嵁 + this.Broker_OTD_ActualPISPIP().Execute(); + this.MappingActualPISPIPData( businessTypes, isKeyProduct ) + + // Update the LastImportFromDatabase time + this.LastImportTime( DateTime::ActualTime() ); + // sync to mp + if( not isnull( macroPlan ) ) { + macroPlan.SynchronizeFromMPSync( this, false, + true, true, true, true, true, + true, true, true, true, true, + true, true, true, true, true, + true, true, true, true, true, + true, true, true, true ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingActualPISPIPData.qbl b/_Main/BL/Type_MPSync/Method_MappingActualPISPIPData.qbl new file mode 100644 index 0000000..afc3888 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingActualPISPIPData.qbl @@ -0,0 +1,30 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingActualPISPIPData ( + Strings businessTypes, + Boolean nuclear +) +{ + TextBody: + [* + this.IOActualProductInStockingPointInPeriod( relflush ); + // 鍏堟寜鍏抽敭鐗╂枡锛屽啀鎸塨usinessType绛涢�変骇鍝� + productList := selectset( this, MappingProduct, item, item.KeyProduct() = nuclear ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + productList := selectset( productList, Elements, item, businessTypes.Find( item.BusinessType() ) >= 0 ); + } + productIdList := selectvalues( productList, Elements, item, item.ID() ); + // 鏍规嵁浜у搧绛涢�夊簱瀛樻暟鎹� + traverse( this, MappingActualPISPIP, item, productIdList.Find( item.ProductID() ) >= 0 ) { + this.IOActualProductInStockingPointInPeriod( relnew, + ActualInventoryLevelEnd := item.ActualInventoryLevelEnd(), + // todo 纭浣跨敤褰撳墠鏃ユ湡杩樻槸鏁版嵁搴撴棩鏈� + Date := item.Date(), + Description := item.Description(), + ManufacturedDate := item.ManufacturedDate(), + ProductID := item.ProductID(), + StockingPointID := item.StockingPointID() ); + + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingBaseConversionFactorData.qbl b/_Main/BL/Type_MPSync/Method_MappingBaseConversionFactorData.qbl new file mode 100644 index 0000000..78cf5e9 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingBaseConversionFactorData.qbl @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingBaseConversionFactorData +{ + Description: 'ETL鏁版嵁杞ā鍨嬫暟鎹�' + TextBody: + [* + this.IOBaseConversionFactor( relflush ); + traverse( this, MappingBaseConversionFactor, item ) { + // IOBaseConversionFactor::DeleteIfExist( this, item.SourceUnitOfMeasureName(), item.TargetUnitOfMeasureName(), item.ProductId() ); + this.IOBaseConversionFactor( relnew, + SourceUnitOfMeasureName := item.SourceUnitOfMeasureName(), + TargetUnitOfMeasureName := item.TargetUnitOfMeasureName(), + ProductID := item.ProductId(), + UserFactor := item.Factor(), + IsEnabled := item.IsEnabled() ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingCurencyRatesData.qbl b/_Main/BL/Type_MPSync/Method_MappingCurencyRatesData.qbl new file mode 100644 index 0000000..b941727 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingCurencyRatesData.qbl @@ -0,0 +1,28 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingCurencyRatesData ( + JSON data +) +{ + TextBody: + [* + data_length := data.Size(); + for( i := 0; i < data_length; i++ ) + { + datarow := data.Get( i ); + currencyId := datarow.Get( "currencyid" ).GetString(); + rate := [Real]datarow.Get( "rate" ).GetString(); + startString := datarow.Get( "start" ).GetString(); + years := [Number]startString.SubString( 0, 4 ); + month := [Number]startString.SubString( 5, 2 ); + day := [Number]startString.SubString( 8, 2 ); + start := Date::Construct( years, month, day ); + // 鍒犻櫎宸叉湁鐨� + // IOCurrencyRate_MP::DeleteIfExist( this, currencyId, start ); + this.IOCurrencyRate_MP( relnew, + CurrencyID := currencyId, + Rate := rate, + Start := start ); + } + *] +} diff --git "a/_Main/BL/Type_MPSync/Method_MappingCurrencyData\043670.qbl" "b/_Main/BL/Type_MPSync/Method_MappingCurrencyData\043670.qbl" new file mode 100644 index 0000000..b5acd8e --- /dev/null +++ "b/_Main/BL/Type_MPSync/Method_MappingCurrencyData\043670.qbl" @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingCurrencyData ( + JSON data +) +{ + TextBody: + [* + data_length := data.Size(); + for( i := 0; i < data_length; i++ ) + { + datarow := data.Get( i ); + id := datarow.Get( "id" ).GetString(); + isBase := [Boolean]datarow.Get( "isbase" ).GetString(); + name := datarow.Get( "name" ).GetString(); + symbol := " "; + // 鍒犻櫎宸叉湁鐨� + // IOCurrency_MP::DeleteIfExist( this, id ); + this.IOCurrency_MP( relnew, + ID := id, IsBase := isBase, Name := name, Symbol := symbol ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingCurrencyData.qbl b/_Main/BL/Type_MPSync/Method_MappingCurrencyData.qbl new file mode 100644 index 0000000..8dae5ee --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingCurrencyData.qbl @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingCurrencyData +{ + TextBody: + [* + this.IOCurrency_MP( relflush ); + // 璐у竵淇℃伅 + bodyNumber := "1"; + postRequestBody := MPSync::ApiBuildPostRequestBody( bodyNumber ); + address := "api-uat-sgc.tianma.cn"; + url := "/otdService/https/GetCurrenciesInfo"; + port := 443; + data := MPSync::ApiResponesCheck( address, port, url, postRequestBody ); + this.MappingCurrencyData( data ); + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingCurrencyRateData.qbl b/_Main/BL/Type_MPSync/Method_MappingCurrencyRateData.qbl new file mode 100644 index 0000000..4335dd8 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingCurrencyRateData.qbl @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingCurrencyRateData +{ + TextBody: + [* + this.IOCurrencyRate_MP( relflush ); + // 璐у竵姹囩巼淇℃伅 + bodynumber := "5"; + postrequestbody := MPSync::ApiBuildPostRequestBody( bodynumber ); + address := "api-uat-sgc.tianma.cn"; + url := "/otdService/https/GetCurrencyRatesInfo"; + port := 443; + data := MPSync::ApiResponesCheck( address, port, url, postrequestbody ); + this.MappingCurencyRatesData( data ); + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingCustomerOrderData.qbl b/_Main/BL/Type_MPSync/Method_MappingCustomerOrderData.qbl new file mode 100644 index 0000000..c15e946 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingCustomerOrderData.qbl @@ -0,0 +1,44 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingCustomerOrderData ( + Strings businessTypes +) +{ + Description: 'ETL璁㈠崟棰勬祴' + TextBody: + [* + toDels := selectset( this, IOSalesDemandBase, item, item.istype( IOCustomerOrder ) ); + traverse( toDels, Elements, toDel ) { + toDel.Delete(); + } + // 寰呭鐞嗘暟鎹� + toDealList := selectset( this, MappingCustomerOrder, item, true ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + toDealList := selectset( toDealList, Elements, item, businessTypes.Find( item.BusinessType() ) >= 0 ); + } + // todo 娌acroPlan鎬庝箞鎼� + //queryStartDate := guard( DateTime::Now() - Duration::Days( 30 ), DateTime::MinDateTime() ).Date(); + //queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() ); + //listToDeal := selectset( listToDeal, Elements, item, item.StartDate() >= queryStartDate and item.EndDate() <= queryEndDate ); + // 澶勭悊 + traverse( toDealList, Elements, item ) { + this.IOSalesDemandBase( relnew, + IOCustomerOrder, + ID := item.ID(), + CurrencyID := item.CurrencyID(), + PriorityName := item.PriorityName(), + ProductID := item.ProductID(), + SalesSegmentName := item.SalesSegmentName(), + StockingPointID := item.StockPointID(), + UnitOfMeasureName := item.UnitOfMeasureName(), + CustomerID := item.CustomerID(), + CustomerName := item.Customer(), + OrderID := item.OrderID(), + OrderLineID := item.OrderLineID(), + Price := item.Price(), + Quantity := item.Quantity(), + StartDate := item.OrderDate() ); + + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MPSync/Method_MappingExternalSupplyData.qbl new file mode 100644 index 0000000..f077a13 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingExternalSupplyData.qbl @@ -0,0 +1,34 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingExternalSupplyData ( + Strings businessTypes, + Boolean nuclear +) +{ + TextBody: + [* + //// renhao Aug-14-2023 (created) + // + //traverse( this,MappingExternalSupply,externalSupply){ + // product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID() and product.KeyProduct() = nuclear,true); + // + // if( not isnull( product)){ + // productMP := select( this,Product_MP,productMP,productMP.ID() = externalSupply.ProductID() ,true); + // stockingpoint := select( this,StockingPoint_MP,st,st.ID() = externalSupply.StockingPointID(),true); + // if( not isnull(businessTypes)){ + // + // for( i :=0 ;i < businessTypes.Size();i++ ){ + // businessType := businessTypes.Element( i); + // if( product.BusinessType() = businessType and not product.IsCommon()){ + // InventorySupply::Create(externalSupply.ID(),productMP,stockingpoint,externalSupply.Date(),externalSupply.ManufacturedDate(),externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�",true); + // } + // } + // + // }else{ + // InventorySupply::Create(externalSupply.ID(),productMP,stockingpoint,externalSupply.Date(),externalSupply.ManufacturedDate(),externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�",true); + // } + // + // } + //} + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingForecastData.qbl b/_Main/BL/Type_MPSync/Method_MappingForecastData.qbl new file mode 100644 index 0000000..bfc14c3 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingForecastData.qbl @@ -0,0 +1,40 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingForecastData ( + Strings businessTypes +) +{ + Description: 'ETL璁㈠崟棰勬祴' + TextBody: + [* + toDels := selectset( this, IOSalesDemandBase, item, item.istype( IOForecast ) ); + traverse( toDels, Elements, toDel ) { + toDel.Delete(); + } + // 寰呭鐞嗘暟鎹� + listToDeal := selectset( this, MappingForecast, item, true ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + listToDeal := selectset( listToDeal, Elements, item, businessTypes.Find( item.BusinessType() ) >= 0 ); + } + // todo 娌acroPlan鎬庝箞鎼� + //queryStartDate := guard( DateTime::Now() - Duration::Days( 30 ), DateTime::MinDateTime() ).Date(); + //queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() ); + //listToDeal := selectset( listToDeal, Elements, item, item.StartDate() >= queryStartDate and item.EndDate() <= queryEndDate ); + // 澶勭悊 + traverse( listToDeal, Elements, item ) { + this.IOSalesDemandBase( relnew, + IOForecast, + ID := item.ID(), + CurrencyID := item.CurrencyID(), + PriorityName := item.PriorityName(), + SalesSegmentName := item.SalesSegmentName(), + StockingPointID := item.StockingPointID(), + UnitOfMeasureName := item.UnitOfMeasureName(), + ProductID := item.ProductID(), + StartDate := item.StartDate(), + EndDate := item.EndDate(), + Quantity := item.Quantity(), + Price := item.Price()); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingInventoryValueAndCostData.qbl b/_Main/BL/Type_MPSync/Method_MappingInventoryValueAndCostData.qbl new file mode 100644 index 0000000..3a8d758 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingInventoryValueAndCostData.qbl @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingInventoryValueAndCostData +{ + TextBody: + [* + this.IOInventoryValueAndCost( relflush ); + traverse( this, MappingInventoryValueAndCost, item ) { + this.IOInventoryValueAndCost( relnew, + ID := item.ID(), + AccountName := item.AccountName(), + Cost := item.Cost(), + CostDriver := item.CostDriver(), + ProductID := item.ProductID(), + Start := item.Start(), + StockingPointID := item.StockingPointID() ); + } + *] +} diff --git "a/_Main/BL/Type_MPSync/Method_MappingLaneData\043474.qbl" "b/_Main/BL/Type_MPSync/Method_MappingLaneData\043474.qbl" new file mode 100644 index 0000000..5757549 --- /dev/null +++ "b/_Main/BL/Type_MPSync/Method_MappingLaneData\043474.qbl" @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingLaneData ( + JSON data +) +{ + TextBody: + [* + dataLength := data.Size(); + for( i := 0; i < dataLength; i++ ) { + dataRow := data.Get( i ); + id := dataRow.Get( "id" ).GetString(); + unitId := dataRow.Get( "unitid" ).GetString(); + name := dataRow.Get( "name" ).GetString(); + userLeadTimeHours := [Number]dataRow.Get( "userleadtime" ).GetString(); + this.IOLane( relnew, + ID := id, + Name := name, + UnitID := unitId, + UserLeadTime := Duration::Hours( userLeadTimeHours ) ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingLaneData.qbl b/_Main/BL/Type_MPSync/Method_MappingLaneData.qbl new file mode 100644 index 0000000..8e84a76 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingLaneData.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingLaneData +{ + TextBody: + [* + this.IOLane( relflush ); + bodyNumber := "3"; + postRequestBody := MPSync::ApiBuildPostRequestBody( bodyNumber ); + address := "api-uat-sgc.tianma.cn"; + url := "/otdService/https/GetLanesInfo"; + port := 443; + data := MPSync::ApiResponesCheck( address, port, url, postRequestBody ); + this.MappingLaneData( data ); + *] +} diff --git "a/_Main/BL/Type_MPSync/Method_MappingLaneLegData\043257.qbl" "b/_Main/BL/Type_MPSync/Method_MappingLaneLegData\043257.qbl" new file mode 100644 index 0000000..0b5adf8 --- /dev/null +++ "b/_Main/BL/Type_MPSync/Method_MappingLaneLegData\043257.qbl" @@ -0,0 +1,30 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingLaneLegData ( + JSON data +) +{ + TextBody: + [* + dataLength := data.Size(); + for( i := 0; i < dataLength; i++ ) { + dataRow := data.Get( i ); + laneId := dataRow.Get( "laneid" ).GetString(); + originStockingPointId := dataRow.Get( "originstockingpointid" ).GetString(); + destinationStockingPointId := dataRow.Get( "destinationstockingpointid" ).GetString(); + name := dataRow.Get( "name" ).GetString(); + userLeadTimeHours := [Number]dataRow.Get( "userleadtime" ).GetString(); + this.IOLaneLeg( relnew, + LaneID := laneId, + OriginStockingPointID := originStockingPointId, + DestinationStockingPointID := destinationStockingPointId, + Name := name, + HasUserLeadTime := true, + UserLeadTime := Duration::Hours( userLeadTimeHours ), + Start := Date::MinDate(), + End := Date::MaxDate(), + PreferenceBonus := 0.0, + CO2Emission := 0.0 ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingLaneLegData.qbl b/_Main/BL/Type_MPSync/Method_MappingLaneLegData.qbl new file mode 100644 index 0000000..edd9206 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingLaneLegData.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingLaneLegData +{ + TextBody: + [* + this.IOLaneLeg( relflush ); + bodynumber := "4"; + postRequestBody := MPSync::ApiBuildPostRequestBody( bodynumber ); + address := "api-uat-sgc.tianma.cn"; + url := "/otdService/https/GetLaneLegsInfo"; + port := 443; + data := MPSync::ApiResponesCheck( address, port, url, postRequestBody ); + this.MappingLaneLegData( data ); + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingOperationBOMData.qbl b/_Main/BL/Type_MPSync/Method_MappingOperationBOMData.qbl new file mode 100644 index 0000000..1ba679a --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingOperationBOMData.qbl @@ -0,0 +1,181 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingOperationBOMData ( + Strings businessTypes, + Boolean isKeyProduct, + Boolean createPurchaseSupplyMaterial +) +{ + TextBody: + [* + // keyProduct + keyProductIds := selectuniquevalues( this, MappingProduct, prod, prod.KeyProduct() = true, prod.ID() ); + // 鑾峰彇鏈夊簭鐨勫緟澶勭悊璁板綍 + toDealOps := construct( MappingOperations ); + toDealBoms := construct( MappingBOMs ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + toDealOps := selectsortedset( this, MappingOperation, item, + businessTypes.Find( item.BusinessType() ) >= 0 + and ( not isKeyProduct or keyProductIds.Find( item.ProductID() ) >= 0 ), + item.SequenceNumber() ); + toDealBoms := selectset( this, MappingBOM, item, + businessTypes.Find( item.BusinessType() ) >= 0 + and ( not isKeyProduct or keyProductIds.Find( item.ComponentCode() ) >= 0 ) ); + } else { + toDealOps := selectsortedset( this, MappingOperation, item, + not isKeyProduct or keyProductIds.Find( item.ProductID() ) >= 0 , + item.SequenceNumber() ); + toDealBoms := selectset( this, MappingBOM, item, + businessTypes.Find( item.BusinessType() ) >= 0 + and ( not isKeyProduct or keyProductIds.Find( item.ComponentCode() ) >= 0 ) ); + } + // 瀵规瘡涓猺outing璁$畻inputGroupId + inputGroupId := 1 + // 瀵规瘡涓猂outing杩涜鎶曞叆浜у嚭澶勭悊 + routingKeys := selectuniquevalues( toDealOps, Elements, item, item.OrganCode() + "_" + item.ProductID() ); + traverse( routingKeys, Elements, routingKey ) { + // ==== 浜у嚭 ==== + // 鎵炬渶澶eq + maxSeq := max( toDealOps, Elements, item, item.OrganCode() + "_" + item.ProductID() = routingKey, item.SequenceNumber() ); + maxSeqElements := selectset( toDealOps, Elements, item, + item.OrganCode() + "_" + item.ProductID() = routingKey and item.SequenceNumber() = maxSeq ); + traverse( maxSeqElements, Elements, maxSeqELement ) { + operationId := maxSeqELement.OrganCode() + "_" + maxSeqELement.ProductID() + "_" + maxSeqELement.ProcessSection(); + if( maxSeqELement.Line() <> "" ) { + operationId := operationId + "_" + maxSeqELement.Line(); + } + this.IOOperationBOM( relnew, + OperationID := operationId, + ProductID := maxSeqELement.ProductID(), + StockingPointID := maxSeqELement.OrganCode() + "_" + this.GetProductTypeByProductId( maxSeqELement.ProductID() ) + "_Stock", + Quantity := 1, + IsInput := false ); + } + // ==== 鎶曞叆 ==== + // 瀵筄peration涓殑姣忎釜ProcessSection锛� 鎵緎eq鏈�灏忕殑list锛屾瘡鏉om瀵硅list鐢熸垚operationBOM + processSectionList := selectuniquevalues( toDealOps, Elements, toDeal, + toDeal.OrganCode() + "_" + toDeal.ProductID() = routingKey, + toDeal.ProcessSection() ); + traverse( processSectionList, Elements, processSection ) { + minSeq := min( toDealOps, Elements, item, + item.OrganCode() + "_" + item.ProductID() = routingKey + and item.ProcessSection() = processSection, + item.SequenceNumber() ); + operationRecordsWithMinSeq := selectset( toDealOps, Elements, minSeqWithProcessSectionElement, + minSeqWithProcessSectionElement.OrganCode() + "_" + minSeqWithProcessSectionElement.ProductID() = routingKey + and minSeqWithProcessSectionElement.ProcessSection() = processSection + and minSeqWithProcessSectionElement.SequenceNumber() = minSeq ); + bomRecords := selectset( toDealBoms, Elements, bom, + bom.OrganCode() + "_" + bom.ProductCode() = routingKey + and bom.ProcessSection() = processSection ); + // 鎸夋槸鍚︽湁鏇挎崲鏂欏垎缁� + bomWithoutAlters := selectset( bomRecords, Elements, bomRecord, bomRecord.AlternativeMaterialCode() = "" ); + bomWithAlters := selectset( bomRecords, Elements, bomRecord, bomRecord.AlternativeMaterialCode() <> "" ); + // 澶勭悊涓嶅甫鏇挎崲鏂欑殑input + traverse( operationRecordsWithMinSeq, Elements, op ) { + traverse( bomWithoutAlters, Elements, bom ) { + operationId := op.OrganCode() + "_" + op.ProductID() + "_" + op.ProcessSection(); + if( op.Line() <> "" ) { + operationId := operationId + "_" + op.Line(); + } + this.IOOperationBOM( relnew, + OperationID := operationId, + ProductID := op.ProductID(), + StockingPointID := op.OrganCode() + "_" + bom.ComponentType() + "_Stock", + IsInput := true, + Quantity := bom.UnitUsageOfComponents() / bom.ComponentOutputRate() ); + } + } + // 澶勭悊甯︽浛鎹㈡枡鐨勶紝鎸塴ine鍜屼富鏂欏垎缁� + lineList := selectuniquevalues( operationRecordsWithMinSeq, Elements, item, item.Line() ); + mainProdList := selectuniquevalues( bomWithAlters, Elements, item, item.ComponentCode() ); + traverse( lineList, Elements, line ) { + opWithLine := select( operationRecordsWithMinSeq, Elements, item, item.Line() = line ); + opId := opWithLine.OrganCode() + "_" + opWithLine.ProductID() + "_" + opWithLine.ProcessSection(); + if( opWithLine.Line() <> "" ) { + opId := opId + "_" + opWithLine.Line(); + } + traverse( mainProdList, Elements, mainProd ) { + // 姣忕涓绘枡涓�涓猤roup + inputGroupId := inputGroupId + 1; + bomWithMainProdList := selectset( bomWithAlters, Elements, item, item.ComponentCode() = mainProd ); + bomRandom := bomWithMainProdList.First(); + // 鎬绘暟閲� + maxQuantityInGroup := bomRandom.UnitUsageOfComponents() / bomRandom.ComponentOutputRate(); + // 鏇夸唬鏂欐�绘瘮渚� + alterRateTotal := sum( bomWithMainProdList, Elements, item, item.AlternativeRate() ); + // 鍒涘缓inputGroup + this.IOOperationInputGroup( relnew, InputGroupID := inputGroupId, OperationID := opId, InputGroupQuantity := maxQuantityInGroup ); + // 鍒涘缓涓绘枡鐨刬nput bom + this.IOOperationBOM( relnew, + OperationID := opId, + InputGroupID := inputGroupId, + ProductID := bomRandom.ComponentCode(), + StockingPointID := bomRandom.OrganCode() + "_" + bomRandom.ComponentType() + "_Stock", + IsInput := true, + Quantity := maxQuantityInGroup * ( 1 - alterRateTotal ), + MinQuantityInGroup := 0.0, + MaxQuantityInGroup := maxQuantityInGroup ); + // 鏇夸唬鏂檌nput bom + traverse( bomWithMainProdList, Elements, bom ) { + this.IOOperationBOM( relnew, + OperationID := opId, + InputGroupID := inputGroupId, + ProductID := bom.AlternativeMaterialCode(), + StockingPointID := bom.OrganCode() + "_" + bom.ComponentType() + "_Stock", + IsInput := true, + Quantity := maxQuantityInGroup * bom.AlternativeRate(), + MinQuantityInGroup := 0.0, + MaxQuantityInGroup := maxQuantityInGroup ); + } + } + } + } + // 閽堝姣忎釜routing 閲嶇疆 inputGroupId + inputGroupId := 1; + } + // 瀵规瘡涓狾rgCode_ComponentCode缁勫悎锛屽垱寤洪噰璐璻outing + if( createPurchaseSupplyMaterial ) { + toCreateKeys := selectuniquevalues( toDealBoms, Elements, bom, + bom.ComponentType() = "P", + bom.OrganCode() + "_" + bom.ComponentCode() ); + traverse( toCreateKeys, Elements, toCreateKey ) { + bomRandom := selectset( toDealBoms, Elements, bom, bom.ComponentType() = "P" and bom.OrganCode() + "_" + bom.ComponentCode() = toCreateKey ).First(); + routingId := bomRandom.OrganCode() + "_" + bomRandom.ComponentCode(); + routingName := routingId; + routingStepName := "閲囪喘"; + routingStepSeq := 1; + operationId := bomRandom.OrganCode() + "_PR_" + bomRandom.ComponentCode(); + operationName := operationId; + unitId := "渚涘簲鍟�"; + // ==== 鍒涘缓 ==== + // 鍒涘缓routing + this.IORouting( relnew, + ID := routingId, Name := routingName, IsEnabled := true, Start := Date::MinDate(), End := Date::MaxDate() ); + // 鍒涘缓routingStep + IORoutingStep::CreateIfNotExist( this, + routingId, + routingStepName, + routingStepSeq ); + // 鍒涘缓op + ioOp := IOOperation::CreateIfNotExist( this, operationId ); + ioOp.UnitID( unitId ); + ioOp.RoutingID( routingId ); + ioOp.RoutingStepName( routingStepName ); + ioOp.Name( operationName ); + ioOp.UserLeadTime( Duration::Zero() ); + ioOp.Throughput( 1.0 ); + ioOp.HasUserMaximumQuantity( false ); + ioOp.UserMinimumQuantity( Real::MinReal() ); + ioOp.UserMaximumQuantity( Real::MaxReal() ); + // 鍒涘缓opBOM + this.IOOperationBOM( relnew, + OperationID := operationId, + ProductID := bomRandom.ComponentCode(), + StockingPointID := bomRandom.OrganCode() + "_" + bomRandom.ComponentType() + "_Stock", + IsInput := true, + Quantity := 1 ); + } + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingOperationCostData.qbl b/_Main/BL/Type_MPSync/Method_MappingOperationCostData.qbl new file mode 100644 index 0000000..30509c6 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingOperationCostData.qbl @@ -0,0 +1,55 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingOperationCostData ( + Strings businesstypes +) +{ + Description: 'Get operation cost data from operation mapping' + TextBody: + [* + //// Administrator Aug-21-2023 (created) + //// list to deal + //listtodeal := construct( structured[MappingOperation] ); + // + //if( isnull( businesstypes ) or businesstypes.Size() = 0 ) { + // listtodeal := selectset( this, MappingOperation, item, true ); + //} else { + // listtodeal := selectset( this, MappingOperation, item, businesstypes.Find( item.BusinessType() ) <> -1 ); + //} + // + //// Get the list to deal with max sequence number + //listtodealwithmaxsn := construct( structured[MappingOperation] ); + //traverse( listtodeal, Elements, item ){ + // maxsn := maxselect( this, + // MappingOperation, + // moperation, + // moperation.OrganCode() = item.OrganCode(), + // moperation.ProductID() = item.ProductID(), + // moperation.SequenceNumber() ).SequenceNumber() + // if( item.SequenceNumber() = maxsn ){ + // listtodealwithmaxsn.Add( item ); + // } + // } + // + //// Get the operation cost data + //traverse( listtodealwithmaxsn, Elements, item ){ + // id := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection() + "_" + item.Line(); + // operation := Operation::FindOperationTypeIndex( id ); + // account := Account_MP::FindByName( this, "Operation cost" ); + // isfromdb := false; + // existoperationcost := OperationCost::FindOperationCostTypeIndex( id ); + // if( isnull( existoperationcost ) ){ + // connecteditem := select( this, + // MappingOperationCost, + // moperationcost, + // moperationcost.OrgCode() = item.OrganCode(), + // moperationcost.ProductID() = item.ProductID() ); + // cost := connecteditem.Cost(); + // lengthoftime := connecteditem.LengthOfTime(); + // start := connecteditem.Start(); + // timeunit := connecteditem.TimeUnit(); + // OperationCost::Create( id, operation, account, "Volume", start, timeunit, lengthoftime, cost, isfromdb ); + // } + // } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingOperationData.qbl b/_Main/BL/Type_MPSync/Method_MappingOperationData.qbl new file mode 100644 index 0000000..b03e439 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingOperationData.qbl @@ -0,0 +1,102 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingOperationData ( + Strings businessTypes +) +{ + TextBody: + [* + // 鑾峰彇鏈夊簭鐨勫緟澶勭悊璁板綍 + toDealList := construct( MappingOperations ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + toDealList := selectsortedset( this, MappingOperation, item, + businessTypes.Find( item.BusinessType() ) >= 0, + item.SequenceNumber() ); + } else { + toDealList := selectsortedset( this, MappingOperation, item, + true, + item.SequenceNumber() ); + } + // 鍒犻櫎鍘熸湁routing + this.IORouting( relflush ); + // 鏂皉outing + routingIdList := selectuniquevalues( toDealList, Elements, item, item.OrganCode() + "_" + item.ProductID() ); + traverse( routingIdList, Elements, routingId ) { + this.IORouting( relnew, + ID := routingId, Name := routingId, IsEnabled := true ); + } + // 鍒犻櫎鍘熸湁routingStep + this.IORoutingStep( relflush ); + // 鏂皉outingStep + traverse( toDealList, Elements, op ) { + routingId := op.OrganCode() + "_" + op.ProductID(); + routingStepName := op.ProcessSection() + "_" + [String]op.SequenceNumber(); + IORoutingStep::CreateIfNotExist( this, + routingId, + routingStepName, + op.SequenceNumber() ); + } + // 鏂皁peration + traverse( toDealList, Elements, op ) { + // 姹囨�绘暟鎹� + routingId := op.OrganCode() + "_" + op.ProductID(); + routingStepName := op.ProcessSection() + "_" + [String]op.SequenceNumber(); + opId := op.OrganCode() + "_" + op.ProductID() + "_" + op.ProcessSection(); + unitId := op.OrganCode() + "_" + op.ProcessSection(); + if( op.Line() <> "" ) { + opId := opId + "_" + op.Line(); + unitId := unitId + "_" + op.Line(); + } + opName := opId; + // 鏂板缓 + ioOp := IOOperation::CreateIfNotExist( this, opId ); + ioOp.UnitID( unitId ); + ioOp.RoutingID( routingId ); + ioOp.RoutingStepName( routingStepName ); + ioOp.Name( opName ); + ioOp.UserLeadTime( Duration::Hours( op.UserLeadTime() ) ); + ioOp.Throughput( op.ActualCapacity() ); + ioOp.UserMinimumQuantity( op.MinimumQuantity() ); + ioOp.UserMaximumQuantity( op.MaximumQuantity() ); + ioOp.HasUserMaximumQuantity( op.MaximumQuantity() <> 0.0 ); + } + // 鎸� OrganCode + ProductID 鍒嗙粍 + 鎺掑簭 + keyList := selectuniquevalues( toDealList, Elements, op, + op.OrganCode() + "_" + op.ProductID() ); + keyList := selectsortedset( keyList, Elements, str, str ); + traverse( keyList, Elements, key ) { + previousList := construct( MappingOperations ); + // 鎸� SequenceNumber 鍒嗙粍 + 鎺掑簭 + subKeyList := selectuniquevalues( toDealList, Elements, op, + key = op.OrganCode() + "_" + op.ProductID(), + op.SequenceNumber() ); + subKeyList := selectsortedset( subKeyList, Elements, seq, seq ); + // 閬嶅巻姣忎釜Seq锛屼笌鍓嶄竴涓猯ist杩涜杩炴帴锛屽悓鏃跺垱寤篻roup + traverse( subKeyList, Elements, seq ) { + elementList := selectset( this, MappingOperation, op, + op.OrganCode() + "_" + op.ProductID() = key and op.SequenceNumber() = seq ); + if( not isnull( previousList ) and previousList.Size() > 0 ) { + // 瀵规瘡涓洰鏍囧垱寤篿nputGroup + if( previousList.Size() > 1 ) { + traverse( elementList, Elements, targetOp ) { + targetOpId := targetOp.OrganCode() + "_" + targetOp.ProductID() + "_" + targetOp.ProcessSection(); + this.IOOperationInputGroup( relnew, InputGroupID := 1, OperationID := targetOpId, InputGroupQuantity := 1 ); + } + } + // 婧愪笌鐩爣涓や袱鍒涘缓operationLink + traverse( elementList, Elements, targetOp ) { + traverse( previousList, Elements, sourceOp ) { + sourceOpId := sourceOp.OrganCode() + "_" + sourceOp.ProductID() + "_" + sourceOp.ProcessSection(); + targetOpId := targetOp.OrganCode() + "_" + targetOp.ProductID() + "_" + targetOp.ProcessSection(); + this.IOOperationLink( relnew, + SourceOperationID := sourceOpId, DestOperationID := targetOpId, + SourceGroupID := 1, DestGroupID := 1, SourceQuantity := 1, DestQuantity := 1 / previousList.Size(), + DestHasUserQuantity := false, DestMinQuantity := 0, DestMaxQuantity := 1 ); + } + } + } + previousList := elementList; + } + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingProductData.qbl b/_Main/BL/Type_MPSync/Method_MappingProductData.qbl new file mode 100644 index 0000000..4a5f907 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingProductData.qbl @@ -0,0 +1,47 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingProductData ( + Strings businesstypes, + Boolean iskeyproduct +) +{ + Description: 'Method to get needed data from mapping product data' + TextBody: + [* + // 娓呴櫎鏃ф暟鎹� + this.IOProduct_MP( relflush ); + // list to deal + listToDeal := construct( structured[MappingProduct] ); + if( isnull( businesstypes ) or businesstypes.Size() = 0 ) { + if( iskeyproduct = true ){ + listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true ); + } else { + listToDeal := selectset( this, MappingProduct, item, true ); + } + } else { + if( iskeyproduct = true ){ + listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true, businesstypes.Find( item.BusinessType() ) <> -1 or businesstypes.Find( item.CommonBusiness() ) <> -1 ); + } else { + listToDeal := selectset( this, MappingProduct, item, businesstypes.Find( item.BusinessType() ) <> -1 or businesstypes.Find( item.CommonBusiness() ) <> -1 ); + } + } + // 鍒涘缓鏍逛骇鍝� + IOProduct_MP::CreateIfNotExist( this, "鍏ㄩ儴鐗╂枡浜у搧", "鍏ㄩ儴鐗╂枡浜у搧", "", "PCS" ); + // 澶勭悊鏂颁俊鎭� + traverse( listToDeal, Elements, item ) { + // 鍒涘缓鐖朵骇鍝� + IOProduct_MP::CreateIfNotExist( this, item.ProductMajorType(), item.ProductMajorType(), "鍏ㄩ儴鐗╂枡", "PCS" ); + IOProduct_MP::CreateIfNotExist( this, item.ProductSubclassType(), item.ProductSubclassType(), item.ProductMajorType(), "PCS" ); + // 鍒涘缓浜у搧 + this.IOProduct_MP( relnew, + ID := item.ID(), + Name := item.Name(), + ParentID := item.ProductSubclassType(), + UOMName := item.UnitOfMeasureName(), + // todo ? + HasShelfLife := true, + ShelfLife := item.ShelfLife(), + Notes := item.Notes() ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingProductInLaneData.qbl b/_Main/BL/Type_MPSync/Method_MappingProductInLaneData.qbl new file mode 100644 index 0000000..4b1a242 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingProductInLaneData.qbl @@ -0,0 +1,15 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingProductInLaneData +{ + Description: 'Get Product In Line data' + TextBody: + [* + this.IOProductInLane( relflush ); + traverse( this, MappingProductInLane, item ){ + this.IOProductInLane( relnew, + LaneID := item.LineID(), + ProductID := item.ProductID() ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingSalesLevelData.qbl b/_Main/BL/Type_MPSync/Method_MappingSalesLevelData.qbl new file mode 100644 index 0000000..0baf2aa --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingSalesLevelData.qbl @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingSalesLevelData +{ + TextBody: + [* + this.IOSalesLevel_MP( relflush ); + this.IOSalesLevel_MP( relnew, + Level := 0, + Name := "钀ラ攢涓績" ); + this.IOSalesLevel_MP( relnew, + Level := 1, + Name := "閿�鍞" ); + this.IOSalesLevel_MP( relnew, + Level := 2, + Name := "瀹㈡埛" ); + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingSalesSegmentData.qbl b/_Main/BL/Type_MPSync/Method_MappingSalesSegmentData.qbl new file mode 100644 index 0000000..d92ea1e --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingSalesSegmentData.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingSalesSegmentData ( + Strings businessTypes +) +{ + Description: 'ETL閿�鍞儴闂�' + TextBody: + [* + this.IOSalesSegment_MP( relflush ); + toDealList := selectset( this, MappingSalesSegment, item, true ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + toDealList := selectset( toDealList, Elements, item, businessTypes.Find( item.BusinessType() ) >= 0 ); + } + + traverse( toDealList, Elements, item ) { + this.IOSalesSegment_MP( relnew, + Name := item.Name(), + ParentName := item.ParentName(), + DisplayIndex := item.DisplayIndex() ); + } + *] +} diff --git "a/_Main/BL/Type_MPSync/Method_MappingStockingPointData\043321.qbl" "b/_Main/BL/Type_MPSync/Method_MappingStockingPointData\043321.qbl" new file mode 100644 index 0000000..cfe65b5 --- /dev/null +++ "b/_Main/BL/Type_MPSync/Method_MappingStockingPointData\043321.qbl" @@ -0,0 +1,29 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingStockingPointData ( + JSON data +) +{ + TextBody: + [* + dataLength := data.Size(); + for( i:=0; i < dataLength; i++ ) + { + dataRow := data.Get( i ); + id := dataRow.Get( "id" ).GetString(); + unitId := dataRow.Get( "unitid" ).GetString(); + name := dataRow.Get( "name" ).GetString(); + this.IOStockingPoint_MP( relnew, + ID := id, + Name := name, + UnitID := unitId, + CurrencyID := "CNY", + UnitOfMeasureName := "PCS", + IsPlannedInfinite := false, + GroupName := " ", + Notes := " ", + Start := Date::MinDate(), + End := Date::MaxDate() ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingStockingPointData.qbl b/_Main/BL/Type_MPSync/Method_MappingStockingPointData.qbl new file mode 100644 index 0000000..b09b6be --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingStockingPointData.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingStockingPointData +{ + TextBody: + [* + this.IOStockingPoint_MP( relflush ); + bodyNumber := "2"; + postRequestBody := MPSync::ApiBuildPostRequestBody( bodyNumber ); + address := "api-uat-sgc.tianma.cn"; + port := 443; + url := "/otdService/https/GetStockingPointsInfo"; + data := MPSync::ApiResponesCheck( address, port, url, postRequestBody ); + this.MappingStockingPointData( data ); + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingUnitData.qbl b/_Main/BL/Type_MPSync/Method_MappingUnitData.qbl new file mode 100644 index 0000000..eaec58b --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingUnitData.qbl @@ -0,0 +1,52 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingUnitData ( + Strings businessTypes +) +{ + Description: 'Get unit data from operation mapping' + TextBody: + [* + listToDeal := selectset( this, MappingOperation, item, true ); + if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) { + listToDeal := selectset( this, MappingOperation, item, businessTypes.Find( item.BusinessType() ) >= 0 ); + } + // 甯搁噺 + unitOfMeasureName := "PCS"; + currencyId := "CNY"; + startDate := Date::Date( 1900, 1, 1 ); + endDate := Date::Date( 9999, 12, 31 ); + capacityType := "Infinite"; + // 閫愮骇鍒涘缓 + IOUnit::CreateIfNotExistByTree( this, "澶╅┈闆嗗洟", "澶╅┈闆嗗洟", "", unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + IOUnit::CreateIfNotExistByTree( this, "鐢熶骇", "鐢熶骇", "澶╅┈闆嗗洟", unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + IOUnit::CreateIfNotExistByTree( this, "渚涘簲鍟�", "渚涘簲鍟�", "澶╅┈闆嗗洟", unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + IOUnit::CreateIfNotExistByTree( this, "鏁磋溅杩愯緭", "鏁磋溅杩愯緭", "澶╅┈闆嗗洟", unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + // 鏍规嵁operation鍒涘缓 + traverse( listToDeal, Elements, op ) { + // 涓�绾� orgCode + levelOne := op.OrganCode(); + IOUnit::CreateIfNotExistByTree( this, + levelOne, op.OrganName(), "鐢熶骇", + unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + // 浜岀骇 orgCode + plantName + levelTwo := op.OrganCode() + "_" + op.PlantName(); + IOUnit::CreateIfNotExistByTree( this, + levelTwo, levelTwo, levelOne, + unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + // 涓夌骇 浜岀骇 + processSection + levelThree := levelTwo + "_" + op.ProcessSection(); + IOUnit::CreateIfNotExistByTree( this, + levelThree, levelThree, levelTwo, + unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + // 鍥涚骇 涓夌骇 + line + if( op.Line() <> "" ) { + levelFour := levelThree + "_" + op.Line(); + IOUnit::CreateIfNotExistByTree( this, + levelFour, levelFour, levelThree, + unitOfMeasureName, currencyId, startDate, endDate, capacityType ); + } + + } + *] +} diff --git a/_Main/BL/Type_MPSync/Method_MappingUnitOfMeasureData.qbl b/_Main/BL/Type_MPSync/Method_MappingUnitOfMeasureData.qbl new file mode 100644 index 0000000..066fe15 --- /dev/null +++ b/_Main/BL/Type_MPSync/Method_MappingUnitOfMeasureData.qbl @@ -0,0 +1,14 @@ +Quintiq file version 2.0 +#parent: #root +Method MappingUnitOfMeasureData +{ + Description: 'ETL鏁版嵁杞ā鍨嬫暟鎹�' + TextBody: + [* + this.IOUnitOfMeasure_MP( relflush ); + traverse( this, MappingUnitOfMeasure, item ) { + // IOUnitOfMeasure_MP::DeleteIfExist( this, item.Name() ); + this.IOUnitOfMeasure_MP( relnew, IsDefault := item.IsDefault(), Name := item.Name() ); + } + *] +} diff --git a/_Main/BL/Type_MPSync/StaticMethod_ApiBuildPostRequestBody.qbl b/_Main/BL/Type_MPSync/StaticMethod_ApiBuildPostRequestBody.qbl new file mode 100644 index 0000000..d7495b1 --- /dev/null +++ b/_Main/BL/Type_MPSync/StaticMethod_ApiBuildPostRequestBody.qbl @@ -0,0 +1,25 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod ApiBuildPostRequestBody ( + String bodynumber +) as String +{ + TextBody: + [* + postrequestbody := JSON::Object() + .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber ) + .Add( "fromSystemCode", "OTDH000" + bodynumber ) + .Add( "toInterfaceCode", "QIDH000" + bodynumber ) + .Add( "ouZone", "OU_TMSH" ) + .Add( "uuid", "1617355496bb588e353e80147eea5f45" ) + .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) ) + .Add( "dataType", "JSON" ) + .Add( "data", JSON::Object() + .Add( "pageIndex", "1" ) ).Build(); + + info( DateTime::Now().Format( "Y-M2-D2 H:m:s" ) ); + postrequestbodystring := postrequestbody.AsString(); + + return postrequestbodystring; + *] +} diff --git a/_Main/BL/Type_MPSync/StaticMethod_ApiResponesCheck.qbl b/_Main/BL/Type_MPSync/StaticMethod_ApiResponesCheck.qbl new file mode 100644 index 0000000..ac1f3c0 --- /dev/null +++ b/_Main/BL/Type_MPSync/StaticMethod_ApiResponesCheck.qbl @@ -0,0 +1,54 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod ApiResponesCheck ( + String address, + Number port, + String path, + String postrequestbody +) as owning JSON +{ + TextBody: + [* + // for HTTPS requests: + i := HTTPInterface::Create( address, port ); + //i := HTTPInterface::Create( address ,443); + info( address, port, path, postrequestbody ); + + i.URL(path); + //i.SSL(false); + i.SSL(true); + i.SSLKeystore('MyKeystore'); // created in the Config Utility + + i.PostMethod(true); //it's a POST method + + i.Call(postrequestbody); // Call's argument is for POST method's content. + htmlresult := i.Result(); + + htmlresponse := JSON::Parse( htmlresult ); + + code := htmlresponse.Get( "resultCode" ).GetString(); + message := htmlresponse.Get( "resultMsg" ); + data := htmlresponse.Get( "responseData" ); + datalist := data.Get( "dataList" ); + + if( code = "1" ) + { + info( "Data have been written into table" ); + } + else + { + messagestring := " "; + if ( message.IsNull() ) + { + messagestring := "No message returns!"; + } + else + { + messagestring := message.GetString(); + } + info( "Error! error code: " + code + ", error message: " + messagestring ); + } + + return &datalist; + *] +} diff --git a/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl new file mode 100644 index 0000000..2e63828 --- /dev/null +++ b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type MPSync #extension +{ +} diff --git "a/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043331.qbl" "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043331.qbl" new file mode 100644 index 0000000..dc03063 --- /dev/null +++ "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043331.qbl" @@ -0,0 +1,21 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DoSyncNew ( + MacroPlan macroPlan, + MPSync mpSync, + String businessTypeStr, + Boolean isKeyProduct, + Boolean createPurchaseSupplyMaterial +) +{ + Description: '鍗曟鍚屾' + TextBody: + [* + // yypsybs Aug-17-2023 (created) + businessTypes := construct( Strings ); + if( businessTypeStr.Length() > 0 ) { + businessTypes := businessTypeStr.Tokenize( ',' ); + } + MacroPlan::DoSyncNew( macroPlan, mpSync, businessTypes, isKeyProduct, createPurchaseSupplyMaterial ); + *] +} diff --git "a/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043821.qbl" "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043821.qbl" new file mode 100644 index 0000000..c7824af --- /dev/null +++ "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew\043821.qbl" @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DoSyncNew ( + MacroPlan macroPlan, + MPSync mpSync, + Boolean isKeyProduct, + Boolean createPurchaseSupplyMaterial +) +{ + Description: '鍗曟鍚屾' + TextBody: + [* + // yypsybs Aug-17-2023 (created) + businessTypes := construct( Strings ); + MacroPlan::DoSyncNew( macroPlan, mpSync, businessTypes, isKeyProduct, createPurchaseSupplyMaterial ); + *] +} diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew.qbl new file mode 100644 index 0000000..a66613b --- /dev/null +++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSyncNew.qbl @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod DoSyncNew ( + MacroPlan macroPlan, + MPSync mpSync, + Strings businessTypes, + Boolean isKeyProduct, + Boolean createPurchaseSupplyMaterial +) +{ + Description: '鍗曟鍚屾' + TextBody: + [* + // yypsybs Aug-31-2023 (created) + mpSync.ImportDBDataCustom( macroPlan, businessTypes, isKeyProduct, createPurchaseSupplyMaterial ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrencyData_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrencyData_OnClick.def new file mode 100644 index 0000000..adde90d --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrencyData_OnClick.def @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: mbMainMenu/MenuTestCurrencyData +Response OnClick () id:Response_MacroPlanner_mbMainMenu_MenuTestCurrencyData_OnClick +{ + #keys: '[414502.0.88134030]' + Body: + [* + // Click to start a dialog about lane data test + dlg := construct( CurrencyDataTestDialog ); + dlg.OpenDialog( Application ); + *] + DefinitionID: 'Responsedef_Menu_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrency_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrency_OnClick.def new file mode 100644 index 0000000..375e8df --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestCurrency_OnClick.def @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: mbMainMenu/MenuTestCurrency +Response OnClick () id:Response_MacroPlanner_mbMainMenu_MenuTestCurrency_OnClick +{ + #keys: '[414502.0.88134200]' + Body: + [* + // Click to start a dialog about lane data test + dlg := construct( CurrencyRateDataTestDialog ); + dlg.OpenDialog( Application ); + *] + DefinitionID: 'Responsedef_Menu_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesData_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesData_OnClick.def new file mode 100644 index 0000000..1178192 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesData_OnClick.def @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: mbMainMenu/MenuTestLanesData +Response OnClick () id:Response_MacroPlanner_mbMainMenu_MenuTestLanesData_OnClick +{ + #keys: '[414502.0.18234397]' + Body: + [* + // Click to start a dialog about lane data test + dlg := construct( LanesDataTestDialog ); + dlg.OpenDialog( Application ); + *] + DefinitionID: 'Responsedef_Menu_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesLegsData_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesLegsData_OnClick.def new file mode 100644 index 0000000..1c7baf7 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestLanesLegsData_OnClick.def @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: mbMainMenu/MenuTestLanesLegsData +Response OnClick () id:Response_MacroPlanner_mbMainMenu_MenuTestLanesLegsData_OnClick +{ + #keys: '[412960.0.15704079]' + Body: + [* + // Click to start a dialog about lane data test + dlg := construct( LanesLegsDataTestDialog ); + dlg.OpenDialog( Application ); + *] + DefinitionID: 'Responsedef_Menu_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestStockpointData_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestStockpointData_OnClick.def new file mode 100644 index 0000000..6ff38a8 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_MacroPlanner_mbMainMenu_MenuTestStockpointData_OnClick.def @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: mbMainMenu/MenuTestStockpointData +Response OnClick () id:Response_MacroPlanner_mbMainMenu_MenuTestStockpointData_OnClick +{ + #keys: '[414502.0.18234233]' + Body: + [* + // Click to start a new dialog about stockpoint data test + dlg := construct( StockpointDataTestDialog ); + dlg.OpenDialog( Application ); + *] + DefinitionID: 'Responsedef_Menu_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Component_Toolbar484.def b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Component_Toolbar484.def new file mode 100644 index 0000000..fb1103c --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Component_Toolbar484.def @@ -0,0 +1,70 @@ +Quintiq file version 2.0 +Component Toolbar484 +{ + #keys: '[414502.0.88134261]' + BaseType: 'Toolbar' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 128 id: 486 parent: 0 } + GBFlow.Column { grow: 0 id: 661 parent: 0 } + GBFlow.Column { grow: 0 id: 550 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => btnOk + Position { startcolumn: 661 startrow: 337 endcolumn: 661 endrow: 337 } + } + GBElement + { + Component => btnCancel + Position { startcolumn: 550 startrow: 337 endcolumn: 550 endrow: 337 } + } + ] + Gaps: [ left: 5 right: 5 top: 0 bottom: 0 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 337 parent: 0 } + ] + } + Children: + [ + Component btnOk + { + #keys: '[414502.0.88134278]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+O' + Text: '&OK' + ] + } + Component btnCancel + { + #keys: '[414502.0.88134286]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+C' + Text: '&Cancel' + ] + } + ] + Properties: + [ + Border: false + Location: 'bottom' + Size: 26 + ModeledStringList ChildOrdering + { + c: btnOk + c: btnCancel + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Method_OpenDialog.def b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Method_OpenDialog.def new file mode 100644 index 0000000..1402dba --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Method_OpenDialog.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenDialog ( + internal[GUIComponent] parent +) id:Method_CurrencyDataTestDialog_OpenDialog +{ + #keys: '[414502.0.88134527]' + Body: + [* + testResult := MacroPlan.TestDataConnect("TestCurrency"); + + Label413.Text( testResult ); + + + this.DoModal( parent ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnCancel_OnClick.def b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnCancel_OnClick.def new file mode 100644 index 0000000..93b5667 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnCancel_OnClick.def @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: Toolbar484/btnCancel +Response OnClick () id:Response_Toolbar484_btnCancel_OnClick +{ + #keys: '[414502.0.88134293]' + Body: + [* + Dialog.EndModal(-1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnOk_OnClick.def b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnOk_OnClick.def new file mode 100644 index 0000000..0dd56ce --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/Response_Toolbar484_btnOk_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: Toolbar484/btnOk +Response OnClick () id:Response_Toolbar484_btnOk_OnClick +{ + #keys: '[414502.0.88134285]' + Body: + [* + Dialog.ApplyChanges(); + Dialog.EndModal(1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/_ROOT_Component_CurrencyDataTestDialog.def b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/_ROOT_Component_CurrencyDataTestDialog.def new file mode 100644 index 0000000..b4135a8 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyDataTestDialog/_ROOT_Component_CurrencyDataTestDialog.def @@ -0,0 +1,55 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlanner +OrphanComponent CurrencyDataTestDialog +{ + #keys: '[414502.0.88134250]' + BaseType: 'Dialog' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 0 id: 947 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => Label413 + Position { startcolumn: 947 startrow: 363 endcolumn: 947 endrow: 363 } + } + ] + Gaps: [ left: 10 right: 10 top: 10 bottom: 10 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 363 parent: 0 } + ] + } + Children: + [ + #child: Toolbar484 + Component Label413 + { + #keys: '[414502.0.88134400]' + BaseType: 'Label' + Properties: + [ + Transparent: true + ] + } + ] + Properties: + [ + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + Height: 108 + Title: 'Currency Data Test Dialog' + Width: 121 + ModeledStringList ChildOrdering + { + c: Toolbar484 + c: Label413 + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Component_Toolbar868.def b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Component_Toolbar868.def new file mode 100644 index 0000000..29de3f7 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Component_Toolbar868.def @@ -0,0 +1,70 @@ +Quintiq file version 2.0 +Component Toolbar868 +{ + #keys: '[414502.0.88134578]' + BaseType: 'Toolbar' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 128 id: 376 parent: 0 } + GBFlow.Column { grow: 0 id: 118 parent: 0 } + GBFlow.Column { grow: 0 id: 500 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => btnOk + Position { startcolumn: 118 startrow: 254 endcolumn: 118 endrow: 254 } + } + GBElement + { + Component => btnCancel + Position { startcolumn: 500 startrow: 254 endcolumn: 500 endrow: 254 } + } + ] + Gaps: [ left: 5 right: 5 top: 0 bottom: 0 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 254 parent: 0 } + ] + } + Children: + [ + Component btnOk + { + #keys: '[414502.0.88134595]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+O' + Text: '&OK' + ] + } + Component btnCancel + { + #keys: '[414502.0.88134603]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+C' + Text: '&Cancel' + ] + } + ] + Properties: + [ + Border: false + Location: 'bottom' + Size: 26 + ModeledStringList ChildOrdering + { + c: btnOk + c: btnCancel + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Method_OpenDialog.def b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Method_OpenDialog.def new file mode 100644 index 0000000..81ec543 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Method_OpenDialog.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenDialog ( + internal[GUIComponent] parent +) id:Method_CurrencyRateDataTestDialog_OpenDialog +{ + #keys: '[414502.0.88134671]' + Body: + [* + testResult := MacroPlan.TestDataConnect("TestCurrencyRate"); + + Label492.Text( testResult ); + + + this.DoModal( parent ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnCancel_OnClick.def b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnCancel_OnClick.def new file mode 100644 index 0000000..4a3848a --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnCancel_OnClick.def @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: Toolbar868/btnCancel +Response OnClick () id:Response_Toolbar868_btnCancel_OnClick +{ + #keys: '[414502.0.88134610]' + Body: + [* + Dialog.EndModal(-1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnOk_OnClick.def b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnOk_OnClick.def new file mode 100644 index 0000000..f0dc017 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/Response_Toolbar868_btnOk_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: Toolbar868/btnOk +Response OnClick () id:Response_Toolbar868_btnOk_OnClick +{ + #keys: '[414502.0.88134602]' + Body: + [* + Dialog.ApplyChanges(); + Dialog.EndModal(1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/_ROOT_Component_CurrencyRateDataTestDialog.def b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/_ROOT_Component_CurrencyRateDataTestDialog.def new file mode 100644 index 0000000..7fefc38 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_CurrencyRateDataTestDialog/_ROOT_Component_CurrencyRateDataTestDialog.def @@ -0,0 +1,54 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlanner +OrphanComponent CurrencyRateDataTestDialog +{ + #keys: '[414502.0.88134567]' + BaseType: 'Dialog' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 0 id: 116 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => Label492 + Position { startcolumn: 116 startrow: 920 endcolumn: 116 endrow: 920 } + } + ] + Gaps: [ left: 10 right: 10 top: 10 bottom: 10 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 920 parent: 0 } + ] + } + Children: + [ + #child: Toolbar868 + Component Label492 + { + #keys: '[414502.0.88134655]' + BaseType: 'Label' + Properties: + [ + Transparent: true + ] + } + ] + Properties: + [ + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + Title: 'Currency Rate Data Test Dialog' + Width: 444 + ModeledStringList ChildOrdering + { + c: Toolbar868 + c: Label492 + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Component_Toolbar458.def b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Component_Toolbar458.def new file mode 100644 index 0000000..af42334 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Component_Toolbar458.def @@ -0,0 +1,70 @@ +Quintiq file version 2.0 +Component Toolbar458 +{ + #keys: '[414502.0.18234842]' + BaseType: 'Toolbar' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 128 id: 178 parent: 0 } + GBFlow.Column { grow: 0 id: 729 parent: 0 } + GBFlow.Column { grow: 0 id: 210 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => btnOk + Position { startcolumn: 729 startrow: 251 endcolumn: 729 endrow: 251 } + } + GBElement + { + Component => btnCancel + Position { startcolumn: 210 startrow: 251 endcolumn: 210 endrow: 251 } + } + ] + Gaps: [ left: 5 right: 5 top: 0 bottom: 0 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 251 parent: 0 } + ] + } + Children: + [ + Component btnOk + { + #keys: '[414502.0.18234859]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+O' + Text: '&OK' + ] + } + Component btnCancel + { + #keys: '[414502.0.18234867]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+C' + Text: '&Cancel' + ] + } + ] + Properties: + [ + Border: false + Location: 'bottom' + Size: 26 + ModeledStringList ChildOrdering + { + c: btnOk + c: btnCancel + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Method_OpenDialog.def b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Method_OpenDialog.def new file mode 100644 index 0000000..e2f983a --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Method_OpenDialog.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenDialog ( + internal[GUIComponent] parent +) id:Method_LanesDataTestDialog_OpenDialog +{ + #keys: '[414502.0.27954178]' + Body: + [* + testResult := MacroPlan.TestDataConnect("TestLanes"); + + Label808.Text( testResult ); + + + this.DoModal( parent ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnCancel_OnClick.def b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnCancel_OnClick.def new file mode 100644 index 0000000..431eab4 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnCancel_OnClick.def @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: Toolbar458/btnCancel +Response OnClick () id:Response_Toolbar458_btnCancel_OnClick +{ + #keys: '[414502.0.18234874]' + Body: + [* + Dialog.EndModal(-1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnOk_OnClick.def b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnOk_OnClick.def new file mode 100644 index 0000000..bb58abf --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/Response_Toolbar458_btnOk_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: Toolbar458/btnOk +Response OnClick () id:Response_Toolbar458_btnOk_OnClick +{ + #keys: '[414502.0.18234866]' + Body: + [* + Dialog.ApplyChanges(); + Dialog.EndModal(1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/_ROOT_Component_LanesDataTestDialog.def b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/_ROOT_Component_LanesDataTestDialog.def new file mode 100644 index 0000000..8c6fb22 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesDataTestDialog/_ROOT_Component_LanesDataTestDialog.def @@ -0,0 +1,55 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlanner +OrphanComponent LanesDataTestDialog +{ + #keys: '[414502.0.18234831]' + BaseType: 'Dialog' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 0 id: 785 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => Label808 + Position { startcolumn: 785 startrow: 325 endcolumn: 785 endrow: 325 } + } + ] + Gaps: [ left: 10 right: 10 top: 10 bottom: 10 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 325 parent: 0 } + ] + } + Children: + [ + #child: Toolbar458 + Component Label808 + { + #keys: '[414502.0.27954099]' + BaseType: 'Label' + Properties: + [ + Transparent: true + ] + } + ] + Properties: + [ + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + Height: 108 + Title: 'Lanes Data Test' + Width: 136 + ModeledStringList ChildOrdering + { + c: Toolbar458 + c: Label808 + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Component_Toolbar886.def b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Component_Toolbar886.def new file mode 100644 index 0000000..c42fef1 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Component_Toolbar886.def @@ -0,0 +1,70 @@ +Quintiq file version 2.0 +Component Toolbar886 +{ + #keys: '[412960.0.15704261]' + BaseType: 'Toolbar' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 128 id: 851 parent: 0 } + GBFlow.Column { grow: 0 id: 755 parent: 0 } + GBFlow.Column { grow: 0 id: 969 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => btnOk + Position { startcolumn: 755 startrow: 569 endcolumn: 755 endrow: 569 } + } + GBElement + { + Component => btnCancel + Position { startcolumn: 969 startrow: 569 endcolumn: 969 endrow: 569 } + } + ] + Gaps: [ left: 5 right: 5 top: 0 bottom: 0 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 569 parent: 0 } + ] + } + Children: + [ + Component btnOk + { + #keys: '[412960.0.15704278]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+O' + Text: '&OK' + ] + } + Component btnCancel + { + #keys: '[412960.0.15704286]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+C' + Text: '&Cancel' + ] + } + ] + Properties: + [ + Border: false + Location: 'bottom' + Size: 26 + ModeledStringList ChildOrdering + { + c: btnOk + c: btnCancel + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Method_OpenDialog.def b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Method_OpenDialog.def new file mode 100644 index 0000000..16abb6c --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Method_OpenDialog.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenDialog ( + internal[GUIComponent] parent +) id:Method_LanesLegsDataTestDialog_OpenDialog +{ + #keys: '[412960.0.15704586]' + Body: + [* + testResult := MacroPlan.TestDataConnect("TestLanesLegs"); + + Label484.Text( testResult ); + + + this.DoModal( parent ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnCancel_OnClick.def b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnCancel_OnClick.def new file mode 100644 index 0000000..ba4cc61 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnCancel_OnClick.def @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: Toolbar886/btnCancel +Response OnClick () id:Response_Toolbar886_btnCancel_OnClick +{ + #keys: '[412960.0.15704293]' + Body: + [* + Dialog.EndModal(-1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnOk_OnClick.def b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnOk_OnClick.def new file mode 100644 index 0000000..0928340 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/Response_Toolbar886_btnOk_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: Toolbar886/btnOk +Response OnClick () id:Response_Toolbar886_btnOk_OnClick +{ + #keys: '[412960.0.15704285]' + Body: + [* + Dialog.ApplyChanges(); + Dialog.EndModal(1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/_ROOT_Component_LanesLegsDataTestDialog.def b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/_ROOT_Component_LanesLegsDataTestDialog.def new file mode 100644 index 0000000..4b4e5a1 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_LanesLegsDataTestDialog/_ROOT_Component_LanesLegsDataTestDialog.def @@ -0,0 +1,54 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlanner +OrphanComponent LanesLegsDataTestDialog +{ + #keys: '[412960.0.15704249]' + BaseType: 'Dialog' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 0 id: 739 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => Label484 + Position { startcolumn: 739 startrow: 321 endcolumn: 739 endrow: 321 } + } + ] + Gaps: [ left: 10 right: 10 top: 10 bottom: 10 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 321 parent: 0 } + ] + } + Children: + [ + #child: Toolbar886 + Component Label484 + { + #keys: '[412960.0.15704489]' + BaseType: 'Label' + Properties: + [ + Transparent: true + ] + } + ] + Properties: + [ + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + Title: 'Lanes Legs Data Test' + Width: 492 + ModeledStringList ChildOrdering + { + c: Toolbar886 + c: Label484 + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Component_Toolbar309.def b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Component_Toolbar309.def new file mode 100644 index 0000000..ef7dbeb --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Component_Toolbar309.def @@ -0,0 +1,70 @@ +Quintiq file version 2.0 +Component Toolbar309 +{ + #keys: '[414502.0.18234549]' + BaseType: 'Toolbar' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 128 id: 557 parent: 0 } + GBFlow.Column { grow: 0 id: 351 parent: 0 } + GBFlow.Column { grow: 0 id: 110 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => btnOk + Position { startcolumn: 351 startrow: 960 endcolumn: 351 endrow: 960 } + } + GBElement + { + Component => btnCancel + Position { startcolumn: 110 startrow: 960 endcolumn: 110 endrow: 960 } + } + ] + Gaps: [ left: 5 right: 5 top: 0 bottom: 0 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 960 parent: 0 } + ] + } + Children: + [ + Component btnOk + { + #keys: '[414502.0.18234566]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+O' + Text: '&OK' + ] + } + Component btnCancel + { + #keys: '[414502.0.18234574]' + BaseType: 'Button' + Properties: + [ + LayoutGroup: 'dlgButtons' + Shortcut: 'Alt+C' + Text: '&Cancel' + ] + } + ] + Properties: + [ + Border: false + Location: 'bottom' + Size: 26 + ModeledStringList ChildOrdering + { + c: btnOk + c: btnCancel + } + ] +} diff --git a/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Method_OpenDialog.def b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Method_OpenDialog.def new file mode 100644 index 0000000..9019ae7 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Method_OpenDialog.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenDialog ( + internal[GUIComponent] parent +) id:Method_StockpointDataTestDialog_OpenDialog +{ + #keys: '[414502.0.18237141]' + Body: + [* + testResult := MacroPlan.TestDataConnect("TestStockpoint"); + + Label310.Text( testResult ); + + + this.DoModal( parent ); + *] +} diff --git a/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnCancel_OnClick.def b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnCancel_OnClick.def new file mode 100644 index 0000000..e57510c --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnCancel_OnClick.def @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: Toolbar309/btnCancel +Response OnClick () id:Response_Toolbar309_btnCancel_OnClick +{ + #keys: '[414502.0.18234581]' + Body: + [* + Dialog.EndModal(-1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnOk_OnClick.def b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnOk_OnClick.def new file mode 100644 index 0000000..2b3730d --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/Response_Toolbar309_btnOk_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: Toolbar309/btnOk +Response OnClick () id:Response_Toolbar309_btnOk_OnClick +{ + #keys: '[414502.0.18234573]' + Body: + [* + Dialog.ApplyChanges(); + Dialog.EndModal(1); + *] + DefinitionID: 'Responsedef_GUIButtonBase_OnClick' +} diff --git a/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/_ROOT_Component_StockpointDataTestDialog.def b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/_ROOT_Component_StockpointDataTestDialog.def new file mode 100644 index 0000000..0aadd85 --- /dev/null +++ b/_Main/UI/MacroPlanner/Component_StockpointDataTestDialog/_ROOT_Component_StockpointDataTestDialog.def @@ -0,0 +1,55 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlanner +OrphanComponent StockpointDataTestDialog +{ + #keys: '[414502.0.18234537]' + BaseType: 'Dialog' + GBLayout + { + Type: 'internal[GBLayoutDefinition]' + Columns: + [ + GBFlow.Column { grow: 0 id: 423 parent: 0 } + ] + Elements: + [ + GBElement + { + Component => Label310 + Position { startcolumn: 423 startrow: 569 endcolumn: 423 endrow: 569 } + } + ] + Gaps: [ left: 10 right: 10 top: 10 bottom: 10 inner: 5 ] + Rows: + [ + GBFlow.Row { grow: 0 id: 569 parent: 0 } + ] + } + Children: + [ + #child: Toolbar309 + Component Label310 + { + #keys: '[414502.0.18237441]' + BaseType: 'Label' + Properties: + [ + Transparent: true + ] + } + ] + Properties: + [ + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + Height: 108 + Title: 'Stockpoint Data Test' + Width: 121 + ModeledStringList ChildOrdering + { + c: Label310 + c: Toolbar309 + } + ] +} diff --git a/_var/_Main/Data/.keep b/_var/_Main/Data/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/_var/_Main/Data/.keep diff --git a/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Change_1086.kbc b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Change_1086.kbc new file mode 100644 index 0000000..775e999 --- /dev/null +++ b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Change_1086.kbc @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<KBSChange:KBSChange + xmlns:KBSChange="KBSChange" + xmlns:KBRevisionElementID="KBRevisionElementID" + xmlns:KBElementID="KBElementID"> + <KBSChange:ChangeNr>1086</KBSChange:ChangeNr> + <KBSChange:User>quintiq/yypsybs</KBSChange:User> + <KBSChange:Description>123</KBSChange:Description> + <KBSChange:Category></KBSChange:Category> + <KBSChange:CreationTime>2023-08-24T14:48:03</KBSChange:CreationTime> + <KBSChange:Elements> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>45</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>AccountTypes</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>1</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>BusinessTypes</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>47</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>CostDriverRules</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>17</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>DemoScenario</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>57</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>NonFinancialKPI</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>31</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>SanityCheckCategories</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>23</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>ScenarioStatus</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>60</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>SolverSettings</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:KBRevisionElementID> + <KBRevisionElementID:Revision>532</KBRevisionElementID:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>TestInstances</KBElementID:Name> + </KBElementID:KBElementID> + </KBRevisionElementID:KBRevisionElementID> + </KBSChange:Elements> +</KBSChange:KBSChange> diff --git a/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.elm b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.elm new file mode 100644 index 0000000..4ec4fb5 --- /dev/null +++ b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.elm @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<KBSElementRevision:KBSElementRevision + xmlns:KBSElementRevision="KBSElementRevision" + xmlns:KBElementID="KBElementID"> + <KBSElementRevision:Revision>1</KBSElementRevision:Revision> + <KBElementID:KBElementID> + <KBElementID:Kind>Table</KBElementID:Kind> + <KBElementID:Name>BusinessTypes</KBElementID:Name> + </KBElementID:KBElementID> +</KBSElementRevision:KBSElementRevision> diff --git a/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.xml b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.xml new file mode 100644 index 0000000..cd052a9 --- /dev/null +++ b/_var/_Main/KBs/MacroPlanner/ScenarioManager/KB/1.0.0.0/Table_BusinessTypes_1.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<table> + <name>BusinessTypes</name> + <column> + <name>BusinessType</name> + <label>BusinessType</label> + <type>String</type> + <cell value="aaa"/> + <cell value="bbb"/> + </column> +</table> -- Gitblit v1.9.3