From 89c96171bb971dcaed7cf289b58ef44ca689523c Mon Sep 17 00:00:00 2001
From: limj <limj@taizhitech.com>
Date: 星期四, 21 九月 2023 09:11:20 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lmj

---
 _Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl                                                                                        |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth10.qbl                                                                               |    8 
 _Main/BL/Relations/Relation_Global_MappingActualProductInStockingPointInPeriod_GlobalOTDTable_G.qbl                                               |   23 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorDateTime.qbl                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def                                                  |   27 
 _Main/BL/Type_Global_MappingOperation/Attribute_ActualCapacity.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData#844.def                                                                        |    2 
 _Main/BL/EDI/Broker_Broker_OTD_Product.qbl                                                                                                        |    1 
 _Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_UnitID.qbl                                                                                 |    7 
 _Main/BL/Type_PRData/Function_CalcSendTimeString.qbl                                                                                              |   18 
 _Main/BL/Type_Product_MP/Attribute_BusinessTypeCommon.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_ListPanelMaterialVehicle.def                                             |   41 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth3.qbl                                                                                |    8 
 _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl                                             |   12 
 _Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl                                                                   |   23 
 _Main/BL/Relations/Relation_Global_MappingCustomOrder_GlobalOTDTable_GlobalOTDTable_Global_Mapp.qbl                                               |   23 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl                                                                                              |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl                                                                                             |    8 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Date.qbl                                                               |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def                                                        |   29 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def                                                               |   43 
 _Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl                                                                          |   19 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_UnitOfMeasureName.qbl                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def                                                  |   22 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRowProduct_CapacityAndSaleBudgeChartRow_Ca.qbl                                               |   23 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_BrokerName.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_MenuIssueEdit.def                                                              |   25 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl                                                                         |   44 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def                                         |   17 
 _Main/BL/Type_Global_MappingLaneLeg/Attribute_UserLeadTime.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def                                                         |    2 
 _Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def                                                                     |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def                                           |   10 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityEquivalent.qbl                                                                                   |    8 
 _Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl                                                                                       |    5 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationUnitOfMeasure_MP.qbl                                                                     |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def                         |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def                                                            |   41 
 _Main/BL/Type_Global_MappingOperation/Attribute_PlantName.qbl                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def                                                                       |    8 
 _Main/BL/Type_Global_MappingProduct_MP/TypeIndex_TypeIndexIDAndBusinessType.qbl                                                                   |   16 
 _Main/BL/EDI/Broker_Broker_OTD_Operation.qbl                                                                                                      |    1 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth3.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblAutomotiveElectronics_OnCreated.def                            |   17 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl                                                                                                |    8 
 _Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl                                                                            |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def                                                                               |   42 
 _Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl                                                                                   |    8 
 _Main/BL/Type_GlobalDTOTable/Method_ApiBuildPostRequestBody.qbl                                                                                   |   27 
 _Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime#567.qbl                                                                                     |    8 
 _Main/BL/Type_PRData/Attribute_IsLongLeadItem.qbl                                                                                                 |    8 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl                                                                    |    6 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def                                                        |   28 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth4.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnDataChanged.def            |   19 
 _Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl                                                                                     |   49 
 _Main/BL/Type_Global_MappingOperation/_ROOT_Type_Global_MappingOperation.qbl                                                                      |    9 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def                                                        |   28 
 _Main/BL/Type_H_MessagePassing/Attribute_Value.qbl                                                                                                |    8 
 _Main/BL/Type_Global_MappingConversionFactor/Attribute_ProductID.qbl                                                                              |    8 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorNo.qbl                                                                                       |    7 
 _Main/BL/Type_Global_MappingForecast/Attribute_EndDate.qbl                                                                                        |    7 
 _Main/BL/Type_MacroPlan/Method_MappingProductData.qbl                                                                                             |   45 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def                                                                          |   41 
 _Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl                                                               |   23 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowNo.qbl                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def                                                                              |   25 
 _var/_Main/ModelSettings/Common/Dev-40/_ROOT_Role_Dev-40.properties                                                                               |  575 +
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def                                         |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlActions.def                                                                   |   40 
 _Main/BL/Type_Global_MappingForecast/Attribute_StartDate.qbl                                                                                      |    7 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentOutputRate.qbl                                                                        |    7 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_PlannedQuantity.qbl                                                                  |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_NumberOfMask.qbl                                                                                         |    8 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_UserQuantity.qbl                                                                            |    7 
 _Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl                                                                                                   |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth4.qbl                                                                                |    8 
 _Main/BL/Type_Global_MappingInventorySupply/_ROOT_Type_Global_MappingInventorySupply.qbl                                                          |    9 
 _Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByHalfYear.qbl                                                                              |   24 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl                                                                                           |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl                                                         |   20 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl                                                             |   17 
 _Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByYear.qbl                                                                                  |   20 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl                                                        |   20 
 _Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl                                                                                             |    8 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentCode.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listContextMenuPanelMaterialSportsHealth.def                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def                                                  |   27 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSportsHealth_OnCreated.def                                     |   17 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl                                                                                          |    8 
 _Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl                                                                             |   14 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def                                                        |   28 
 _Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/_ROOT_Component_FormPanelMaterialVehicle.def                                       |   50 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_CopyScenario.def                                                            |   29 
 _Main/BL/Relations/Relation_MasterPlanReleaseWorkOrder_MacroPlan_MacroPlan_MasterPlanReleaseWor.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def                                                                     |   12 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl                                                           |   17 
 _Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx#234.def                                                            |   45 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_IsCommon.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblMaterialVehicle_OnCreated.def                                  |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def                                                    |   27 
 _Main/BL/Type_PRData/Attribute_IsPanelMaterial.qbl                                                                                                |    8 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_IsAvailable.qbl                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Method_FusionData.def                                                                      |   10 
 _Main/BL/Type_MappingOperation/TypeIndex_MappingOperationTypeIndex.qbl                                                                            |   18 
 _Main/BL/EDI/Broker_Broker_OTD_BaseConversionFactor.qbl                                                                                           |    4 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingSalesSegment_MP_Global_MappingSalesSeg.qbl                                               |   23 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentType.qbl                                                                              |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def                                                                    |   16 
 _Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def                                                       |  132 
 _Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl                                                                                                |  197 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth1.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def                                                         |   28 
 _Main/BL/Type_H_Forecast/Attribute_Util.qbl                                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def                                                                              |   50 
 _Main/BL/Type_Global_MappingLaneLeg/Attribute_DestinationStockingPointID.qbl                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData#844.def                                                       |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def                                                  |   26 
 _Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def                                        |   10 
 _Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl                                                                                                  |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixeditorContextMenuCapacityAndSaleBudgeCompare.def            |   10 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_BusinessType.qbl                                                                                |    7 
 _Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl                                                         |   23 
 _Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl                                                         |   12 
 _Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl                                                                                    |   10 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_ID.qbl                                                                                      |    8 
 _Main/BL/Type_Global_MappingLane/Attribute_ID.qbl                                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw                                                                                             |  183 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_Name.qbl                                                                                          |    7 
 _Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl                                                                                  |   10 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_ManufacturedDate.qbl                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def                                                        |   28 
 _Main/BL/Type_PRData/StaticMethod_TestData.qbl                                                                                                    |    2 
 _Main/BL/Type_Global_MappingCurrency_MP/Attribute_ID.qbl                                                                                          |    7 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ActualInventoryLevelEnd.qbl                                            |    7 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl                                                                          |   70 
 _Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByYear.qbl                                                                                   |   20 
 _Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_ParentName.qbl                                                                              |    7 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl                                                                                    |    8 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderID.qbl                                                                                     |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth1.qbl                                                                              |    8 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_CommonBusiness.qbl                                                                               |    7 
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning#662.qbl                                                                                      |   32 
 _Main/BL/Type_Global_MappingUnitOfMeasure_MP/TypeIndex_TypeIndexName.qbl                                                                          |   12 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM17.qbl                                                                      |   41 
 _Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl                                               |   23 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_Price.qbl                                                                                       |    7 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_Name.qbl                                                                                         |    7 
 _Main/BL/Type_Global_MappingSalesSegment_MP/TypeIndex_TypeIndexBusinessTypeAndName.qbl                                                            |   16 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ProductID.qbl                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listContextMenuPanelMaterialTM.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def                                                        |   22 
 _Main/BL/Type_PRHistoryData/Function_CalcSendTimeString.qbl                                                                                       |   17 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def                                                  |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnDataChanged.def      |   19 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialIT.qbl                                                                        |   41 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth2.qbl                                                                                |    8 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl                                                               |   48 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def                                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def                                            |   28 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_ListPanelMaterialSportsHealth.def                                   |   41 
 _Main/BL/Type_H_Forecast/Attribute_Serial.qbl                                                                                                     |    8 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_AccountName.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def                                                                         |   42 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def                                                 |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/_ROOT_Component_FormPanelMaterialIT.def                                                              |   39 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ManufacturedDate.qbl                                                   |    7 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_BusinessType.qbl                                                                                 |    8 
 _Main/BL/Type_Global_MappingForecast/Attribute_Quantity.qbl                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def                                                  |   25 
 _Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl                                                                                                     |    8 
 _Main/BL/Type_Product_MP/Attribute_KeyProduct.qbl                                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def                                                               |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl                                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_ListPanelMaterialAutomotiveElectronics.def                 |   41 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl                                                      |   20 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl                                                                             |   16 
 _Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl                                                         |   23 
 _Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl                                                                         |   48 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_DisplayTechnology.qbl                                                                                 |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnDataChanged.def                                        |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def                                                        |   20 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationStockingPoint_MP.qbl                                                                     |    8 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_TimeUnit.qbl                                                                                       |    7 
 _Main/BL/Type_MPSync/StaticMethod_TestData.qbl                                                                                                    |   43 
 _Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Component_SplitterWndScenarioManager.def                                             |  113 
 _var/_Main/ModelSettings/Common/Dev-42/_ROOT_Role_Dev-42.properties                                                                               |  575 +
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def                                                             |   10 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth2.qbl                                                                              |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl                                                                                             |    8 
 _Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl                                                                                         |   78 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_Description.qbl                                                                             |    7 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationSalesSegment_MP.qbl                                                                      |   31 
 _Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByMonth.qbl                                                                                  |   21 
 _Main/BL/Type_PRData/Method_DoCall.qbl                                                                                                            |    6 
 _Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnCancel_OnClick.def                                                  |   15 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPointCost_Global_MappingStocki.qbl                                               |   23 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl                                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def                                                  |   27 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Description.qbl                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnCreated.def                                                             |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnDataChanged.def                                                         |   19 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductModel.qbl                                                                     |    8 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl                                                                               |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnCreated.def                                      |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def                                      |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def                                                         |   60 
 _Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl                                                                                                  |  200 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def                                                                          |   23 
 _Main/BL/Type_Global_MappingStockingPoint_MP/_ROOT_Type_Global_MappingStockingPoint_MP.qbl                                                        |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listContextMenuPanelMaterialAutomotiveElectronics.def      |   10 
 _Main/BL/Type_Global_MappingForecast/Attribute_ID.qbl                                                                                             |    8 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl                                                                                   |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl                                                                                      |    8 
 _Main/BL/Type_ERPRequestOfPR/Method_GetCallJSONString.qbl                                                                                         |   28 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnCreated.def          |   19 
 _Main/BL/Type_PRData/Attribute_MaterialMRPType.qbl                                                                                                |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl                                                                                           |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_Deleted.qbl                                                                                              |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth7.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def                                               |   21 
 _Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl                                                                                           |   82 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_CostDriver.qbl                                                                                     |    7 
 _Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSportsHealth.qbl                                                              |   41 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def                                                        |   28 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl                                                                                 |  233 
 _Main/BL/Type_Global_MappingLane/Attribute_Name.qbl                                                                                               |    7 
 _Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl                                                                                 |    8 
 _Main/BL/Type_H_TestMap/Attribute_SKU.qbl                                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def                                                       |   28 
 _Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl                                                                                |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM17_OnCreated.def                                             |   17 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_ProductID.qbl                                                                                      |    7 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/_ROOT_Type_CapacityAndSaleBudgeChartRow.qbl                                                            |    9 
 _Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def                                                         |   24 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_BusinessType.qbl                                                                               |    8 
 _Main/BL/Type_Global_MappingProductInLane/_ROOT_Type_Global_MappingProductInLane.qbl                                                              |    9 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSTotal.qbl                                                                                   |    8 
 _Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl                                                                                                  |    8 
 _Main/BL/Type_MappingSaleBudge/Method_GetSaleAmountInYear.qbl                                                                                     |   15 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth9.qbl                                                                                   |    8 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl                                                                                              |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl                                                                                         |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ProductInLane.qbl                                                        |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def                                                                     |   52 
 _Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl                                                                            |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def                                                           |   10 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductMajorType.qbl                                                                             |    7 
 _Main/BL/Type_Global_MappingForecast/Attribute_CurrencyID.qbl                                                                                     |    7 
 _Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl                                                                                      |   10 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountTotal.qbl                                                                                      |    8 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingConversionFactor_Global_MappingConvers.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listContextMenuPanelMaterialVehicle.def                                  |   10 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl                                                      |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def                                                        |   27 
 _Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def                                                                     |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def                                                        |   41 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitUsageOfComponents.qbl                                                                      |    7 
 _Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl                                                                                                |    8 
 _Main/BL/Type_H_TestMap/Attribute_Unit.qbl                                                                                                        |    8 
 _Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ColumnTitles511.def                                                                |   18 
 _Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_id.qbl                                                                                     |    7 
 _Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl                                                                                       |    2 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialUnit.qbl                                                                    |    7 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_SuccessDateTime.qbl                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def                 |   39 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_OrganCode.qbl                                                                                  |    8 
 _Main/BL/Type_Global_MappingOperation/Attribute_SequenceNumber.qbl                                                                                |    8 
 _Main/BL/Type_Global_MappingOperation/Attribute_OrganCode.qbl                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnDataChanged.def                                        |   19 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductCode.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def                                                                     |   52 
 _Main/BL/Type_Global_MappingOperation/Attribute_BusinessType.qbl                                                                                  |    8 
 _Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl                                                                                          |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_OrgCode.qbl                                                                                              |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl                                                                                             |    7 
 _Main/BL/Type_Global_MappingForecast/Attribute_SalesSegmentName.qbl                                                                               |    7 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByBusinessType.qbl                                                         |   18 
 _Main/BL/Type_Global_MappingProductInLane/Attribute_ProductID.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Method_Edit.def                                                              |   25 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductUnitDescription.qbl                                                                     |    7 
 _Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl                                                                                                 |    8 
 _Main/BL/Type_Global_MappingOperation/Attribute_UnitOfMeasureName.qbl                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def                                                             |   10 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_StockingPointID.qbl                                                                         |    7 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTianHua.qbl                                                                   |   41 
 _Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/DefaultValue_ProductCode.qbl                                                                    |    6 
 _Main/BL/Type_PRHistoryData/Function_CalcReceiveTimeString.qbl                                                                                    |   17 
 _Main/BL/Type_PRHistoryData/Attribute_ReceiveTimeString.qbl                                                                                       |    7 
 _Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl                                                                              |   48 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def                                                  |   29 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def                                              |   10 
 _Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl                                                                         |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def                                                         |   10 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorMessage.qbl                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def                                        |   44 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationBOM_Global_MappingOperationBO.qbl                                               |   23 
 SOPWorkflow/Translations/UI/SOPWorkflowWeb/Translations_zh.qtr                                                                                    |    0 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_Cost.qbl                                                                                           |    7 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/StaticMethod_Export.qbl                                                                        |   38 
 _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl                                                                                |  258 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl                                                                                      |    8 
 _Main/BL/Type_Global_MappingOperation/Attribute_Line.qbl                                                                                          |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl                                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl                                                                            |   15 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl                                                                |    6 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl                                                                                   |    7 
 _Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl                                                                                  |   50 
 _Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl                                                             |   36 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def                                    |   16 
 _Main/BL/Type_PRData/Attribute_SendTIme.qbl                                                                                                       |    2 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnCancel_OnClick.def                                    |   15 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth5.qbl                                                                              |    8 
 _Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl                                                                                       |    7 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_SubstitutionRelationship.qbl                                                                   |    7 
 _Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl                                                                                           |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetTotal.qbl                                                                                 |    8 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_CapacityEquivalent.qbl                                                                                |    6 
 _Main/BL/Type_Global_MappingOperation/Attribute_ProductID.qbl                                                                                     |    8 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_UnitOfMeasureName.qbl                                                                           |    7 
 _Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def                                                     |   31 
 _Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex#123.qbl                                            |   24 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_ID.qbl                                                                                           |    8 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_ID.qbl                                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnCreated.def                            |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def                                                           |   41 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Start.qbl                                                                                   |    7 
 _Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl                                                                                          |   10 
 _Main/BL/Type_Global_MappingForecast/_ROOT_Type_Global_MappingForecast.qbl                                                                        |    9 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl                                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnDataChanged.def                                  |   19 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear#1.qbl                                                                          |   21 
 _Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl                                                                                   |    4 
 _Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl                                                                                                   |    8 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_Cost.qbl                                                                                  |    7 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl                                                                                     |   20 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl                                                           |    2 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth7.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def                                                                |   10 
 _Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl                                                                                              |   21 
 _Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl                                                                                              |    8 
 _Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl                                                                                                 |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth8.qbl                                                                              |    8 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl                                                                                |   44 
 _var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties                                                                               |   49 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl                                                         |   38 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSpecializedDisplay.qbl                                                        |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def                      |   27 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl                                                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def     |   16 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def                                                  |   26 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl                                                           |   20 
 _Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate#168.qbl                                                                                 |    2 
 _Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl                                                                                          |   11 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def                                           |   30 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_TimeStringAndScenarioName.qbl                                                            |    7 
 _Main/BL/Type_Global_MappingLane/Attribute_UnitID.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def                                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def |   10 
 _Main/BL/Type_Global_MappingLane/_ROOT_Type_Global_MappingLane.qbl                                                                                |    9 
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl                                                                                          |    5 
 _Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl                                                                                                 |    8 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_StockingPointID.qbl                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def                                                 |   30 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def                                                  |   25 
 _Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl                                                                            |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def                          |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def                                              |   39 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnNo.qbl                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def                                                           |   44 
 _Main/BL/Type_Global_MappingOperation/Attribute_MaximumQuantity.qbl                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def                                  |   85 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def                        |    2 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth6.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnDataChanged.def                          |   19 
 _Main/BL/Type_Global_MappingConversionFactor/Attribute_Factor.qbl                                                                                 |    7 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitOfMeasureName.qbl                                                                          |    7 
 _Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def                                                                  |   10 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductDescribe.qbl                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlActions.def                                                     |   40 
 _Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl                                                                                               |  208 
 _Main/BL/Type_MappingOperation/Attribute_SequenceNumber.qbl                                                                                       |    1 
 _Main/BL/Type_H_Forecast/Attribute_CustomName.qbl                                                                                                 |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl                                                                                         |    8 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductID.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def                                                                 |   44 
 _Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl                                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl                                                                                 |   15 
 _Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl                                                       |   40 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def                                                                       |   21 
 _Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/Attribute_ProductCode.qbl                                                                       |    8 
 _Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl                                                                                        |    8 
 _Main/BL/Type_Global_MappingOperation/Attribute_UserLeadTime.qbl                                                                                  |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl                                                              |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def                       |   98 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth8.qbl                                                                                   |    8 
 _Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl                                                                            |    2 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl                                                                                                |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def                                                                       |   49 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_Start.qbl                                                                                 |    7 
 _Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl                                                                              |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def                                                |   10 
 _Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl                                                                        |   10 
 _Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl                                                                                                  |    8 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingUnitOfMeasure_MP_Global_MappingUnitOfM.qbl                                               |   23 
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizeOrders.qbl                                                                                         |   31 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/_ROOT_Type_CapacityAndSaleBudgeChartElement.qbl                                                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelIssueWorkOrder.def                                                        |   14 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_ID.qbl                                                                                          |    8 
 _Main/BL/Type_Global_MappingUnitOfMeasure_MP/_ROOT_Type_Global_MappingUnitOfMeasure_MP.qbl                                                        |    9 
 _Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl                                                                                                 |   38 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF#670.def                                                    |   43 
 _Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl                                                                                             |    8 
 _Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl                                                                       |   23 
 _Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/_ROOT_Type_CapacityAndSaleBudgeChartRowProduct.qbl                                              |    9 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl                                                               |   17 
 _Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl                                                                                              |   55 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_ShelfLife.qbl                                                                                    |    7 
 _Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl                                                                                  |   72 
 _Main/BL/Type_Global_MappingConversionFactor/Attribute_SourceUnitOfMeasureName.qbl                                                                |    8 
 _Main/BL/Type_Global_MappingProduct_MP/_ROOT_Type_Global_MappingProduct_MP.qbl                                                                    |    9 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl                                                                      |   18 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_SalesSegmentName.qbl                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonIDownload_OnClick.def                                         |   25 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl                                                          |   20 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl                                                     |   20 
 _Main/BL/Type_Global_MappingProductInLane/Attribute_LineID.qbl                                                                                    |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfArray.qbl                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlReceiveDatas.def                                                              |   98 
 _Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_BusinessType.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def                                                                     |   22 
 _Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl                                                           |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def                                                           |   10 
 _Main/BL/Type_PRHistoryData/Method_PrintCall.qbl                                                                                                  |   23 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl                                                                                  |   26 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth6.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def                                                         |   23 
 _Main/BL/Relations/Relation_Global_MappingInventorySupply_GlobalOTDTable_GlobalOTDTable_Global_.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/_ROOT_Component_DialogCreateEditIssueWorkOrder.def                           |   42 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def                                                                    |   10 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLaneLeg_Global_MappingLaneLeg_GlobalOT.qbl                                               |   23 
 _Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged#567.def                                 |   16 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData#1.def                                                               |   11 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderDate.qbl                                                                                   |    7 
 _Main/BL/Type_Global_MappingLane/Attribute_UserLeadTime.qbl                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def                                                        |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def                                             |   63 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductionWorkOrderNumber.qbl                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listContextMenuPanelMaterialTianHua.def                                  |   10 
 _Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl                                                                                            |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl                                                                   |   17 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth11.qbl                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def                 |   29 
 _Main/BL/Type_MappingProduct/TypeIndex_MappingProductTypeIndex.qbl                                                                                |    4 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl                                                                  |   17 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def                                                      |   19 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialType.qbl                                                                    |    7 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeRate.qbl                                                                            |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth11.qbl                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/_ROOT_Component_FormPanelMaterialTM17.def                                             |   39 
 _Main/BL/Type_MacroPlan/Method_ApiLanesData.qbl                                                                                                   |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def                                                     |   41 
 _Main/BL/Type_MappingForecast/StaticMethod_GetQuantityBySeason.qbl                                                                                |   24 
 _Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl                                                                                |   10 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialAutomotiveElectronics.qbl                                                     |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listActionBarPagePanelMaterialIT.def                                                       |   10 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/_ROOT_Type_Global_MappingActualProductInStockingPointInPeriod.qbl                |    9 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl                                                                                                   |    8 
 _Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Response_ListGlobal_BrokerExecuteLog_MenuDelete_OnClick.def                                  |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnDataChanged.def                        |   19 
 _Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl                                                                               |    7 
 _Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ListGlobal_BrokerExecuteLog.def                                                    |  117 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlContent.def                                                     |  100 
 _Main/BL/Type_H_Forecast/Attribute_Department.qbl                                                                                                 |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl                                                                                     |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl                                                     |   20 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl                                                                          |   51 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth5.qbl                                                                                   |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnException.qbl                                                                                               |   20 
 _Main/BL/Type_Global_MappingForecast/Attribute_StockingPointID.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listContextMenuPanelMaterialSpecializedDisplay.def            |   10 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockType.qbl                                                          |    7 
 _Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl                                                                                          |  107 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfMask.qbl                                                                                      |    6 
 LibMacroPlannerWebUI/Translations/UI/LibMacroPlannerWebUI/Translations_zh.qtr                                                                     |    0 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_StockingPointID.qbl                                                                       |    7 
 _Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl                                                                                                   |  151 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnCreated.def                              |   19 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl                                                                                      |   39 
 _Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl                                                                                        |    8 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_Date.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def                              |   37 
 _Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl                                                                         |    2 
 _Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl                                                             |   23 
 _Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl                                                                                                    |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth9.qbl                                                                              |    8 
 _Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl                                                                                            |    7 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl                                                                                        |   31 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_OrgCode.qbl                                                                                        |    7 
 _Main/BL/Type_H_Forecast/Attribute_SKU.qbl                                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def                                                  |   26 
 _Main/BL/Type_Global_MappingLaneLeg/_ROOT_Type_Global_MappingLaneLeg.qbl                                                                          |    9 
 _Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl                                                                                              |   47 
 _Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl                                                                           |   23 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl                                                                                |   21 
 _Main/BL/Type_Global_MappingConversionFactor/Attribute_TargetUnitOfMeasureName.qbl                                                                |    8 
 _Main/BL/Type_Global_MappingLaneLeg/Attribute_LaneID.qbl                                                                                          |    7 
 _Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl                                                                                              |    8 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_MaterialDescription.qbl                                                              |    8 
 _Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl                                                               |   12 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth12.qbl                                                                                  |    8 
 _Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByYear.qbl                                                                                      |   20 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPoint_MP_Global_MappingStockin.qbl                                               |   23 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth9.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def                                         |   18 
 _Main/BL/Type_Global_MappingUnitCost/_ROOT_Type_Global_MappingOperationCost.qbl                                                                   |    9 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth12.qbl                                                                             |    8 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ProcessSection.qbl                                                                             |    8 
 _Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl                                                                            |   19 
 _Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_DisplayIndex.qbl                                                                            |    7 
 _Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl                                                                                    |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def                                                        |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_ListPanelMaterialTianHua.def                                             |   41 
 _Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByMonth.qbl                                                                                     |   22 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_LengthOfTime.qbl                                                                                   |    7 
 _Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl                                                                                      |   28 
 _Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def                                                            |   10 
 _Main/BL/Relations/Relation_MasterPlanReleaseWorkOrderTabulation_MasterPlanReleaseWorkOrder_Mas.qbl                                               |   23 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialVehicle.qbl                                                                   |   41 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl                                                               |   17 
 _Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl                                                                                                  |   10 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl                                                                                            |    8 
 _Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_ListPanelMaterialTM.def                                                     |   41 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def                                                             |   10 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl                                                                                          |    8 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_BusinessType.qbl                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def                                                                          |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listContextMenuPanelMaterialIT.def                                                         |   10 
 _Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_IsDefault.qbl                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def                           |   21 
 _Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl                                                                                                |   10 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth4.qbl                                                                                   |    8 
 _Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def                                   |   30 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl                                                            |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def                                                             |   41 
 _Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl                                                                                              |  142 
 _Main/BL/Type_Global_MappingForecast/Attribute_BusinessType.qbl                                                                                   |    7 
 _Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl                                                                                            |  152 
 _Main/BL/Type_Global_MappingConversionFactor/_ROOT_Type_Global_MappingConversionFactor.qbl                                                        |    9 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def                                                  |   27 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlSelectVersion.def                                                             |   46 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def                                        |   29 
 _Main/BL/Type_Global_MappingForecast/Attribute_Price.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTianHua_OnCreated.def                                          |   17 
 _Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInYear.qbl                                                                                |   15 
 _Main/BL/EDI/Broker_GlobalOTDTable_Product_MP.qbl                                                                                                 |  169 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def                                                  |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def                                                                              |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def                                                             |    1 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProduct_MP_Global_MappingProduct_MP_Gl.qbl                                               |   23 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfCut.qbl                                                                                       |    6 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterial.qbl                                                           |    7 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl                                                    |   20 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Method_GetProductCodes.qbl                                                                       |   10 
 _Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyBySeason.qbl                                                                                    |   21 
 _Main/BL/Type_ManufactureLTImputation/StaticMethod_NewStaticMethod.qbl                                                                            |    9 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_Quantity.qbl                                                                                    |    7 
 _Main/BL/Type_Global_MappingCustomOrder/_ROOT_Type_Global_MappingCustomOrder.qbl                                                                  |    9 
 _Main/BL/Type_Global_MappingSalesSegment_MP/_ROOT_Type_Global_MappingSalesSegment_MP.qbl                                                          |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listActionBarPagePanelMaterialTM.def                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def                                                                       |   25 
 _Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByHalfYear#1.qbl                                                                                |   21 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductType.qbl                                                                                |    7 
 _Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl                                                                                   |    8 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperation_Global_MappingOperation_Glob.qbl                                               |   23 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_Notes.qbl                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartContextMenuCapacityAndSaleBudge.def                            |   10 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockingPointID.qbl                                                    |    8 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_ProductID.qbl                                                                             |    7 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentDescription.qbl                                                                       |    7 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl                                                                              |   21 
 _Main/BL/Type_PRHistoryData/Attribute_SendTimeString.qbl                                                                                          |    7 
 _Main/BL/Type_Global_MappingForecast/Attribute_PriorityName.qbl                                                                                   |    7 
 KpiTracker/Translations/UI/KPITrackerWeb/Translations_zh.qtr                                                                                      |    0 
 _Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl                                                                    |   12 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_StartDate.qbl                                                                        |    8 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_EndDate.qbl                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick#124.def                           |   22 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth3.qbl                                                                                   |    8 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl                                                                          |   30 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl                                                                          |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def                                         |   21 
 _Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl                                                                         |    2 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderLineID.qbl                                                                                 |    7 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl                                                                             |   43 
 _Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl                                                               |   23 
 _Main/BL/Type_PRData/Attribute_IsGenericMaterial.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPR_OnClick.def                                  |   28 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl                                                             |   20 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_AccountName.qbl                                                                           |    7 
 _Main/BL/Type_Global_MappingUnitCost/Attribute_Start.qbl                                                                                          |    7 
 _Main/BL/Type_Global_MappingOperation/Attribute_ProcessSection.qbl                                                                                |    8 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnitDescription.qbl                                                                   |    7 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl                                                            |   17 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_ButtonFusionData_OnClick.def                                              |   17 
 _Main/BL/Type_PRData/Method_PrintCall.qbl                                                                                                         |   47 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def                                                  |   37 
 _Main/BL/Type_MappingSaleBudge/Attribute_Resolution.qbl                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartActionBarPageCapacityAndSaleBudge.def                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlContent.def                                                                   |   16 
 _Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl                                                                                        |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl                                                             |   20 
 _Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl                                                                                          |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl                                                                                               |    8 
 _Main/BL/Type_PRData/Attribute_SendTimeString.qbl                                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listActionBarPagePanelMaterialSportsHealth.def                      |   10 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth10.qbl                                                                                  |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_ID.qbl                                                                                                      |    8 
 _Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl                                                                                                 |    8 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/_ROOT_Type_Global_MappingCurrencyRate_MP.qbl                                                          |    9 
 _Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl                                                 |   12 
 _Main/BL/Type_Global_MappingOperation/Attribute_OrganName.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listActionBarPagePanelMaterialTM.def                                        |   10 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrencyRate_MP_Global_MappingCurrency.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick#623.def                                            |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listActionBarPagePanelMaterialSpecializedDisplay.def          |   10 
 _Main/BL/Type_Lane/StaticMethod_CreateLaneFromJson.qbl                                                                                            |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/_ROOT_Component_FormPanelMaterialAutomotiveElectronics.def           |   39 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl                                               |    5 
 _Main/BL/Type_Global_MappingForecast/Attribute_UnitOfMeasureName.qbl                                                                              |    7 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ElementTotal.qbl                                                                                  |    7 
 _Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl                                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl                                                                                 |   20 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl                                                                                          |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl                                                                              |   15 
 _Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInSeason.qbl                                                                              |   19 
 _Main/BL/Type_Global_BrokerExecuteLog/_ROOT_Type_Global_BrokerExecuteLog.qbl                                                                      |    9 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl                                                                                   |   22 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def                                                           |   36 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData#1.def                                              |   11 
 _Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_Name.qbl                                                                                   |    8 
 _Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl                                                                                              |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl                                                                                            |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth2.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_ListPanelMaterialTM.def                                                     |   41 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl                                   |   20 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterialUnits.qbl                                                      |    7 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl                                                                |   17 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_CurrencyID.qbl                                                                              |    7 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl                                                            |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def                                           |   39 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnit.qbl                                                                              |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl                                                                                           |    8 
 _Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl                                                                                                |    8 
 _Main/BL/Type_Global_MappingConversionFactor/Attribute_IsEnabled.qbl                                                                              |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl                                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixEditorActionBarPageCapacityAndSaleBudgeCompare.def          |   10 
 _Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_Name.qbl                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM18_OnCreated.def                                             |   17 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationCost_Global_MappingOperationC.qbl                                               |   23 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderStatus.qbl                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def                                                         |   10 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_SupplyType.qbl                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def                                                |   15 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def                                                                    |   10 
 _Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp                                                                                   |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def                                                       |   39 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl                                                                                               |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl                                                                                                |    8 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_IsSuccess.qbl                                                                                     |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth6.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def                                                           |   27 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def                                                          |   26 
 _Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl                                               |   23 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl                                                                    |   17 
 _Main/BL/Type_PRData/Attribute_LeadTime.qbl                                                                                                       |    8 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_CostDriver.qbl                                                                            |    7 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def                                                                          |   60 
 _Main/BL/Type_Global_MappingCurrency_MP/Attribute_IsBase.qbl                                                                                      |    7 
 _Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl                                                                                                |   11 
 _Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl                                                                    |    2 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl                                                                                         |    8 
 _Main/BL/EDI/Broker_GlobalOTDTable_SalesSegment_MP.qbl                                                                                            |   92 
 _Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Response_TIANMA_JITUAN_SplitterWndScenarioManager_Button897_OnClick.def              |   12 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnOk_OnClick.def                                                      |   30 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl                                                                                               |    8 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_OrgCode.qbl                                                                                           |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def                                               |   55 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def                                                       |   39 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByPlaceOfProductionOfArray.qbl                                             |   18 
 _Main/BL/Type_Global_MappingForecast/Attribute_ProductID.qbl                                                                                      |    7 
 _Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/_ROOT_Component_FormBrokerExecuteLog.def                                                     |   41 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_PlaceOfProductionOfArray.qbl                                                                 |    8 
 _Main/BL/Type_PRData/StaticMethod_ExportTheFileStream#595.qbl                                                                                     |   12 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_Quantity.qbl                                                                             |    7 
 _Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl                                                     |   16 
 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def                                                               |   27 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def                                                                              |   16 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def                                                                  |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl                                                                        |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def                              |   44 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/DefaultValue_BusinessType.qbl                                                                          |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuPrintRequest_OnClick#338.def                           |   19 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl                                                                                          |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl                                               |   23 
 _Main/BL/Type_Global_MappingLaneLeg/Attribute_Name.qbl                                                                                            |    7 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl                                                                         |  240 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def                                                                       |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def                                                               |   22 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSpecializedDisplay_OnCreated.def                               |   17 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_MaterialSystem.qbl                                                                             |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth5.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def                                                        |   20 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrency_MP_Global_MappingCurrency_MP_.qbl                                               |   23 
 _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl                                                                              |  115 
 _Main/BL/EDI/Broker_GlobalOTDTable_UnitOfMeasure_MP.qbl                                                                                           |   55 
 _Main/BL/Relations/Relation_Global_MappingForecast_GlobalOTDTable_GlobalOTDTable_Global_Mapping.qbl                                               |   23 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblIT_OnCreated.def                                               |   17 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl                                                                                    |   20 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_IsAvailable.qbl                                                                                 |    7 
 _Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl                                                          |   12 
 _Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeBusinessTypeString.qbl                                                                            |   11 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def                                                                 |   41 
 _Main/BL/Relations/Relation_Global_BrokerExecuteLog_GlobalOTDTable_GlobalOTDTable_Global_Broker.qbl                                               |   23 
 _Main/BL/Type_Global_MappingStockingPointCost/_ROOT_Type_Global_MappingStockingPointCost.qbl                                                      |    9 
 _Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM18.qbl                                                                      |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged.def                                     |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listActionBarPagePanelMaterialTianHua.def                                |   10 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl                                                                 |   17 
 _Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_Name.qbl                                                                                   |    7 
 _Main/BL/Type_Global_MappingOperation/Attribute_MinimumQuantity.qbl                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def                                                  |   39 
 _Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def                      |    5 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def                                           |   43 
 _Main/BL/Type_Global_MappingInventorySupply/Attribute_ProductID.qbl                                                                               |    7 
 _Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl                                                                                                |    8 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_PriorityName.qbl                                                                                |    7 
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProductInLane_Global_MappingProductInL.qbl                                               |   23 
 _Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth1.qbl                                                                                   |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl                                                                                              |    8 
 _Main/BL/Type_MappingSaleBudge/Method_GetCapacityInPCSInYear.qbl                                                                                  |   15 
 _Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl                                                                                                   |  174 
 _Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl                                                                                            |    8 
 _Main/BL/Type_MappingProduct/Attribute_BusinessType.qbl                                                                                           |    1 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/_ROOT_Type_MasterPlanReleaseWorkOrderTabulation.qbl                                            |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def             |   24 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl                                                                                |   22 
 _Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl                                                                                |   20 
 _Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl                                                                                      |    8 
 _var/_Main/ModelSettings/Common/Dev-38/_ROOT_Role_Dev-38.properties                                                                               |  575 +
 _Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLane_Global_MappingLane_GlobalOTDTable.qbl                                               |   23 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl                                                                |    8 
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/Method_GetProductCodes.qbl                                                                             |   10 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl                                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listActionBarPagePanelMaterialVehicle.def                                |   10 
 _Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl                                                                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_ListPanelMaterialSpecializedDisplay.def                       |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/_ROOT_Component_FormPanelMaterialTM18.def                                             |   39 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def                                       |   39 
 _Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductSubclassType.qbl                                                                          |    7 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_ShippingForm.qbl                                                                                      |    6 
 _Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl                                                                       |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth12.qbl                                                                               |    8 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/_ROOT_Type_MasterPlanReleaseWorkOrder.qbl                                                                |    9 
 _Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl                                                                                                    |    8 
 _Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl                                                                                               |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl                                                                    |   17 
 _Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def                                                                     |   17 
 _Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl                                                                   |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT#710.def                                                                       |   41 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_EndDate.qbl                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def                                                           |   39 
 _Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl                                                                                    |   10 
 _Main/BL/Type_Global_MappingStockingPointCost/Attribute_ID.qbl                                                                                    |    8 
 Calendars/Translations/UI/CalendarsWebUI/Translations_zh.qtr                                                                                      |    0 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listContextMenuPanelMaterialTM.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def                                                |   17 
 _Main/BL/Type_MappingSaleBudge/Attribute_ShippingForm.qbl                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def                                                                        |   14 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def                                                           |   46 
 _Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByMonth.qbl                                                                                 |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001#655.def                                                   |   24 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth8.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlContent_ddlWorkOrderType_OnCreated.def                           |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def                                                           |   10 
 _Main/BL/Type_MPSync/Method_CapacityAndSaleBudgePlaceOfProductionOfArrayString.qbl                                                                |   11 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnCreated.def                                            |   19 
 _Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl                                                                                    |   22 
 _Main/BL/Type_Global_MappingCurrency_MP/Attribute_Name.qbl                                                                                        |    7 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_Customer.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def                                                   |   29 
 _Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def                                                                              |   23 
 _Main/BL/Type_MappingSaleBudge/Attribute_NumberOfCut.qbl                                                                                          |    8 
 _Main/BL/Type_MappingSaleBudge/DefaultValue_Resolution.qbl                                                                                        |    6 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderType.qbl                                                                    |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth11.qbl                                                                               |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_DisplayTechnology.qbl                                                                                    |    8 
 _Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_listActionBarPageIssueWorkOrder.def                                            |   10 
 _Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/StaticMethod_CreateIfNotExist.qbl                                                               |   17 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def                                                   |   17 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl                                                             |   17 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_CurrencyID.qbl                                                                                  |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth10.qbl                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def                                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listActionBarPagePanelMaterialAutomotiveElectronics.def    |   10 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/Attribute_IsGenerateAndPublishWorkOrders.qbl                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def                                                                     |   50 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def                                                    |   24 
 _Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData#633.def                                                                  |    1 
 _Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl                                                                                          |    7 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl                                                                                               |    8 
 _Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream#45.qbl                                                                               |   12 
 _Main/BL/Type_Global_MappingOperationBOM/_ROOT_Type_Global_MappingOperationBOM.qbl                                                                |    9 
 _Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl                                                             |   23 
 _Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialCode.qbl                                                                    |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_PlaceOfProductionOfArray.qbl                                                           |    8 
 _Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl                                                                                            |   51 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/_ROOT_Component_FormPanelMaterialSportsHealth.def                             |   39 
 _Main/UI/MacroPlannerWebApp/Component_DialogFusionData/_ROOT_Component_DialogFusionData.def                                                       |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelButton.def                                                                |   59 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth7.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def                                                                           |   41 
 _Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl                                                                                     |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def                                                |   10 
 _Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl                                                                                      |    7 
 _Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl                                                                                    |    6 
 _Main/BL/Type_Global_MappingCurrency_MP/_ROOT_Type_Global_MappingCurrency_MP.qbl                                                                  |    9 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def                                                                        |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def                             |   94 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnCreated.def                |   19 
 _Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl                                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnCreated.def                                            |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def                                                  |   27 
 _Main/BL/Type_Global_MappingLaneLeg/Attribute_OriginStockingPointID.qbl                                                                           |    7 
 /dev/null                                                                                                                                         |   28 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_CustomerID.qbl                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormIT/Component_ListPanelMaterialIT.def                                                                    |   41 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Rate.qbl                                                                                    |    7 
 _Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl                                                               |   23 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl                                                                                                |    8 
 874 files changed, 18,457 insertions(+), 264 deletions(-)

diff --git a/Calendars/Translations/UI/CalendarsWebUI/Translations_zh.qtr b/Calendars/Translations/UI/CalendarsWebUI/Translations_zh.qtr
index 69245c9..c22e300 100644
--- a/Calendars/Translations/UI/CalendarsWebUI/Translations_zh.qtr
+++ b/Calendars/Translations/UI/CalendarsWebUI/Translations_zh.qtr
Binary files differ
diff --git a/KpiTracker/Translations/UI/KPITrackerWeb/Translations_zh.qtr b/KpiTracker/Translations/UI/KPITrackerWeb/Translations_zh.qtr
index e5f4026..dde56be 100644
--- a/KpiTracker/Translations/UI/KPITrackerWeb/Translations_zh.qtr
+++ b/KpiTracker/Translations/UI/KPITrackerWeb/Translations_zh.qtr
Binary files differ
diff --git a/LibMacroPlannerWebUI/Translations/UI/LibMacroPlannerWebUI/Translations_zh.qtr b/LibMacroPlannerWebUI/Translations/UI/LibMacroPlannerWebUI/Translations_zh.qtr
index aff905c..8d14dc8 100644
--- a/LibMacroPlannerWebUI/Translations/UI/LibMacroPlannerWebUI/Translations_zh.qtr
+++ b/LibMacroPlannerWebUI/Translations/UI/LibMacroPlannerWebUI/Translations_zh.qtr
Binary files differ
diff --git a/SOPWorkflow/Translations/UI/SOPWorkflowWeb/Translations_zh.qtr b/SOPWorkflow/Translations/UI/SOPWorkflowWeb/Translations_zh.qtr
index b2bb114..acfe811 100644
--- a/SOPWorkflow/Translations/UI/SOPWorkflowWeb/Translations_zh.qtr
+++ b/SOPWorkflow/Translations/UI/SOPWorkflowWeb/Translations_zh.qtr
Binary files differ
diff --git a/_Main/BL/EDI/Broker_Broker_OTD_BaseConversionFactor.qbl b/_Main/BL/EDI/Broker_Broker_OTD_BaseConversionFactor.qbl
index 7f8c525..4bca9ec 100644
--- a/_Main/BL/EDI/Broker_Broker_OTD_BaseConversionFactor.qbl
+++ b/_Main/BL/EDI/Broker_Broker_OTD_BaseConversionFactor.qbl
@@ -34,10 +34,6 @@
       OthersMayFlushTable: true
       OthersMayInsertRow: true
       Parameters: '/owner="YUXTEST"'
-      PrimaryKeyColumns: ISENABLED
-      PrimaryKeyColumns: PRODUCTID
-      PrimaryKeyColumns: SOURCEUNITOFMEASURENAME
-      PrimaryKeyColumns: TARGETUNITOFMEASURENAME
       RecordModificationHintStrategy: 'None'
       EDIODBCLinkColumn FACTOR
       {
diff --git a/_Main/BL/EDI/Broker_Broker_OTD_Operation.qbl b/_Main/BL/EDI/Broker_Broker_OTD_Operation.qbl
index 64aa83d..e269f2f 100644
--- a/_Main/BL/EDI/Broker_Broker_OTD_Operation.qbl
+++ b/_Main/BL/EDI/Broker_Broker_OTD_Operation.qbl
@@ -15,6 +15,7 @@
       PrimaryKeyColumns: PlantName
       PrimaryKeyColumns: ProcessSection
       PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: SequenceNumber
       TargetType: MappingOperation
       TypeIndex: MappingOperationTypeIndex
       EDIMLColumn ActualCapacity { Attribute: ActualCapacity ValueType: Real }
diff --git a/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl b/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
index 15ca8ab..7bcabef 100644
--- a/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
+++ b/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
@@ -9,6 +9,7 @@
   {
     EDIMLTable MappingProduct
     {
+      PrimaryKeyColumns: BusinessType
       PrimaryKeyColumns: ID
       TargetType: MappingProduct
       TypeIndex: MappingProductTypeIndex
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl
new file mode 100644
index 0000000..3604991
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl
@@ -0,0 +1,151 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_AIPISPIP
+{
+  MDSDefinition: GlobalOTDTable
+  EDIModelLink.Destination Des_ActualPISPIP0
+  {
+    EDIMLTable Global_MappingActualProductInStockingPointInPeriod
+    {
+      PrimaryKeyColumns: Date
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: StockingPointID
+      TargetType: Global_MappingActualProductInStockingPointInPeriod
+      TypeIndex: GlobalOTDTable_AIPISPIPTypeIndex
+      EDIMLColumn ActualInventoryLevelEnd { Attribute: ActualInventoryLevelEnd ValueType: Real }
+      EDIMLColumn Date { Attribute: Date ValueType: Date }
+      EDIMLColumn Description { Attribute: Description ValueType: String }
+      EDIMLColumn IsAvailable { Attribute: IsAvailable ValueType: Boolean }
+      EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn StockType { Attribute: StockType ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+    }
+  }
+  EDIODBCLink.Source MID_ActualPISPIP0
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_ACTUALPISPIP
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="TIANMA"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACTUALLINVENTORYLEVELEND
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn DESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ISAVAILABLE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MANUFACTUREDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation TransformationActualPISPIP0
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_ACTUALPISPIP
+      OutputTable: Global_MappingActualProductInStockingPointInPeriod
+      EDIColumnMatch
+      {
+        InputColumn: ACTUALLINVENTORYLEVELEND
+        OutputColumn: ActualInventoryLevelEnd
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToReal xmlns="http://www.quintiq.com/GEB/StringToReal" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToReal>
+          *]
+        }
+      }
+      EDIColumnMatch
+      {
+        InputColumn: DATE
+        OutputColumn: Date
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: DESCRIPTION OutputColumn: Description }
+      EDIColumnMatch { InputColumn: ISAVAILABLE OutputColumn: IsAvailable }
+      EDIColumnMatch
+      {
+        InputColumn: MANUFACTUREDDATE
+        OutputColumn: ManufacturedDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: STOCKTYPE OutputColumn: StockType }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl
new file mode 100644
index 0000000..e297e91
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl
@@ -0,0 +1,82 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_ConversionFactor
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination4
+  {
+    EDIMLTable Global_MappingConversionFactor
+    {
+      PrimaryKeyColumns: IsEnabled
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: SourceUnitOfMeasureName
+      PrimaryKeyColumns: TargetUnitOfMeasureName
+      TargetType: Global_MappingConversionFactor
+      TypeIndex: Global_MappingConversionFactorTypeIndex
+      EDIMLColumn Factor { Attribute: Factor ValueType: Real }
+      EDIMLColumn IsEnabled { Attribute: IsEnabled ValueType: Boolean }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn SourceUnitOfMeasureName { Attribute: SourceUnitOfMeasureName ValueType: String }
+      EDIMLColumn TargetUnitOfMeasureName { Attribute: TargetUnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source3
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_BASECONVERSIONFACTORS
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ISENABLED
+      PrimaryKeyColumns: PRODUCTID
+      PrimaryKeyColumns: SOURCEUNITOFMEASURENAME
+      PrimaryKeyColumns: TARGETUNITOFMEASURENAME
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn FACTOR
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn ISENABLED
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SOURCEUNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn TARGETUNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation3
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_BASECONVERSIONFACTORS
+      OutputTable: Global_MappingConversionFactor
+      EDIColumnMatch { InputColumn: FACTOR OutputColumn: Factor }
+      EDIColumnMatch { InputColumn: ISENABLED OutputColumn: IsEnabled }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: SOURCEUNITOFMEASURENAME OutputColumn: SourceUnitOfMeasureName }
+      EDIColumnMatch { InputColumn: TARGETUNITOFMEASURENAME OutputColumn: TargetUnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
new file mode 100644
index 0000000..62a47a5
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
@@ -0,0 +1,197 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CustomOrder
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination9
+  {
+    EDIMLTable Global_MappingCustomOrder
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingCustomOrder
+      TypeIndex: GlobalOTDTable_CustomOrderTypeIndex
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn CurrencyID { Attribute: CurrencyID ValueType: String }
+      EDIMLColumn Customer { Attribute: Customer ValueType: String }
+      EDIMLColumn CustomerID { Attribute: CustomerID ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn IsAvailable { Attribute: IsAvailable ValueType: Boolean }
+      EDIMLColumn OrderDate { Attribute: OrderDate ValueType: Date }
+      EDIMLColumn OrderID { Attribute: OrderID ValueType: String }
+      EDIMLColumn OrderLineID { Attribute: OrderLineID ValueType: String }
+      EDIMLColumn OrderType { Attribute: OrderType ValueType: String }
+      EDIMLColumn Price { Attribute: Price ValueType: Real }
+      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
+      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source8
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_CUSTOMERORDER
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CURRENCYID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CUSTOMER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CUSTOMERID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ISAVAILABLE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ORDERID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERLINEID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERTIME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRICE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn PRIORITYNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTGRADE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn QUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn SALESEGMENTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEGMENTPRIORITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SHEETPROFITABILITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation8
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_CUSTOMERORDER
+      OutputTable: Global_MappingCustomOrder
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: CURRENCYID OutputColumn: CurrencyID }
+      EDIColumnMatch { InputColumn: CUSTOMER OutputColumn: Customer }
+      EDIColumnMatch { InputColumn: CUSTOMERID OutputColumn: CustomerID }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: ISAVAILABLE OutputColumn: IsAvailable }
+      EDIColumnMatch
+      {
+        InputColumn: ORDERDATE
+        OutputColumn: OrderDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORDERID OutputColumn: OrderID }
+      EDIColumnMatch { InputColumn: ORDERLINEID OutputColumn: OrderLineID }
+      EDIColumnMatch { InputColumn: ORDERTIME OutputColumn: OrderType }
+      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
+      EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
+      EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl
new file mode 100644
index 0000000..5d2e4f1
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl
@@ -0,0 +1,174 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_Forecast
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination8
+  {
+    EDIMLTable Global_MappingForecast
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingForecast
+      TypeIndex: GlobalOTDTable_ForecastTypeIndex
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn CurrencyID { Attribute: CurrencyID ValueType: String }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn Price { Attribute: Price ValueType: Real }
+      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
+      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source7
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_FORECAST
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CURRENCYID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ENDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRICE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn PRIORITYNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTGRADE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn QUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn SALESEGMENTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEGMENTPRIORITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SHEETPROFITABILITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STARTDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation7
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_FORECAST
+      OutputTable: Global_MappingForecast
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: CURRENCYID OutputColumn: CurrencyID }
+      EDIColumnMatch
+      {
+        InputColumn: ENDDATE
+        OutputColumn: EndDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
+      EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
+      EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch
+      {
+        InputColumn: STARTDATE
+        OutputColumn: StartDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl
new file mode 100644
index 0000000..458fd70
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl
@@ -0,0 +1,152 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_InventorySupply
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination7
+  {
+    EDIMLTable Global_MappingInventorySupply
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingInventorySupply
+      TypeIndex: GlobalOTDTable_InventorySupplyTypeIndex
+      EDIMLColumn Date { Attribute: Date ValueType: Date }
+      EDIMLColumn Description { Attribute: Description ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn SupplyType { Attribute: SupplyType ValueType: String }
+      EDIMLColumn UserQuantity { Attribute: UserQuantity ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source6
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_EXTERNALSUPPLY
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn DESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MANUFACTUREDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SUPPLYTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn USERQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation6
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_EXTERNALSUPPLY
+      OutputTable: Global_MappingInventorySupply
+      EDIColumnMatch
+      {
+        InputColumn: DATE
+        OutputColumn: Date
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: DESCRIPTION OutputColumn: Description }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch
+      {
+        InputColumn: MANUFACTUREDDATE
+        OutputColumn: ManufacturedDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: SUPPLYTYPE OutputColumn: SupplyType }
+      EDIColumnMatch
+      {
+        InputColumn: USERQUANTITY
+        OutputColumn: UserQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToReal xmlns="http://www.quintiq.com/GEB/StringToReal" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToReal>
+          *]
+        }
+      }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl
new file mode 100644
index 0000000..0501f22
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl
@@ -0,0 +1,200 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_Operation
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination5
+  {
+    EDIMLTable Global_MappingOperation
+    {
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: Line
+      PrimaryKeyColumns: OrganCode
+      PrimaryKeyColumns: PlantName
+      PrimaryKeyColumns: ProcessSection
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: SequenceNumber
+      TargetType: Global_MappingOperation
+      TypeIndex: GlobalOTDTable_OperationTypeIndex
+      EDIMLColumn ActualCapacity { Attribute: ActualCapacity ValueType: Real }
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn Line { Attribute: Line ValueType: String }
+      EDIMLColumn MaximumQuantity { Attribute: MaximumQuantity ValueType: Number }
+      EDIMLColumn MinimumQuantity { Attribute: MinimumQuantity ValueType: Number }
+      EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
+      EDIMLColumn OrganName { Attribute: OrganName ValueType: String }
+      EDIMLColumn PlantName { Attribute: PlantName ValueType: String }
+      EDIMLColumn ProcessSection { Attribute: ProcessSection ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn SequenceNumber { Attribute: SequenceNumber ValueType: Number }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+      EDIMLColumn UserLeadTime { Attribute: UserLeadTime ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source4
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_OPERATION
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACTUALCAPACITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn LINE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MAXIMUMQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MINIMUMQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PLANTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PROCESSSECTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEQUENCENUMBER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn USERLEADTIME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation4
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_OPERATION
+      OutputTable: Global_MappingOperation
+      EDIColumnMatch { InputColumn: ACTUALCAPACITY OutputColumn: ActualCapacity }
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: LINE OutputColumn: Line }
+      EDIColumnMatch
+      {
+        InputColumn: MAXIMUMQUANTITY
+        OutputColumn: MaximumQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch
+      {
+        InputColumn: MINIMUMQUANTITY
+        OutputColumn: MinimumQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
+      EDIColumnMatch { InputColumn: ORGANNAME OutputColumn: OrganName }
+      EDIColumnMatch { InputColumn: PLANTNAME OutputColumn: PlantName }
+      EDIColumnMatch { InputColumn: PROCESSSECTION OutputColumn: ProcessSection }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch
+      {
+        InputColumn: SEQUENCENUMBER
+        OutputColumn: SequenceNumber
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+      EDIColumnMatch { InputColumn: USERLEADTIME OutputColumn: UserLeadTime }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl
new file mode 100644
index 0000000..dc815c0
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl
@@ -0,0 +1,208 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_OperationBOM
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination6
+  {
+    EDIMLTable Global_MappingOperationBOM
+    {
+      PrimaryKeyColumns: AlternativeMaterialCode
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: ComponentCode
+      PrimaryKeyColumns: ComponentType
+      PrimaryKeyColumns: ComponentUnit
+      PrimaryKeyColumns: OrganCode
+      PrimaryKeyColumns: ProcessSection
+      PrimaryKeyColumns: ProductCode
+      TargetType: Global_MappingOperationBOM
+      TypeIndex: GlobalOTDTable_OperationBOMTypeIndex
+      EDIMLColumn AlternativeMaterialCode { Attribute: AlternativeMaterialCode ValueType: String }
+      EDIMLColumn AlternativeMaterialType { Attribute: AlternativeMaterialType ValueType: String }
+      EDIMLColumn AlternativeMaterialUnit { Attribute: AlternativeMaterialUnit ValueType: String }
+      EDIMLColumn AlternativeRate { Attribute: AlternativeRate ValueType: Real }
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn ComponentCode { Attribute: ComponentCode ValueType: String }
+      EDIMLColumn ComponentDescription { Attribute: ComponentDescription ValueType: String }
+      EDIMLColumn ComponentOutputRate { Attribute: ComponentOutputRate ValueType: Real }
+      EDIMLColumn ComponentType { Attribute: ComponentType ValueType: String }
+      EDIMLColumn ComponentUnit { Attribute: ComponentUnit ValueType: String }
+      EDIMLColumn ComponentUnitDescription { Attribute: ComponentUnitDescription ValueType: String }
+      EDIMLColumn DescriptionOfAlternativeMaterial { Attribute: DescriptionOfAlternativeMaterial ValueType: String }
+      EDIMLColumn DescriptionOfAlternativeMaterialUnits { Attribute: DescriptionOfAlternativeMaterialUnits ValueType: String }
+      EDIMLColumn MaterialSystem { Attribute: MaterialSystem ValueType: String }
+      EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
+      EDIMLColumn ProcessSection { Attribute: ProcessSection ValueType: String }
+      EDIMLColumn ProductCode { Attribute: ProductCode ValueType: String }
+      EDIMLColumn ProductDescribe { Attribute: ProductDescribe ValueType: String }
+      EDIMLColumn ProductType { Attribute: ProductType ValueType: String }
+      EDIMLColumn ProductUnitDescription { Attribute: ProductUnitDescription ValueType: String }
+      EDIMLColumn SubstitutionRelationship { Attribute: SubstitutionRelationship ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+      EDIMLColumn UnitUsageOfComponents { Attribute: UnitUsageOfComponents ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source5
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_BOM
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ALTERNATIVEMATERIALCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVEMATERIALTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVEMATERIALUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVERATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTOUTPUTRATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn COMPONENTTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTUNITDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DESCRIPTIONOFALTERNATIVEMATERIAL
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DESCRIPTIONOFALTERNATIVEMATERIALUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MATERIALSYSTEM
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PROCESSSECTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTDESCRIBE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTUNITDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SUBSTITUTIONRELATIONSHIP
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITUSAGEOFCOMPENENT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation5
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_BOM
+      OutputTable: Global_MappingOperationBOM
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALCODE OutputColumn: AlternativeMaterialCode }
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALTYPE OutputColumn: AlternativeMaterialType }
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALUNIT OutputColumn: AlternativeMaterialUnit }
+      EDIColumnMatch { InputColumn: ALTERNATIVERATE OutputColumn: AlternativeRate }
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: COMPONENTCODE OutputColumn: ComponentCode }
+      EDIColumnMatch { InputColumn: COMPONENTDESCRIPTION OutputColumn: ComponentDescription }
+      EDIColumnMatch { InputColumn: COMPONENTOUTPUTRATE OutputColumn: ComponentOutputRate }
+      EDIColumnMatch { InputColumn: COMPONENTTYPE OutputColumn: ComponentType }
+      EDIColumnMatch { InputColumn: COMPONENTUNIT OutputColumn: ComponentUnit }
+      EDIColumnMatch { InputColumn: COMPONENTUNITDESCRIPTION OutputColumn: ComponentUnitDescription }
+      EDIColumnMatch { InputColumn: DESCRIPTIONOFALTERNATIVEMATERIAL OutputColumn: DescriptionOfAlternativeMaterial }
+      EDIColumnMatch { InputColumn: DESCRIPTIONOFALTERNATIVEMATERIALUNIT OutputColumn: DescriptionOfAlternativeMaterialUnits }
+      EDIColumnMatch { InputColumn: MATERIALSYSTEM OutputColumn: MaterialSystem }
+      EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
+      EDIColumnMatch { InputColumn: PROCESSSECTION OutputColumn: ProcessSection }
+      EDIColumnMatch { InputColumn: PRODUCTCODE OutputColumn: ProductCode }
+      EDIColumnMatch { InputColumn: PRODUCTDESCRIBE OutputColumn: ProductDescribe }
+      EDIColumnMatch { InputColumn: PRODUCTTYPE OutputColumn: ProductType }
+      EDIColumnMatch { InputColumn: PRODUCTUNITDESCRIPTION OutputColumn: ProductUnitDescription }
+      EDIColumnMatch { InputColumn: SUBSTITUTIONRELATIONSHIP OutputColumn: SubstitutionRelationship }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+      EDIColumnMatch { InputColumn: UNITUSAGEOFCOMPENENT OutputColumn: UnitUsageOfComponents }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl
new file mode 100644
index 0000000..e5e11a4
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl
@@ -0,0 +1,142 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_OperationCost
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination11
+  {
+    EDIMLTable Global_MappingOperationCost
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingOperationCost
+      TypeIndex: GlobalOTDTable_OperationCostTypeIndex
+      EDIMLColumn AccountName { Attribute: AccountName ValueType: String }
+      EDIMLColumn Cost { Attribute: Cost ValueType: Real }
+      EDIMLColumn CostDriver { Attribute: CostDriver ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn LengthOfTime { Attribute: LengthOfTime ValueType: Number }
+      EDIMLColumn OrgCode { Attribute: OrgCode ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Start { Attribute: Start ValueType: Date }
+      EDIMLColumn TimeUnit { Attribute: TimeUnit ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source10
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_OPERATIONCOST
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACCOUNTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COST
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn COSTDRIVER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn LENGTHOFTIME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn START
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn TIMEUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation10
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_OPERATIONCOST
+      OutputTable: Global_MappingOperationCost
+      EDIColumnMatch { InputColumn: ACCOUNTNAME OutputColumn: AccountName }
+      EDIColumnMatch { InputColumn: COST OutputColumn: Cost }
+      EDIColumnMatch { InputColumn: COSTDRIVER OutputColumn: CostDriver }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch
+      {
+        InputColumn: LENGTHOFTIME
+        OutputColumn: LengthOfTime
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORGCODE OutputColumn: OrgCode }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch
+      {
+        InputColumn: START
+        OutputColumn: Start
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: TIMEUNIT OutputColumn: TimeUnit }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl
new file mode 100644
index 0000000..2c1bfcb
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_ProductInLane
+{
+  MDSDefinition: GlobalOTDTable
+  EDIModelLink.Destination Des_MappingProductInLane0
+  {
+    EDIMLTable Global_MappingProductInLane
+    {
+      PrimaryKeyColumns: LineID
+      PrimaryKeyColumns: ProductID
+      TargetType: Global_MappingProductInLane
+      TypeIndex: GlobalOTDTable_ProductInLaneTypeIndex
+      EDIMLColumn LineID { Attribute: LineID ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+    }
+  }
+  EDIODBCLink.Source MID_PRODUCTINLINES0
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_PRODUCTINLINES
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: LINEID
+      PrimaryKeyColumns: PRODUCTID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn LINEID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation TransformationProductInLane0
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_PRODUCTINLINES
+      OutputTable: Global_MappingProductInLane
+      EDIColumnMatch { InputColumn: LINEID OutputColumn: LineID }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_Product_MP.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_Product_MP.qbl
new file mode 100644
index 0000000..5ff2900
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_Product_MP.qbl
@@ -0,0 +1,169 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_Product_MP
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination3
+  {
+    EDIMLTable Global_MappingProduct_MP
+    {
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingProduct_MP
+      TypeIndex: TypeIndexIDAndBusinessType
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn CommonBusiness { Attribute: CommonBusiness ValueType: String }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn IsCommon { Attribute: IsCommon ValueType: Boolean }
+      EDIMLColumn KeyProduct { Attribute: KeyProduct ValueType: Boolean }
+      EDIMLColumn Name { Attribute: Name ValueType: String }
+      EDIMLColumn Notes { Attribute: Notes ValueType: String }
+      EDIMLColumn ProductMajorType { Attribute: ProductMajorType ValueType: String }
+      EDIMLColumn ProductSubclassType { Attribute: ProductSubclassType ValueType: String }
+      EDIMLColumn ShelfLife { Attribute: ShelfLife ValueType: Real }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source2
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_PRODUCT
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: BUSINESSTYPE
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMMONBUSINESS
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COST
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn ENDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn INTEGRATIONDEGREE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn ISCOMMON
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn KEYPRODUCT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MATERIALFLAG1
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MATERIALFLAG2
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn NOTE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn NUMBEROFLAYOUTS
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn PRODUCTMAJORTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTSUBCLASSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SHELFLIFE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn UNITOFMEAURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation2
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_PRODUCT
+      OutputTable: Global_MappingProduct_MP
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: COMMONBUSINESS OutputColumn: CommonBusiness }
+      EDIColumnMatch
+      {
+        InputColumn: ENDDATE
+        OutputColumn: EndDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: ISCOMMON OutputColumn: IsCommon }
+      EDIColumnMatch { InputColumn: KEYPRODUCT OutputColumn: KeyProduct }
+      EDIColumnMatch { InputColumn: NAME OutputColumn: Name }
+      EDIColumnMatch { InputColumn: NOTE OutputColumn: Notes }
+      EDIColumnMatch { InputColumn: PRODUCTMAJORTYPE OutputColumn: ProductMajorType }
+      EDIColumnMatch { InputColumn: PRODUCTSUBCLASSTYPE OutputColumn: ProductSubclassType }
+      EDIColumnMatch { InputColumn: SHELFLIFE OutputColumn: ShelfLife }
+      EDIColumnMatch { InputColumn: UNITOFMEAURENAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_SalesSegment_MP.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_SalesSegment_MP.qbl
new file mode 100644
index 0000000..26442e4
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_SalesSegment_MP.qbl
@@ -0,0 +1,92 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_SalesSegment_MP
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination2
+  {
+    EDIMLTable Global_MappingSalesSegment_MP
+    {
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: Name
+      TargetType: Global_MappingSalesSegment_MP
+      TypeIndex: TypeIndexBusinessTypeAndName
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn DisplayIndex { Attribute: DisplayIndex ValueType: Number }
+      EDIMLColumn Name { Attribute: Name ValueType: String }
+      EDIMLColumn ParentName { Attribute: ParentName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source1
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_SALESSEGMENT
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: BUSINESSTYPE
+      PrimaryKeyColumns: NAME
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DISPLAYINDEX
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PARENTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation1
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_SALESSEGMENT
+      OutputTable: Global_MappingSalesSegment_MP
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch
+      {
+        InputColumn: DISPLAYINDEX
+        OutputColumn: DisplayIndex
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: NAME OutputColumn: Name }
+      EDIColumnMatch { InputColumn: PARENTNAME OutputColumn: ParentName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl
new file mode 100644
index 0000000..6dda466
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl
@@ -0,0 +1,107 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_StockingPointCost
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination10
+  {
+    EDIMLTable Global_MappingStockingPointCost
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingStockingPointCost
+      TypeIndex: GlobalOTDTable_StockingPointCostTypeIndex
+      EDIMLColumn AccountName { Attribute: AccountName ValueType: String }
+      EDIMLColumn Cost { Attribute: Cost ValueType: Real }
+      EDIMLColumn CostDriver { Attribute: CostDriver ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Start { Attribute: Start ValueType: Date }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source9
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_INVENTORYCOST
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACCOUNTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COST
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn COSTDRIVER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn START
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation9
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_INVENTORYCOST
+      OutputTable: Global_MappingStockingPointCost
+      EDIColumnMatch { InputColumn: ACCOUNTNAME OutputColumn: AccountName }
+      EDIColumnMatch { InputColumn: COST OutputColumn: Cost }
+      EDIColumnMatch { InputColumn: COSTDRIVER OutputColumn: CostDriver }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch
+      {
+        InputColumn: START
+        OutputColumn: Start
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_UnitOfMeasure_MP.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_UnitOfMeasure_MP.qbl
new file mode 100644
index 0000000..2311cb5
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_UnitOfMeasure_MP.qbl
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_UnitOfMeasure_MP
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination1
+  {
+    EDIMLTable Global_MappingUnitOfMeasure_MP
+    {
+      PrimaryKeyColumns: Name
+      TargetType: Global_MappingUnitOfMeasure_MP
+      TypeIndex: TypeIndexName
+      EDIMLColumn IsDefault { Attribute: IsDefault ValueType: Boolean }
+      EDIMLColumn Name { Attribute: Name ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_UNITOFMEASURES
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: NAME
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ISDEFAULT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation0
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_UNITOFMEASURES
+      OutputTable: Global_MappingUnitOfMeasure_MP
+      EDIColumnMatch { InputColumn: ISDEFAULT OutputColumn: IsDefault }
+      EDIColumnMatch { InputColumn: NAME OutputColumn: Name }
+    }
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl
new file mode 100644
index 0000000..fcd971b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeChartElement
+{
+  #keys: '1[414384.0.852466576]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.852466578][414384.0.852466577][414384.0.852466579]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeChartElement
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeChartElement
+  {
+    #keys: '3[414384.0.852466581][414384.0.852466580][414384.0.852466582]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRowProduct_CapacityAndSaleBudgeChartRow_Ca.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRowProduct_CapacityAndSaleBudgeChartRow_Ca.qbl
new file mode 100644
index 0000000..5e2a588
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRowProduct_CapacityAndSaleBudgeChartRow_Ca.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeChartRowProduct_CapacityAndSaleBudgeChartRow_CapacityAndSaleBudgeChartRow_CapacityAndSaleBudgeChartRowProduct
+{
+  #keys: '1[414384.0.852471810]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeChartRow
+  {
+    #keys: '3[414384.0.852471812][414384.0.852471811][414384.0.852471813]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeChartRowProduct
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeChartRowProduct
+  {
+    #keys: '3[414384.0.852471815][414384.0.852471814][414384.0.852471816]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeChartRow
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl
new file mode 100644
index 0000000..13e8d6d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeChartRow
+{
+  #keys: '1[414384.0.852471828]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.852471830][414384.0.852471829][414384.0.852471831]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeChartRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeChartRow
+  {
+    #keys: '3[414384.0.852471833][414384.0.852471832][414384.0.852471834]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
index a2327e4..07afbdf 100644
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
@@ -3,8 +3,11 @@
 Relation CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeCompareItemColumn
 {
   #keys: '1[414384.0.816631032]'
-  DefaultRelationStrategy
+  ProceduralSequenceRelationStrategy
   {
+    #keys: '13[0.0.0][414384.0.827659683][414384.0.827659677][414384.0.827659684][414384.0.827659678][414384.0.827659685][414384.0.827659679][414384.0.827659686][414384.0.827659680][414384.0.827659687][414384.0.827659681][414384.0.827659688][414384.0.827659682]'
+    SequenceElementSuffix: 'ColumnInManager'
+    SequenceSuffix: 'ColumnInManager'
   }
   RelationSide.LeftSide ScenarioManager
   {
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingConversionFactor_Global_MappingConvers.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingConversionFactor_Global_MappingConvers.qbl
new file mode 100644
index 0000000..9f0aefd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingConversionFactor_Global_MappingConvers.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingConversionFactor_Global_MappingConversionFactor_GlobalOTDTable
+{
+  #keys: '1[414702.0.247716835]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingConversionFactor
+  {
+    #keys: '3[414702.0.247716837][414702.0.247716836][414702.0.247716838]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.247716840][414702.0.247716839][414702.0.247716841]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingConversionFactor
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrencyRate_MP_Global_MappingCurrency.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrencyRate_MP_Global_MappingCurrency.qbl
new file mode 100644
index 0000000..e3219cd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrencyRate_MP_Global_MappingCurrency.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingCurrencyRate_MP_Global_MappingCurrencyRate_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.247665116]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingCurrencyRate_MP
+  {
+    #keys: '3[414702.0.247665118][414702.0.247665117][414702.0.247665119]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.247665121][414702.0.247665120][414702.0.247665122]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingCurrencyRate_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrency_MP_Global_MappingCurrency_MP_.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrency_MP_Global_MappingCurrency_MP_.qbl
new file mode 100644
index 0000000..fdfa37e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingCurrency_MP_Global_MappingCurrency_MP_.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingCurrency_MP_Global_MappingCurrency_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.247705877]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingCurrency_MP
+  {
+    #keys: '3[414702.0.247705879][414702.0.247705878][414702.0.247705880]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.247705882][414702.0.247705881][414702.0.247705883]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingCurrency_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLaneLeg_Global_MappingLaneLeg_GlobalOT.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLaneLeg_Global_MappingLaneLeg_GlobalOT.qbl
new file mode 100644
index 0000000..38d8442
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLaneLeg_Global_MappingLaneLeg_GlobalOT.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingLaneLeg_Global_MappingLaneLeg_GlobalOTDTable
+{
+  #keys: '1[414702.0.261965021]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingLaneLeg
+  {
+    #keys: '3[414702.0.261965023][414702.0.261965022][414702.0.261965024]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.261965026][414702.0.261965025][414702.0.261965027]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingLaneLeg
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLane_Global_MappingLane_GlobalOTDTable.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLane_Global_MappingLane_GlobalOTDTable.qbl
new file mode 100644
index 0000000..c746523
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingLane_Global_MappingLane_GlobalOTDTable.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingLane_Global_MappingLane_GlobalOTDTable
+{
+  #keys: '1[414702.0.262115644]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingLane
+  {
+    #keys: '3[414702.0.262115646][414702.0.262115645][414702.0.262115647]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.262115649][414702.0.262115648][414702.0.262115650]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingLane
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationBOM_Global_MappingOperationBO.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationBOM_Global_MappingOperationBO.qbl
new file mode 100644
index 0000000..d29b700
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationBOM_Global_MappingOperationBO.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingOperationBOM_Global_MappingOperationBOM_GlobalOTDTable
+{
+  #keys: '1[414702.0.261405153]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingOperationBOM
+  {
+    #keys: '3[414702.0.261405155][414702.0.261405154][414702.0.261405156]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.261405158][414702.0.261405157][414702.0.261405159]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingOperationBOM
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationCost_Global_MappingOperationC.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationCost_Global_MappingOperationC.qbl
new file mode 100644
index 0000000..ac77edb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperationCost_Global_MappingOperationC.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingOperationCost_Global_MappingOperationCost_GlobalOTDTable
+{
+  #keys: '1[414702.0.264968475]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingOperationCost
+  {
+    #keys: '3[414702.0.264968477][414702.0.264968476][414702.0.264968478]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.264968480][414702.0.264968479][414702.0.264968481]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingOperationCost
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperation_Global_MappingOperation_Glob.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperation_Global_MappingOperation_Glob.qbl
new file mode 100644
index 0000000..ed54513
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingOperation_Global_MappingOperation_Glob.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingOperation_Global_MappingOperation_GlobalOTDTable
+{
+  #keys: '1[414702.0.261949432]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingOperation
+  {
+    #keys: '3[414702.0.261949434][414702.0.261949433][414702.0.261949435]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.261949437][414702.0.261949436][414702.0.261949438]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingOperation
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProductInLane_Global_MappingProductInL.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProductInLane_Global_MappingProductInL.qbl
new file mode 100644
index 0000000..976bb1e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProductInLane_Global_MappingProductInL.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingProductInLane_Global_MappingProductInLane_GlobalOTDTable
+{
+  #keys: '1[414702.0.262177985]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingProductInLane
+  {
+    #keys: '3[414702.0.262177987][414702.0.262177986][414702.0.262177988]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.262177990][414702.0.262177989][414702.0.262177991]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingProductInLane
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProduct_MP_Global_MappingProduct_MP_Gl.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProduct_MP_Global_MappingProduct_MP_Gl.qbl
new file mode 100644
index 0000000..3b3a458
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingProduct_MP_Global_MappingProduct_MP_Gl.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingProduct_MP_Global_MappingProduct_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.247665570]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingProduct_MP
+  {
+    #keys: '3[414702.0.247665572][414702.0.247665571][414702.0.247665573]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.247665575][414702.0.247665574][414702.0.247665576]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingProduct_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingSalesSegment_MP_Global_MappingSalesSeg.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingSalesSegment_MP_Global_MappingSalesSeg.qbl
new file mode 100644
index 0000000..47895e9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingSalesSegment_MP_Global_MappingSalesSeg.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingSalesSegment_MP_Global_MappingSalesSegment_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.238159190]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingSalesSegment_MP
+  {
+    #keys: '3[414702.0.238159192][414702.0.238159191][414702.0.238159193]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.238159195][414702.0.238159194][414702.0.238159196]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingSalesSegment_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPointCost_Global_MappingStocki.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPointCost_Global_MappingStocki.qbl
new file mode 100644
index 0000000..93a0fc7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPointCost_Global_MappingStocki.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingStockingPointCost_Global_MappingStockingPointCost_GlobalOTDTable
+{
+  #keys: '1[414702.0.264765171]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingStockingPointCost
+  {
+    #keys: '3[414702.0.264765173][414702.0.264765172][414702.0.264765174]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.264765176][414702.0.264765175][414702.0.264765177]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingStockingPointCost
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPoint_MP_Global_MappingStockin.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPoint_MP_Global_MappingStockin.qbl
new file mode 100644
index 0000000..3861954
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingStockingPoint_MP_Global_MappingStockin.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingStockingPoint_MP_Global_MappingStockingPoint_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.239762044]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingStockingPoint_MP
+  {
+    #keys: '3[414702.0.239762046][414702.0.239762045][414702.0.239762047]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.239762049][414702.0.239762048][414702.0.239762050]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingStockingPoint_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingUnitOfMeasure_MP_Global_MappingUnitOfM.qbl b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingUnitOfMeasure_MP_Global_MappingUnitOfM.qbl
new file mode 100644
index 0000000..a312b2f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GlobalOTDTable_Global_MappingUnitOfMeasure_MP_Global_MappingUnitOfM.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GlobalOTDTable_Global_MappingUnitOfMeasure_MP_Global_MappingUnitOfMeasure_MP_GlobalOTDTable
+{
+  #keys: '1[414702.0.238140119]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Global_MappingUnitOfMeasure_MP
+  {
+    #keys: '3[414702.0.238140121][414702.0.238140120][414702.0.238140122]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.238140124][414702.0.238140123][414702.0.238140125]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingUnitOfMeasure_MP
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_Global_BrokerExecuteLog_GlobalOTDTable_GlobalOTDTable_Global_Broker.qbl b/_Main/BL/Relations/Relation_Global_BrokerExecuteLog_GlobalOTDTable_GlobalOTDTable_Global_Broker.qbl
new file mode 100644
index 0000000..fc0df60
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_BrokerExecuteLog_GlobalOTDTable_GlobalOTDTable_Global_Broker.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_BrokerExecuteLog_GlobalOTDTable_GlobalOTDTable_Global_BrokerExecuteLog
+{
+  #keys: '1[414702.0.265587049]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.265587051][414702.0.265587050][414702.0.265587052]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_BrokerExecuteLog
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Global_BrokerExecuteLog
+  {
+    #keys: '3[414702.0.265587054][414702.0.265587053][414702.0.265587055]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingActualProductInStockingPointInPeriod_GlobalOTDTable_G.qbl b/_Main/BL/Relations/Relation_Global_MappingActualProductInStockingPointInPeriod_GlobalOTDTable_G.qbl
new file mode 100644
index 0000000..a7c4126
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingActualProductInStockingPointInPeriod_GlobalOTDTable_G.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingActualProductInStockingPointInPeriod_GlobalOTDTable_GlobalOTDTable_Global_MappingActualProductInStockingPointInPeriod
+{
+  #keys: '1[414702.0.262251979]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.262251981][414702.0.262251980][414702.0.262251982]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingActualProductInStockingPointInPeriod
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Global_MappingActualProductInStockingPointInPeriod
+  {
+    #keys: '3[414702.0.262251984][414702.0.262251983][414702.0.262251985]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingCustomOrder_GlobalOTDTable_GlobalOTDTable_Global_Mapp.qbl b/_Main/BL/Relations/Relation_Global_MappingCustomOrder_GlobalOTDTable_GlobalOTDTable_Global_Mapp.qbl
new file mode 100644
index 0000000..208f701
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingCustomOrder_GlobalOTDTable_GlobalOTDTable_Global_Mapp.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingCustomOrder_GlobalOTDTable_GlobalOTDTable_Global_MappingCustomOrder
+{
+  #keys: '1[414702.0.264905852]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.264905854][414702.0.264905853][414702.0.264905855]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingCustomOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Global_MappingCustomOrder
+  {
+    #keys: '3[414702.0.264905857][414702.0.264905856][414702.0.264905858]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingForecast_GlobalOTDTable_GlobalOTDTable_Global_Mapping.qbl b/_Main/BL/Relations/Relation_Global_MappingForecast_GlobalOTDTable_GlobalOTDTable_Global_Mapping.qbl
new file mode 100644
index 0000000..473d427
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingForecast_GlobalOTDTable_GlobalOTDTable_Global_Mapping.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingForecast_GlobalOTDTable_GlobalOTDTable_Global_MappingForecast
+{
+  #keys: '1[414702.0.264901309]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.264901311][414702.0.264901310][414702.0.264901312]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingForecast
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Global_MappingForecast
+  {
+    #keys: '3[414702.0.264901314][414702.0.264901313][414702.0.264901315]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingInventorySupply_GlobalOTDTable_GlobalOTDTable_Global_.qbl b/_Main/BL/Relations/Relation_Global_MappingInventorySupply_GlobalOTDTable_GlobalOTDTable_Global_.qbl
new file mode 100644
index 0000000..eef8db6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingInventorySupply_GlobalOTDTable_GlobalOTDTable_Global_.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingInventorySupply_GlobalOTDTable_GlobalOTDTable_Global_MappingInventorySupply
+{
+  #keys: '1[414702.0.264621764]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.264621766][414702.0.264621765][414702.0.264621767]'
+    Cardinality: '0to1'
+    ObjectDefinition: Global_MappingInventorySupply
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Global_MappingInventorySupply
+  {
+    #keys: '3[414702.0.264621769][414702.0.264621768][414702.0.264621770]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl b/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..764e791
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty
+{
+  #keys: '1[414724.0.46380468]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380470][414724.0.46380469][414724.0.46380471]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_AuthorizeRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_AuthorizeRealQty
+  {
+    #keys: '3[414724.0.46380473][414724.0.46380472][414724.0.46380474]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl b/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl
new file mode 100644
index 0000000..7aced6d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs
+{
+  #keys: '1[414724.0.54835743]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.54835745][414724.0.54835744][414724.0.54835746]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ErrorLogs
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ErrorLogs
+  {
+    #keys: '3[414724.0.54835748][414724.0.54835747][414724.0.54835749]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl b/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl
new file mode 100644
index 0000000..8882961
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_Forecast_MacroPlan_MacroPlan_H_Forecast
+{
+  #keys: '1[414724.0.87401001]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87401003][414724.0.87401002][414724.0.87401004]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_Forecast
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_Forecast
+  {
+    #keys: '3[414724.0.87401006][414724.0.87401005][414724.0.87401007]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl b/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl
new file mode 100644
index 0000000..4dd0d52
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass
+{
+  #keys: '1[414724.0.53669732]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.53669734][414724.0.53669733][414724.0.53669735]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_FunctionClass
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_FunctionClass
+  {
+    #keys: '3[414724.0.53669737][414724.0.53669736][414724.0.53669738]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl b/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl
new file mode 100644
index 0000000..681b3dc
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord
+{
+  #keys: '1[414724.0.26781388]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26781390][414724.0.26781389][414724.0.26781391]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_HedgingRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_HedgingRecord
+  {
+    #keys: '3[414724.0.26781393][414724.0.26781392][414724.0.26781394]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl
new file mode 100644
index 0000000..d59bbd0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26811012]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_HedgingRecord
+  {
+    #keys: '3[414724.0.26811014][414724.0.26811013][414724.0.26811015]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26811017][414724.0.26811016][414724.0.26811018]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_HedgingRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl
new file mode 100644
index 0000000..40c4c4b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26810992]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_ReleaseRecord
+  {
+    #keys: '3[414724.0.26810994][414724.0.26810993][414724.0.26810995]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26810997][414724.0.26810996][414724.0.26810998]'
+    Cardinality: '1toN'
+    ObjectDefinition: H_ReleaseRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl
new file mode 100644
index 0000000..09f8641
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26811046]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26811048][414724.0.26811047][414724.0.26811049]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26811051][414724.0.26811050][414724.0.26811052]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl b/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl
new file mode 100644
index 0000000..0ff2a6b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty
+{
+  #keys: '1[414724.0.87400875]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87400877][414724.0.87400876][414724.0.87400878]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialRealQty
+  {
+    #keys: '3[414724.0.87400880][414724.0.87400879][414724.0.87400881]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl b/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl
new file mode 100644
index 0000000..af4b2bd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing
+{
+  #keys: '1[414724.0.87274652]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87274654][414724.0.87274653][414724.0.87274655]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MessagePassing
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MessagePassing
+  {
+    #keys: '3[414724.0.87274657][414724.0.87274656][414724.0.87274658]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl b/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl
new file mode 100644
index 0000000..c82c771
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty
+{
+  #keys: '1[414724.0.46380281]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380283][414724.0.46380282][414724.0.46380284]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_OrderForecastRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_OrderForecastRealQty
+  {
+    #keys: '3[414724.0.46380286][414724.0.46380285][414724.0.46380287]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl b/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl
new file mode 100644
index 0000000..a6a7ebb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord
+{
+  #keys: '1[414724.0.46380068]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380070][414724.0.46380069][414724.0.46380071]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_OrderRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_OrderRecord
+  {
+    #keys: '3[414724.0.46380073][414724.0.46380072][414724.0.46380074]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl b/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl
new file mode 100644
index 0000000..e907aa6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord
+{
+  #keys: '1[414724.0.26810912]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26810914][414724.0.26810913][414724.0.26810915]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ReleaseRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ReleaseRecord
+  {
+    #keys: '3[414724.0.26810917][414724.0.26810916][414724.0.26810918]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl b/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl
new file mode 100644
index 0000000..ca792d1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty
+{
+  #keys: '1[414724.0.46380395]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380397][414724.0.46380396][414724.0.46380398]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ReverseRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ReverseRealQty
+  {
+    #keys: '3[414724.0.46380400][414724.0.46380399][414724.0.46380401]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl b/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl
new file mode 100644
index 0000000..cf06d1f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap
+{
+  #keys: '1[414724.0.96595934]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_OrderRecord
+  {
+    #keys: '3[414724.0.96595936][414724.0.96595935][414724.0.96595937]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_TestMap
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_TestMap
+  {
+    #keys: '3[414724.0.96595939][414724.0.96595938][414724.0.96595940]'
+    Cardinality: '1toN'
+    ObjectDefinition: H_OrderRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl b/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl
new file mode 100644
index 0000000..8029c04
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_TestMap_MacroPlan_MacroPlan_H_TestMap
+{
+  #keys: '1[414724.0.96595895]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.96595897][414724.0.96595896][414724.0.96595898]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_TestMap
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_TestMap
+  {
+    #keys: '3[414724.0.96595900][414724.0.96595899][414724.0.96595901]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrderTabulation_MasterPlanReleaseWorkOrder_Mas.qbl b/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrderTabulation_MasterPlanReleaseWorkOrder_Mas.qbl
new file mode 100644
index 0000000..d5c842d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrderTabulation_MasterPlanReleaseWorkOrder_Mas.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MasterPlanReleaseWorkOrderTabulation_MasterPlanReleaseWorkOrder_MasterPlanReleaseWorkOrder_MasterPlanReleaseWorkOrderTabulation
+{
+  #keys: '1[414702.0.224201190]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MasterPlanReleaseWorkOrder
+  {
+    #keys: '3[414702.0.224201192][414702.0.224201191][414702.0.224201193]'
+    Cardinality: '0to1'
+    ObjectDefinition: MasterPlanReleaseWorkOrderTabulation
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide MasterPlanReleaseWorkOrderTabulation
+  {
+    #keys: '3[414702.0.224201195][414702.0.224201194][414702.0.224201196]'
+    Cardinality: '1toN'
+    ObjectDefinition: MasterPlanReleaseWorkOrder
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrder_MacroPlan_MacroPlan_MasterPlanReleaseWor.qbl b/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrder_MacroPlan_MacroPlan_MasterPlanReleaseWor.qbl
new file mode 100644
index 0000000..04f7cf4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MasterPlanReleaseWorkOrder_MacroPlan_MacroPlan_MasterPlanReleaseWor.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MasterPlanReleaseWorkOrder_MacroPlan_MacroPlan_MasterPlanReleaseWorkOrder
+{
+  #keys: '1[414702.0.224201157]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414702.0.224201159][414702.0.224201158][414702.0.224201160]'
+    Cardinality: '0to1'
+    ObjectDefinition: MasterPlanReleaseWorkOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide MasterPlanReleaseWorkOrder
+  {
+    #keys: '3[414702.0.224201162][414702.0.224201161][414702.0.224201163]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl
new file mode 100644
index 0000000..8e5ce5e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInPCSInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
new file mode 100644
index 0000000..54eecdf
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInHalfYear (
+  Number halfNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    fromMonth := 1 + ( halfNo - 1 ) * 6;
+    toMonth := 6 + ( halfNo - 1 ) * 6;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl
new file mode 100644
index 0000000..5af224d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInSeason (
+  Number seasonNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    fromMonth := 1 + ( seasonNo - 1 ) * 3;
+    toMonth := 3 + ( seasonNo - 1 ) * 3;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl
new file mode 100644
index 0000000..561b9d9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl
new file mode 100644
index 0000000..04efa9c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetSaleAmountInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "SaleAmountInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl
new file mode 100644
index 0000000..be9cd98
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSaleByMonth (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  Description: '閿�鍞锛圵锛�'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    field := Reflection::FindAttribute( "CapacityAndSaleBudge", "SaleAmountInMonth" + [String]monthNo );
+    value := sum( parent, 
+                  CapacityAndSaleBudge, 
+                  item, 
+                  productNo.Find( item.ProductCode() ) > -1,
+                  field.GetReal( item ) );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl
new file mode 100644
index 0000000..ef150ed
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSaleByYear (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo
+) as Real
+{
+  Description: '閿�鍞锛圵锛�'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   CapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetSaleAmountInYear() );
+    return result;
+  *]
+}
diff --git "a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl" "b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl"
new file mode 100644
index 0000000..7f929c7
--- /dev/null
+++ "b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl"
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByHalfYear (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo,
+  Number halfNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   CapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInHalfYear( halfNo ) );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl
new file mode 100644
index 0000000..35ab669
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByMonth (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  Description: '浜ц兘-瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]monthNo );
+    value := sum( parent, 
+                  CapacityAndSaleBudge, 
+                  item, 
+                  productNo.Find( item.ProductCode() ) > -1,
+                  field.GetReal( item ) );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl
new file mode 100644
index 0000000..a0193ae
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetBySeason (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo,
+  Number seasonNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   CapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInSeason( seasonNo ) );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl
new file mode 100644
index 0000000..997d801
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByYear (
+  Strings productNo,
+  GlobalOTDTable parent,
+  Number yearNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   CapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInYear() );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
index 19c5d54..650ea87 100644
--- a/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
@@ -5,6 +5,6 @@
 {
   #keys: '5[414384.0.810464639][414384.0.810464637][0.0.0][414384.0.810464638][414384.0.810464640]'
   BaseType: Object
-  Description: '浜ч攢棰勭畻'
+  Description: '浜ч攢棰勭畻 锛侊紒锛佸純鐢紒锛侊紒'
   StructuredName: 'CapacityAndSaleBudges'
 }
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl
new file mode 100644
index 0000000..bd447f7
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessTypeOrOrgCode
+{
+  #keys: '3[414384.0.852466562][414384.0.852466561][414384.0.852466563]'
+  Description: '浜嬩笟閮�/闈㈡澘鍩哄湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_Quantity.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_Quantity.qbl
new file mode 100644
index 0000000..69947cf
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414384.0.852466539][414384.0.852466538][414384.0.852466540]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_TimeStringAndScenarioName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_TimeStringAndScenarioName.qbl
new file mode 100644
index 0000000..2bcb37e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_TimeStringAndScenarioName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeStringAndScenarioName
+{
+  #keys: '3[414384.0.852466529][414384.0.852466528][414384.0.852466530]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
new file mode 100644
index 0000000..0f370d3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod TestData (
+  ScenarioManager scenarioManager
+)
+{
+  Description: '鐢熸垚娴嬭瘯鏁版嵁'
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    
+    info( "鐢熸垚骞村害浜ч攢棰勭畻鎶ヨ〃娴嬭瘯鏁版嵁" )
+    
+    scenarioManager.CapacityAndSaleBudgeChartElement( relflush );
+    
+    for( sc := 0; sc < 4; sc := sc + 1 ) {
+      scenarioName := "SC" + [String]sc;
+      for( i := 0; i < 4; i := i + 1 ) {
+        businessTypeString := "BT" + [String]i;
+        for( j := 1; j <= 12; j := j + 1 ) {
+          monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j );
+          scenarioManager.CapacityAndSaleBudgeChartElement( relnew, 
+                                                            BusinessTypeOrOrgCode := businessTypeString, 
+                                                            TimeStringAndScenarioName := monthString + " - " + scenarioName, 
+                                                            Quantity := Real::Random( 20.0, 30.0 ) );
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/_ROOT_Type_CapacityAndSaleBudgeChartElement.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/_ROOT_Type_CapacityAndSaleBudgeChartElement.qbl
new file mode 100644
index 0000000..fb4319c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/_ROOT_Type_CapacityAndSaleBudgeChartElement.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeChartElement
+{
+  #keys: '5[414384.0.852466525][414384.0.852466523][0.0.0][414384.0.852466524][414384.0.852466526]'
+  BaseType: Object
+  Description: '骞村害浜ч攢棰勭畻澶嶇洏鍥炬爣鍏冪礌'
+  StructuredName: 'CapacityAndSaleBudgeChartElements'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..3f0eec8
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.850180080][414384.0.850180079][414384.0.850180081]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_PlaceOfProductionOfArray.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_PlaceOfProductionOfArray.qbl
new file mode 100644
index 0000000..fad5998
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Attribute_PlaceOfProductionOfArray.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfArray
+{
+  #keys: '3[414384.0.850180083][414384.0.850180082][414384.0.850180084]'
+  Description: '闈㈡澘鍩哄湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/DefaultValue_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Method_GetProductCodes.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Method_GetProductCodes.qbl
new file mode 100644
index 0000000..facff27
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/Method_GetProductCodes.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetProductCodes () as owning Strings
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    return selectuniquevalues( this, CapacityAndSaleBudgeChartRowProduct, item, item.ProductCode() );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..cb76a5f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager scenarioManager,
+  String businessType,
+  String placeOfProductionOfArray
+) as CapacityAndSaleBudgeChartRow
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( scenarioManager, CapacityAndSaleBudgeChartRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
+    if( isnull( value ) ) {
+      value := scenarioManager.CapacityAndSaleBudgeChartRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );  
+    } 
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByBusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByBusinessType.qbl
new file mode 100644
index 0000000..1a9a53a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByBusinessType.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetProductCodesByBusinessType (
+  CapacityAndSaleBudgeChartRows list,
+  String businessType
+) as owning Strings
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    result := construct( Strings );
+    rowList := selectset( list, Elements, item, item.BusinessType() = businessType );
+    traverse( rowList, Elements, row ) {
+      result := result.Union( selectvalues( row, CapacityAndSaleBudgeChartRowProduct, cell, cell.ProductCode() ) ); 
+    }
+    return &result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByPlaceOfProductionOfArray.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByPlaceOfProductionOfArray.qbl
new file mode 100644
index 0000000..7ded1be
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_GetProductCodesByPlaceOfProductionOfArray.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetProductCodesByPlaceOfProductionOfArray (
+  CapacityAndSaleBudgeChartRows list,
+  String placeOfProductionOfArray
+) as owning Strings
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    result := construct( Strings );
+    rowList := selectset( list, Elements, item, item.PlaceOfProductionOfArray() = placeOfProductionOfArray );
+    traverse( rowList, Elements, row ) {
+      result := result.Union( selectvalues( row, CapacityAndSaleBudgeChartRowProduct, cell, cell.ProductCode() ) ); 
+    }
+    return &result;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/_ROOT_Type_CapacityAndSaleBudgeChartRow.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/_ROOT_Type_CapacityAndSaleBudgeChartRow.qbl
new file mode 100644
index 0000000..0ecbf2c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/_ROOT_Type_CapacityAndSaleBudgeChartRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeChartRow
+{
+  #keys: '5[414384.0.852471790][414384.0.852471788][0.0.0][414384.0.852471789][414384.0.852471791]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeChartRows'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/Attribute_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..63014d7
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.852471849][414384.0.852471848][414384.0.852471850]'
+  Description: '浜у搧缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/DefaultValue_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/DefaultValue_ProductCode.qbl
new file mode 100644
index 0000000..73158ab
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/DefaultValue_ProductCode.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductCode
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..ad1fad0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  CapacityAndSaleBudgeChartRow parent,
+  String productCode
+) as CapacityAndSaleBudgeChartRowProduct
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( parent, CapacityAndSaleBudgeChartRowProduct, item, item.ProductCode() = productCode );
+    if( isnull( value ) ) {
+      value := parent.CapacityAndSaleBudgeChartRowProduct( relnew, ProductCode := productCode );
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/_ROOT_Type_CapacityAndSaleBudgeChartRowProduct.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/_ROOT_Type_CapacityAndSaleBudgeChartRowProduct.qbl
new file mode 100644
index 0000000..f52d6fe
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRowProduct/_ROOT_Type_CapacityAndSaleBudgeChartRowProduct.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeChartRowProduct
+{
+  #keys: '5[414384.0.852471769][414384.0.852471767][0.0.0][414384.0.852471768][414384.0.852471770]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeChartRowProducts'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnNo.qbl
new file mode 100644
index 0000000..5e047a1
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnNo
+{
+  #keys: '3[414384.0.829650697][414384.0.829650696][414384.0.829650698]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
deleted file mode 100644
index 3329fb9..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute OrgCode
-{
-  #keys: '3[414384.0.822962978][414384.0.822962977][414384.0.822962979]'
-  Description: '缁勭粐缂栫爜'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_PlaceOfProductionOfArray.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_PlaceOfProductionOfArray.qbl
new file mode 100644
index 0000000..da79fc6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_PlaceOfProductionOfArray.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfArray
+{
+  #keys: '3[414384.0.864360344][414384.0.864360343][414384.0.864360345]'
+  Description: '闈㈡澘鍩哄湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
deleted file mode 100644
index 296ffa6..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute RowName
-{
-  #keys: '3[414384.0.816630960][414384.0.816630959][414384.0.816630961]'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowNo.qbl
new file mode 100644
index 0000000..28babc0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNo
+{
+  #keys: '3[414384.0.829650684][414384.0.829650683][414384.0.829650685]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Method_GetProductCodes.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Method_GetProductCodes.qbl
new file mode 100644
index 0000000..a756994
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Method_GetProductCodes.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetProductCodes () as owning Strings
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    return selectuniquevalues( this, CapacityAndSaleBudgeCompareItemRowProduct, item, item.ProductCode() );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
index 8d6c215..e155e81 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -3,15 +3,15 @@
 StaticMethod CreateIfNotExist (
   ScenarioManager scenarioManager,
   String businessType,
-  String orgCode
+  String placeOfProductionOfArray
 ) as CapacityAndSaleBudgeCompareItemRow
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
-    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.OrgCode() = orgCode );
+    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
     if( isnull( value ) ) {
-      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, OrgCode := orgCode );  
+      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );  
     } 
     return value;
   *]
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
index aae08c5..e0c8850 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
@@ -10,7 +10,7 @@
     // yypsybs Sep-18-2023 (created)
     value := select( parent, CapacityAndSaleBudgeCompareItemRowProduct, item, item.ProductCode() = productCode );
     if( isnull( value ) ) {
-      parent.CapacityAndSaleBudgeCompareItemRowProduct( relnew, ProductCode := productCode );
+      value := parent.CapacityAndSaleBudgeCompareItemRowProduct( relnew, ProductCode := productCode );
     }
     return value;
   *]
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl
new file mode 100644
index 0000000..daaa7c4
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeQty
+{
+  #keys: '3[414724.0.26810845][414724.0.26810844][414724.0.26810846]'
+  Description: '鎺堟潈鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl
new file mode 100644
index 0000000..e06118e
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerCode
+{
+  #keys: '3[414724.0.26810895][414724.0.26810894][414724.0.26810896]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..0f7b94f
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.26810822][414724.0.26810821][414724.0.26810823]'
+  Description: '褰撴湀棰勬祴鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..e7efb6d
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26781405][414724.0.26781404][414724.0.26781406]'
+  Description: 'KEY'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl
new file mode 100644
index 0000000..bed9ebe
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateQty
+{
+  #keys: '3[414724.0.26810885][414724.0.26810884][414724.0.26810886]'
+  Description: '鎿嶄綔鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl
new file mode 100644
index 0000000..2d14ed5
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateTime
+{
+  #keys: '3[414724.0.26810875][414724.0.26810874][414724.0.26810876]'
+  Description: '鎿嶄綔鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl
new file mode 100644
index 0000000..51587f6
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateType
+{
+  #keys: '3[414724.0.26810855][414724.0.26810854][414724.0.26810856]'
+  Description: '鎿嶄綔绫诲瀷: 鎺堟潈銆佸弽绛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl
new file mode 100644
index 0000000..adb6450
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Operator
+{
+  #keys: '3[414724.0.26810865][414724.0.26810864][414724.0.26810866]'
+  Description: '鎿嶄綔浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl
new file mode 100644
index 0000000..4f5eb16
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseQty
+{
+  #keys: '3[414724.0.26810832][414724.0.26810831][414724.0.26810833]'
+  Description: '鍙嶇鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl
new file mode 100644
index 0000000..8087bf8
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.26810809][414724.0.26810808][414724.0.26810810]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..518029b
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26781415][414724.0.26781414][414724.0.26781416]'
+  Description: '搴忓彿锛屼笉涓�瀹氫娇鐢�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..75e9790
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26810799][414724.0.26810798][414724.0.26810800]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl b/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl
new file mode 100644
index 0000000..79f9e34
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_HedgingRecord
+{
+  #keys: '5[414724.0.26781385][414724.0.26781383][0.0.0][414724.0.26781384][414724.0.26781386]'
+  BaseType: Object
+  Description: '鍐插噺璁板綍'
+  StructuredName: 'H_HedgingRecords'
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Method_GetCallJSONString.qbl b/_Main/BL/Type_ERPRequestOfPR/Method_GetCallJSONString.qbl
new file mode 100644
index 0000000..0c9c74e
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Method_GetCallJSONString.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCallJSONString () as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    conv := DateTimeToString::StandardConverter();
+    conv.SetCustomConversion();
+    conv.CustomFormatString( 'yyyyMMdd' );
+    
+    requestJSON := JSON::Object();
+    requestJSON.Add( "BusinessType", this.BusinessType() );
+    requestJSON.Add( "DataID", this.DataID() );
+    requestJSON.Add( "DeliveryDate", conv.Convert( this.DeliveryDate().DateTime() ) );
+    requestJSON.Add( "MRPCalverNo", this.MRPCalverNo() );
+    requestJSON.Add( "OrganCode", this.OrganCode() );
+    requestJSON.Add( "ProductID", this.ProductID() );
+    requestJSON.Add( "ProductName", this.ProductName() );
+    requestJSON.Add( "ProvideCode", this.ProviderCode() );
+    requestJSON.Add( "ProviderName", this.ProviderName() );
+    requestJSON.Add( "Quantity", this.Quantity() );
+    requestJSON.Add( "StockingPointID", this.StockingPointID() );
+    requestJSON.Add( "UnitOfMeasure", this.UnitOfMeasure() );
+    
+    return requestJSON.AsString();
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl b/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl
new file mode 100644
index 0000000..005fe07
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfBrokersExecuting
+{
+  #keys: '3[414702.0.318091378][414702.0.318091377][414702.0.318091379]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_ApiBuildPostRequestBody.qbl b/_Main/BL/Type_GlobalDTOTable/Method_ApiBuildPostRequestBody.qbl
new file mode 100644
index 0000000..d7970e3
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_ApiBuildPostRequestBody.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+Method ApiBuildPostRequestBody (
+  String bodynumber
+) as String
+{
+  TextBody:
+  [*
+    // Administrator Aug-18-2023 (created)
+    
+    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_GlobalDTOTable/Method_InitTestData.qbl b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
index 4c169d3..dd75de6 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
@@ -16,52 +16,5 @@
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat2, "PROD_2", 1777.0, "PROD_2_DESC" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 3, "鎵嬫満浜嬩笟閮�", "MAT_3", "MAT_3", "TYPE_1", 233.0, "閫氱敤", "鐭懆鏈�" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 4, "鎵嬫満浜嬩笟閮�", "MAT_4", "MAT_4", "TYPE_2", 233.0, "涓撶敤", "鐭懆鏈�" );
-    
-    
-    // yypsybs Sep-15-2023 (created)
-    info( "CapacityAndSaleBudge::InitTestData" )
-    this.CapacityAndSaleBudge( relflush );
-    for( i := 1; i < 100; i := i + 1 ) {
-      this.CapacityAndSaleBudge( relnew, 
-                                 PlaceOfProductionOfArray := "闈㈡澘鍩哄湴" + [String]Number::Random( 1, 10 ), 
-                                 OrgCode := "浜嬩笟閮�" + [String]Number::Random( 1, 10 ), 
-                                 CapacityInPCSInMonth1 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth2 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth3 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth4 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth5 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth6 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth7 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth8 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth9 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth10 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth11 := Number::Random( 1, 10000 ),  
-                                 CapacityInPCSInMonth12 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth1 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth2 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth3 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth4 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth5 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth6 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth7 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth8 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth9 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth10 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth11 := Number::Random( 1, 10000 ),  
-                                 CapacityInSheetInMonth12 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth1 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth2 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth3 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth4 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth5 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth6 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth7 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth8 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth9 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth10 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth11 := Number::Random( 1, 10000 ),
-                                 SaleAmountInMonth12 := Number::Random( 1, 10000 ) 
-                               );
-    }
   *]
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl
new file mode 100644
index 0000000..ac058bb
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_AIPISPIP",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "瀹為檯搴撳瓨鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl
new file mode 100644
index 0000000..fb840ce
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_ConversionFactor",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "鍗曚綅杞崲鍥犲瓙鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl
new file mode 100644
index 0000000..66d92a1
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_CustomOrder",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "璁㈠崟鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
new file mode 100644
index 0000000..2384943
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_Forecast (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_Forecast",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "棰勬祴鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl
new file mode 100644
index 0000000..fd32c60
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_InventorySupply",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "搴撳瓨渚涘簲鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl
new file mode 100644
index 0000000..3d491fe
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_Operation (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_Operation",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "鎿嶄綔鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
new file mode 100644
index 0000000..49e26b7
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_OperationBOM",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "鎿嶄綔BOM鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl
new file mode 100644
index 0000000..2364cd5
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_OperationCost (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_OperationCost",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "鎿嶄綔鎴愭湰鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ProductInLane.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ProductInLane.qbl
new file mode 100644
index 0000000..5bf60a9
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ProductInLane.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_ProductInLane (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_ProductInLane",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "浜у搧鍦ㄨ溅閬撴暟鎹�",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl
new file mode 100644
index 0000000..2637fd7
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_Product_MP (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_Product_MP",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "浜у搧鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl
new file mode 100644
index 0000000..56d48d9
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_SalesSegment_MP",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "閿�鍞儴闂�",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl
new file mode 100644
index 0000000..0f166b2
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_StockingPointCost",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "搴撳瓨鐐规垚鏈暟鎹�",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl
new file mode 100644
index 0000000..4974578
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP (
+  Number errorNo,
+  String errorMessage
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_UnitOfMeasure_MP",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "鍗曚綅鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl
new file mode 100644
index 0000000..a0a1af4
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_AIPISPIP
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_AIPISPIP",
+                                  ElementTotal    := this.Global_MappingActualProductInStockingPointInPeriod( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "瀹為檯搴撳瓨鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl
new file mode 100644
index 0000000..b0ad4d2
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_ConversionFactor
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_ConversionFactor",
+                                  ElementTotal    := this.Global_MappingConversionFactor( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鍗曚綅杞崲鍥犲瓙鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl
new file mode 100644
index 0000000..677960c
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_CustomOrder
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_CustomOrder",
+                                  ElementTotal    := this.Global_MappingCustomOrder( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "璁㈠崟鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
new file mode 100644
index 0000000..c9f8835
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_Forecast
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_Forecast",
+                                  ElementTotal    := this.Global_MappingForecast( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "棰勬祴鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl
new file mode 100644
index 0000000..2ae1628
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_InventorySupply
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_InventorySupply",
+                                  ElementTotal    := this.Global_MappingInventorySupply( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "搴撳瓨渚涘簲鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl
new file mode 100644
index 0000000..718b9d0
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_Operation
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_Operation",
+                                  ElementTotal    := this.Global_MappingOperation( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鎿嶄綔鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
new file mode 100644
index 0000000..12bda61
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_OperationBOM
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_OperationBOM",
+                                  ElementTotal    := this.Global_MappingOperationBOM( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鎿嶄綔BOM鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl
new file mode 100644
index 0000000..313be5a
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_OperationCost
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_OperationCost",
+                                  ElementTotal    := this.Global_MappingOperationCost( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鎿嶄綔鎴愭湰鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl
new file mode 100644
index 0000000..d4da6d7
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_ProductInLane
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_ProductInLane",
+                                  ElementTotal    := this.Global_MappingProductInLane( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "浜у搧鍦ㄨ溅閬撴暟鎹�",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl
new file mode 100644
index 0000000..bac0207
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_Product_MP
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_Product_MP",
+                                  ElementTotal    := this.Global_MappingProduct_MP( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "浜у搧鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl
new file mode 100644
index 0000000..4cf7193
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_SalesSegment_MP
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_SalesSegment_MP",
+                                  ElementTotal    := this.Global_MappingSalesSegment_MP( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "閿�鍞儴闂�",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl
new file mode 100644
index 0000000..1e75ed5
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_StockingPointCost
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_StockingPointCost",
+                                  ElementTotal    := this.Global_MappingStockingPointCost( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "搴撳瓨鐐规垚鏈暟鎹�",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl
new file mode 100644
index 0000000..d8eb2dd
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_UnitOfMeasure_MP",
+                                  ElementTotal    := this.Global_MappingUnitOfMeasure_MP( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鍗曚綅鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl
new file mode 100644
index 0000000..73c0d85
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnException (
+  Exception e,
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := e.Message(),
+                                  IsSuccess     := false,
+                                  Name          := "鎺ュ彛璋冪敤澶辫触",
+                                  ErrorNo       := e.ErrorNumber(),
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl b/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl
index 7a92a12..08f1d13 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl
@@ -6,7 +6,7 @@
 {
   TextBody:
   [*
-    logfile( "--------------------------------------1------------------------------------------------" );
+    logfile( "--------------------------------------1锛岃繘鏉ヤ簡------------------------------------------------" );
     nameValue := requestnvt.Root();
     
     bodyHandle := requestnvt.GetHandle( "Body" );
@@ -40,9 +40,7 @@
       PanelMaterialTM18::ReceiveDataGeneration( this, requestnvt );
     }
     
-    
     info( "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" );
-    
     
     replynvt := LibInt_MessageAccessor::CreateEmptyMessage();
     LibInt_MessageAccessor::SetHeaderProperty( replynvt, "Content-Type", "application/json" );
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeOrders.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeOrders.qbl
new file mode 100644
index 0000000..8d93ae2
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeOrders.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+Method SynchronizeOrders (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    info( "浜у搧涓暟锛�", macroPlan.Product_MP( relsize ) );
+    
+    traverse ( this, PanelMaterialAll, pma ) {
+      if ( pma.BusinessType() = "姹借溅鐢靛瓙" ) {
+        PanelMaterialAll::SynchronizePanelMaterialAutomotiveElectronics( macroPlan, pma );
+      } else if ( pma.BusinessType() = "IT" ) {
+        PanelMaterialAll::SynchronizePanelMaterialIT( macroPlan, pma );
+      } else if ( pma.BusinessType() = "涓撴樉" ) {
+        PanelMaterialAll::SynchronizePanelMaterialSpecializedDisplay( macroPlan, pma );
+      } else if ( pma.BusinessType() = "杩愬姩鍋ュ悍" ) {
+        PanelMaterialAll::SynchronizePanelMaterialSportsHealth( macroPlan, pma );
+      } else if ( pma.BusinessType() = "澶╁崕" ) {
+        PanelMaterialAll::SynchronizePanelMaterialTianHua( macroPlan, pma );
+      } else if ( pma.BusinessType() = "TM17" ) {
+        PanelMaterialAll::SynchronizePanelMaterialTM17( macroPlan, pma );
+      } else if ( pma.BusinessType() = "TM18" ) {
+        PanelMaterialAll::SynchronizePanelMaterialTM18( macroPlan, pma );
+      } else if ( pma.BusinessType() = "杞﹁浇" ) {
+        PanelMaterialAll::SynchronizePanelMaterialVehicle( macroPlan, pma );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
new file mode 100644
index 0000000..100a489
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizationAllMappingBrokerAndAPI (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingUnitOfMeasure_MP( relflush );
+    globalOTDTable.Global_MappingSalesSegment_MP( relflush );
+    globalOTDTable.Global_MappingStockingPoint_MP( relflush );
+    globalOTDTable.Global_MappingCurrency_MP( relflush );
+    globalOTDTable.Global_MappingCurrencyRate_MP( relflush );
+    globalOTDTable.Global_MappingProduct_MP( relflush );
+    globalOTDTable.Global_MappingConversionFactor( relflush );
+    globalOTDTable.Global_MappingOperation( relflush );
+    globalOTDTable.Global_MappingOperationBOM( relflush );
+    globalOTDTable.Global_MappingLane( relflush );
+    globalOTDTable.Global_MappingLaneLeg( relflush );
+    globalOTDTable.Global_MappingProductInLane( relflush );
+    globalOTDTable.Global_MappingActualProductInStockingPointInPeriod( relflush );
+    globalOTDTable.Global_MappingInventorySupply( relflush );
+    globalOTDTable.Global_MappingStockingPointCost( relflush );
+    globalOTDTable.Global_MappingOperationCost( relflush );
+    globalOTDTable.Global_MappingForecast( relflush );
+    globalOTDTable.Global_MappingCustomOrder( relflush );
+    
+    globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrency_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLane::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLaneLeg::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationSalesSegment_MP.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationSalesSegment_MP.qbl
new file mode 100644
index 0000000..01a32c3
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationSalesSegment_MP.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizationSalesSegment_MP (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable,
+  Strings businessTypes
+)
+{
+  TextBody:
+  [*
+    businessType := businessTypes.Element( 0 );
+    
+    targetGlobal_MappingSalesSegment_MPs := selectsortedset( globalOTDTable, 
+                                                             Global_MappingSalesSegment_MP,
+                                                             tempGMSSMP,
+                                                             tempGMSSMP.BusinessType() = businessType,
+                                                             tempGMSSMP.DisplayIndex()
+                                                            );
+    
+    maxLevel := 0;
+    traverse ( targetGlobal_MappingSalesSegment_MPs, Elements, gmssmp ) {
+      targetParentSalesSegment_MP := select( macroPlan, SalesSegment_MP, tempSSMP, tempSSMP.Name() = gmssmp.ParentName() );
+      SalesSegment_MP::Create( macroPlan, targetParentSalesSegment_MP, gmssmp.Name(), gmssmp.DisplayIndex(), false );
+      maxLevel := maxvalue( maxLevel, gmssmp.DisplayIndex() );
+    }
+    
+    for ( i := 1; i <= maxLevel; i++ ) {
+      SalesLevel_MP::Create( [String]i, macroPlan, false ); 
+    }
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationStockingPoint_MP.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationStockingPoint_MP.qbl
new file mode 100644
index 0000000..d933711
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationStockingPoint_MP.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizationStockingPoint_MP (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
+)
+{
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationUnitOfMeasure_MP.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationUnitOfMeasure_MP.qbl
new file mode 100644
index 0000000..d4805bf
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationUnitOfMeasure_MP.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizationUnitOfMeasure_MP (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    info( "鍒濆鍖栧畬鎴�, 寮�濮嬫墽琛� UnitOfMeasure_MP Data Broker" );
+    //globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().Execute();
+    
+    info( "UnitOfMeasure_MP Data Broker 鎵ц瀹屾垚, Start UnitOfMeasure_MP Mapping" )
+    traverse ( globalOTDTable, Global_MappingUnitOfMeasure_MP, tempGMUOMMP, true ) {
+      if ( isnull( UnitOfMeasure_MP::FindByName( macroPlan, tempGMUOMMP.Name() ) ) ) {
+        targetUnitOfMeasure_MP := UnitOfMeasure_MP::Create( macroPlan, tempGMUOMMP.Name(), false, false );
+        if ( tempGMUOMMP.IsDefault() ) {
+          targetUnitOfMeasure_MP.SetAsDefault();
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_BrokerName.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_BrokerName.qbl
new file mode 100644
index 0000000..be43894
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_BrokerName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BrokerName
+{
+  #keys: '3[414702.0.265409667][414702.0.265409666][414702.0.265409668]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ElementTotal.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ElementTotal.qbl
new file mode 100644
index 0000000..875b972
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ElementTotal.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ElementTotal
+{
+  #keys: '3[414702.0.265409647][414702.0.265409646][414702.0.265409648]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorDateTime.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorDateTime.qbl
new file mode 100644
index 0000000..a40993c
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorDateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorDateTime
+{
+  #keys: '3[414702.0.265409719][414702.0.265409718][414702.0.265409720]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorMessage.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorMessage.qbl
new file mode 100644
index 0000000..8889795
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorMessage.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorMessage
+{
+  #keys: '3[414702.0.265409677][414702.0.265409676][414702.0.265409678]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorNo.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorNo.qbl
new file mode 100644
index 0000000..9f859c7
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ErrorNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorNo
+{
+  #keys: '3[414702.0.265409730][414702.0.265409729][414702.0.265409731]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_IsSuccess.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_IsSuccess.qbl
new file mode 100644
index 0000000..9371588
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_IsSuccess.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsSuccess
+{
+  #keys: '3[414702.0.265409687][414702.0.265409686][414702.0.265409688]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_Name.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_Name.qbl
new file mode 100644
index 0000000..952c519
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.265409697][414702.0.265409696][414702.0.265409698]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_SuccessDateTime.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_SuccessDateTime.qbl
new file mode 100644
index 0000000..118f95e
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_SuccessDateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SuccessDateTime
+{
+  #keys: '3[414702.0.265409657][414702.0.265409656][414702.0.265409658]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/_ROOT_Type_Global_BrokerExecuteLog.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/_ROOT_Type_Global_BrokerExecuteLog.qbl
new file mode 100644
index 0000000..828e927
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/_ROOT_Type_Global_BrokerExecuteLog.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_BrokerExecuteLog
+{
+  #keys: '5[414702.0.265587043][414702.0.265587041][0.0.0][414702.0.265587042][414702.0.265587044]'
+  BaseType: Object
+  StructuredName: 'Global_BrokerExecuteLogs'
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ActualInventoryLevelEnd.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ActualInventoryLevelEnd.qbl
new file mode 100644
index 0000000..88049ea
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ActualInventoryLevelEnd.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ActualInventoryLevelEnd
+{
+  #keys: '3[414702.0.262251995][414702.0.262251994][414702.0.262251996]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Date.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Date.qbl
new file mode 100644
index 0000000..6bc7ee6
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Date.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+  #keys: '3[414702.0.262252005][414702.0.262252004][414702.0.262252006]'
+  IsReadOnly: true
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Description.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Description.qbl
new file mode 100644
index 0000000..8400797
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_Description.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Description
+{
+  #keys: '3[414702.0.262252018][414702.0.262252017][414702.0.262252019]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_IsAvailable.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_IsAvailable.qbl
new file mode 100644
index 0000000..79fc159
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_IsAvailable.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsAvailable
+{
+  #keys: '3[414702.0.262252028][414702.0.262252027][414702.0.262252029]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ManufacturedDate.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ManufacturedDate.qbl
new file mode 100644
index 0000000..55f70c4
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ManufacturedDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ManufacturedDate
+{
+  #keys: '3[414702.0.262252041][414702.0.262252040][414702.0.262252042]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ProductID.qbl
new file mode 100644
index 0000000..bf2b39f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.262252054][414702.0.262252053][414702.0.262252055]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockType.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockType.qbl
new file mode 100644
index 0000000..5fb1718
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockType
+{
+  #keys: '3[414702.0.262252080][414702.0.262252079][414702.0.262252081]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockingPointID.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..46d1307
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/Attribute_StockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.262252067][414702.0.262252066][414702.0.262252068]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl
new file mode 100644
index 0000000..fd7cd52
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_AIPISPIPTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: Date
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProductID
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: StockingPointID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/_ROOT_Type_Global_MappingActualProductInStockingPointInPeriod.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/_ROOT_Type_Global_MappingActualProductInStockingPointInPeriod.qbl
new file mode 100644
index 0000000..56520e3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/_ROOT_Type_Global_MappingActualProductInStockingPointInPeriod.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingActualProductInStockingPointInPeriod
+{
+  #keys: '5[414702.0.262251935][414702.0.262251933][0.0.0][414702.0.262251934][414702.0.262251936]'
+  BaseType: Object
+  StructuredName: 'Global_MappingActualProductInStockingPointInPeriods'
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/Attribute_Factor.qbl b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_Factor.qbl
new file mode 100644
index 0000000..cad933e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_Factor.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Factor
+{
+  #keys: '3[414702.0.247716851][414702.0.247716850][414702.0.247716852]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/Attribute_IsEnabled.qbl b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_IsEnabled.qbl
new file mode 100644
index 0000000..74bd9eb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_IsEnabled.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEnabled
+{
+  #keys: '3[414702.0.247716861][414702.0.247716860][414702.0.247716862]'
+  IsReadOnly: true
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ffb1677
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.247716871][414702.0.247716870][414702.0.247716872]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/Attribute_SourceUnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_SourceUnitOfMeasureName.qbl
new file mode 100644
index 0000000..547cf24
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_SourceUnitOfMeasureName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SourceUnitOfMeasureName
+{
+  #keys: '3[414702.0.247716881][414702.0.247716880][414702.0.247716882]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/Attribute_TargetUnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_TargetUnitOfMeasureName.qbl
new file mode 100644
index 0000000..9ef2e49
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/Attribute_TargetUnitOfMeasureName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TargetUnitOfMeasureName
+{
+  #keys: '3[414702.0.247716891][414702.0.247716890][414702.0.247716892]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git "a/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl" "b/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl"
new file mode 100644
index 0000000..fc0221a
--- /dev/null
+++ "b/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex Global_MappingConversionFactorTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: IsEnabled
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProductID
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: SourceUnitOfMeasureName
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: TargetUnitOfMeasureName
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/_ROOT_Type_Global_MappingConversionFactor.qbl b/_Main/BL/Type_Global_MappingConversionFactor/_ROOT_Type_Global_MappingConversionFactor.qbl
new file mode 100644
index 0000000..3d26d6d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/_ROOT_Type_Global_MappingConversionFactor.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingConversionFactor
+{
+  #keys: '5[414702.0.247716832][414702.0.247716830][0.0.0][414702.0.247716831][414702.0.247716833]'
+  BaseType: Object
+  StructuredName: 'Global_MappingConversionFactors'
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_CurrencyID.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..70588bf
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.247706552][414702.0.247706551][414702.0.247706553]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Rate.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Rate.qbl
new file mode 100644
index 0000000..a601632
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Rate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Rate
+{
+  #keys: '3[414702.0.247706562][414702.0.247706561][414702.0.247706563]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Start.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Start.qbl
new file mode 100644
index 0000000..0300fcf
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/Attribute_Start.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Start
+{
+  #keys: '3[414702.0.247706575][414702.0.247706574][414702.0.247706576]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
new file mode 100644
index 0000000..13d9157
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
@@ -0,0 +1,51 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateByAPI (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingCurrencyRate_MP( relflush );
+    
+    bodynumber := "5";
+    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
+    address := "api-uat-sgc.tianma.cn";
+    url := "/otdService/https/GetCurrencyRatesInfo";
+    port := 443;
+    i := HTTPInterface::Create( address, port);
+    i.URL( url );
+    i.SSL( true );
+    i.SSLKeystore( "MyKeystore" );
+    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 );
+    reponseDataJson := htmlresponse.Get( "responseData" );
+    datalist := reponseDataJson.Get( "dataList" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    total := datalist.Size();
+    for ( j := 0; j < total; j++ ) {
+      globalOTDTable.Global_MappingCurrencyRate_MP( relnew,
+                                                    CurrencyID := guard( datalist.Get( j ).Get( "currencyid" ).GetString(), "" ),
+                                                    Rate       := guard( [Real]datalist.Get( j ).Get( "rate" ).GetString(), 0.0 ),
+                                                    Start      := guard( cnv2.Convert( datalist.Get( j ).Get( "start" ).GetString() ), Date::MinDate() )
+                                                   );
+    }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingCurrencyRate_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯佹眹鐜囷級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/_ROOT_Type_Global_MappingCurrencyRate_MP.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/_ROOT_Type_Global_MappingCurrencyRate_MP.qbl
new file mode 100644
index 0000000..95c9609
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/_ROOT_Type_Global_MappingCurrencyRate_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingCurrencyRate_MP
+{
+  #keys: '5[414702.0.247665113][414702.0.247665111][0.0.0][414702.0.247665112][414702.0.247665114]'
+  BaseType: Object
+  StructuredName: 'Global_MappingCurrencyRate_MPs'
+}
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_ID.qbl
new file mode 100644
index 0000000..1ffa886
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.247705924][414702.0.247705923][414702.0.247705925]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_IsBase.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_IsBase.qbl
new file mode 100644
index 0000000..ec6c69b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_IsBase.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsBase
+{
+  #keys: '3[414702.0.247664837][414702.0.247664836][414702.0.247664838]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_Name.qbl
new file mode 100644
index 0000000..59d3a9c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.247664827][414702.0.247664826][414702.0.247664828]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
new file mode 100644
index 0000000..e938f73
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateByAPI (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingCurrency_MP( relflush );
+    
+    bodynumber := "1";
+    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
+    address := "api-uat-sgc.tianma.cn";
+    url := "/otdService/https/GetCurrenciesInfo";
+    port := 443;
+    i := HTTPInterface::Create( address, port);
+    i.URL( url );
+    i.SSL( true );
+    i.SSLKeystore( "MyKeystore" );
+    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 );
+    reponseDataJson := htmlresponse.Get( "responseData" );
+    datalist := reponseDataJson.Get( "dataList" );
+    
+    total := datalist.Size();
+    for ( j := 0; j < total; j++ ) {
+      globalOTDTable.Global_MappingCurrency_MP( relnew,
+                                                ID     := guard( datalist.Get( j ).Get( "id" ).GetString(), "" ),
+                                                Name   := guard( datalist.Get( j ).Get( "name" ).GetString(), "" ),
+                                                IsBase := guard( datalist.Get( j ).Get( "isbase" ).GetBoolean(), false )
+                                               );
+    }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingCurrency_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯侊級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/_ROOT_Type_Global_MappingCurrency_MP.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/_ROOT_Type_Global_MappingCurrency_MP.qbl
new file mode 100644
index 0000000..d93f74c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/_ROOT_Type_Global_MappingCurrency_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingCurrency_MP
+{
+  #keys: '5[414702.0.247705874][414702.0.247705872][0.0.0][414702.0.247705873][414702.0.247705875]'
+  BaseType: Object
+  StructuredName: 'Global_MappingCurrency_MPs'
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..bfa20ee
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.265050257][414702.0.265050256][414702.0.265050258]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CurrencyID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..72f92fc
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.265050267][414702.0.265050266][414702.0.265050268]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Customer.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Customer.qbl
new file mode 100644
index 0000000..2f17f23
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.265050277][414702.0.265050276][414702.0.265050278]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CustomerID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..022daa1
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.265050287][414702.0.265050286][414702.0.265050288]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ID.qbl
new file mode 100644
index 0000000..b3f10e8
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.265050297][414702.0.265050296][414702.0.265050298]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_IsAvailable.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_IsAvailable.qbl
new file mode 100644
index 0000000..84eb713
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_IsAvailable.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsAvailable
+{
+  #keys: '3[414702.0.265050307][414702.0.265050306][414702.0.265050308]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderDate.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..d43da69
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.265050317][414702.0.265050316][414702.0.265050318]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderID.qbl
new file mode 100644
index 0000000..4cb585c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.265050327][414702.0.265050326][414702.0.265050328]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderLineID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..b220b24
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.265050337][414702.0.265050336][414702.0.265050338]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl
new file mode 100644
index 0000000..7e887b1
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderType
+{
+  #keys: '3[414702.0.265050347][414702.0.265050346][414702.0.265050348]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Price.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Price.qbl
new file mode 100644
index 0000000..0b78e7a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.265050357][414702.0.265050356][414702.0.265050358]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_PriorityName.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..503f72e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.265050367][414702.0.265050366][414702.0.265050368]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..0a36831
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.265050377][414702.0.265050376][414702.0.265050378]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Quantity.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..a1e5d12
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.265050387][414702.0.265050386][414702.0.265050388]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..5852c57
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.265050397][414702.0.265050396][414702.0.265050398]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_StockingPointID.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..711c748
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.265050407][414702.0.265050406][414702.0.265050408]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7db56bb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.265050417][414702.0.265050416][414702.0.265050418]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl b/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl
new file mode 100644
index 0000000..fea4228
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_CustomOrderTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/_ROOT_Type_Global_MappingCustomOrder.qbl b/_Main/BL/Type_Global_MappingCustomOrder/_ROOT_Type_Global_MappingCustomOrder.qbl
new file mode 100644
index 0000000..77bd71b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/_ROOT_Type_Global_MappingCustomOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingCustomOrder
+{
+  #keys: '5[414702.0.264905849][414702.0.264905847][0.0.0][414702.0.264905848][414702.0.264905850]'
+  BaseType: Object
+  StructuredName: 'Global_MappingCustomOrders'
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..efba161
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.264905720][414702.0.264905719][414702.0.264905721]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_CurrencyID.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..5057465
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.264905730][414702.0.264905729][414702.0.264905731]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_EndDate.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_EndDate.qbl
new file mode 100644
index 0000000..bd2000e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_EndDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[414702.0.264905740][414702.0.264905739][414702.0.264905741]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_ID.qbl
new file mode 100644
index 0000000..72bf201
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.264905750][414702.0.264905749][414702.0.264905751]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_Price.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_Price.qbl
new file mode 100644
index 0000000..56db917
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.264905760][414702.0.264905759][414702.0.264905761]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_PriorityName.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..3e5454c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.264905770][414702.0.264905769][414702.0.264905771]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_ProductID.qbl
new file mode 100644
index 0000000..76fdfb0
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.264905780][414702.0.264905779][414702.0.264905781]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_Quantity.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_Quantity.qbl
new file mode 100644
index 0000000..9a46ce6
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.264905790][414702.0.264905789][414702.0.264905791]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..001cfa6
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.264905800][414702.0.264905799][414702.0.264905801]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_StartDate.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_StartDate.qbl
new file mode 100644
index 0000000..b6041b9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414702.0.264905810][414702.0.264905809][414702.0.264905811]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_StockingPointID.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..a17318e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.264905823][414702.0.264905822][414702.0.264905824]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingForecast/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..35cf924
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.264905833][414702.0.264905832][414702.0.264905834]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl b/_Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl
new file mode 100644
index 0000000..0b71e7f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_ForecastTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/_ROOT_Type_Global_MappingForecast.qbl b/_Main/BL/Type_Global_MappingForecast/_ROOT_Type_Global_MappingForecast.qbl
new file mode 100644
index 0000000..fbd4f40
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/_ROOT_Type_Global_MappingForecast.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingForecast
+{
+  #keys: '5[414702.0.264901306][414702.0.264901304][0.0.0][414702.0.264901305][414702.0.264901307]'
+  BaseType: Object
+  StructuredName: 'Global_MappingForecasts'
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Date.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Date.qbl
new file mode 100644
index 0000000..92b5404
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+  #keys: '3[414702.0.264621780][414702.0.264621779][414702.0.264621781]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Description.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Description.qbl
new file mode 100644
index 0000000..fa1d524
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_Description.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Description
+{
+  #keys: '3[414702.0.264621790][414702.0.264621789][414702.0.264621791]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ID.qbl
new file mode 100644
index 0000000..07a5934
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.264621800][414702.0.264621799][414702.0.264621801]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ManufacturedDate.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ManufacturedDate.qbl
new file mode 100644
index 0000000..2382366
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ManufacturedDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ManufacturedDate
+{
+  #keys: '3[414702.0.264621810][414702.0.264621809][414702.0.264621811]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ProductID.qbl
new file mode 100644
index 0000000..fbf35f1
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.264621820][414702.0.264621819][414702.0.264621821]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_StockingPointID.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..c1c48b7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.264621830][414702.0.264621829][414702.0.264621831]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_SupplyType.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_SupplyType.qbl
new file mode 100644
index 0000000..6d09d45
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_SupplyType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SupplyType
+{
+  #keys: '3[414702.0.264621840][414702.0.264621839][414702.0.264621841]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/Attribute_UserQuantity.qbl b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_UserQuantity.qbl
new file mode 100644
index 0000000..bad7e8b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/Attribute_UserQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UserQuantity
+{
+  #keys: '3[414702.0.264621850][414702.0.264621849][414702.0.264621851]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl b/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl
new file mode 100644
index 0000000..66def77
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_InventorySupplyTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/_ROOT_Type_Global_MappingInventorySupply.qbl b/_Main/BL/Type_Global_MappingInventorySupply/_ROOT_Type_Global_MappingInventorySupply.qbl
new file mode 100644
index 0000000..c2fd61d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/_ROOT_Type_Global_MappingInventorySupply.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingInventorySupply
+{
+  #keys: '5[414702.0.264621761][414702.0.264621759][0.0.0][414702.0.264621760][414702.0.264621762]'
+  BaseType: Object
+  StructuredName: 'Global_MappingInventorySupplys'
+}
diff --git a/_Main/BL/Type_Global_MappingLane/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingLane/Attribute_ID.qbl
new file mode 100644
index 0000000..94add6c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.262115668][414702.0.262115667][414702.0.262115669]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLane/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingLane/Attribute_Name.qbl
new file mode 100644
index 0000000..9194145
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.261962980][414702.0.261962979][414702.0.261962981]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLane/Attribute_UnitID.qbl b/_Main/BL/Type_Global_MappingLane/Attribute_UnitID.qbl
new file mode 100644
index 0000000..59552ab
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/Attribute_UnitID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitID
+{
+  #keys: '3[414702.0.261962990][414702.0.261962989][414702.0.261962991]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLane/Attribute_UserLeadTime.qbl b/_Main/BL/Type_Global_MappingLane/Attribute_UserLeadTime.qbl
new file mode 100644
index 0000000..30037ed
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/Attribute_UserLeadTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UserLeadTime
+{
+  #keys: '3[414702.0.261963000][414702.0.261962999][414702.0.261963001]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
new file mode 100644
index 0000000..6d04074
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateByAPI (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingLane( relflush );
+    
+    bodynumber := "3";
+    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
+    address := "api-uat-sgc.tianma.cn";
+    url := "/otdService/https/GetLanesInfo";
+    port := 443;
+    i := HTTPInterface::Create( address, port);
+    i.URL( url );
+    i.SSL( true );
+    i.SSLKeystore( "MyKeystore" );
+    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 );
+    reponseDataJson := htmlresponse.Get( "responseData" );
+    datalist := reponseDataJson.Get( "dataList" );
+    
+    total := datalist.Size();
+    for ( j := 0; j < total; j++ ) {
+      globalOTDTable.Global_MappingLane( relnew,
+                                         ID:= guard( datalist.Get( j ).Get( "id" ).GetString(), "" ),
+                                         Name   := guard( datalist.Get( j ).Get( "name" ).GetString(), "" ),
+                                         UnitID := guard( datalist.Get( j ).Get( "unitid" ).GetString(), "" ),
+                                         UserLeadTime := guard( datalist.Get( j ).Get( "userleadtime" ).GetString(), "" )
+                                        );
+    }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingLane( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬擄級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingLane/_ROOT_Type_Global_MappingLane.qbl b/_Main/BL/Type_Global_MappingLane/_ROOT_Type_Global_MappingLane.qbl
new file mode 100644
index 0000000..85253a3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLane/_ROOT_Type_Global_MappingLane.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingLane
+{
+  #keys: '5[414702.0.262115640][414702.0.262115638][0.0.0][414702.0.262115639][414702.0.262115641]'
+  BaseType: Object
+  StructuredName: 'Global_MappingLanes'
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/Attribute_DestinationStockingPointID.qbl b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_DestinationStockingPointID.qbl
new file mode 100644
index 0000000..f847bdb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_DestinationStockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DestinationStockingPointID
+{
+  #keys: '3[414702.0.262115693][414702.0.262115692][414702.0.262115694]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/Attribute_LaneID.qbl b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_LaneID.qbl
new file mode 100644
index 0000000..6348e20
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_LaneID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LaneID
+{
+  #keys: '3[414702.0.262115703][414702.0.262115702][414702.0.262115704]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_Name.qbl
new file mode 100644
index 0000000..415fc30
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.262115713][414702.0.262115712][414702.0.262115714]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/Attribute_OriginStockingPointID.qbl b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_OriginStockingPointID.qbl
new file mode 100644
index 0000000..7b3e636
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_OriginStockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OriginStockingPointID
+{
+  #keys: '3[414702.0.262115723][414702.0.262115722][414702.0.262115724]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/Attribute_UserLeadTime.qbl b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_UserLeadTime.qbl
new file mode 100644
index 0000000..17c076a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/Attribute_UserLeadTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UserLeadTime
+{
+  #keys: '3[414702.0.262115733][414702.0.262115732][414702.0.262115734]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
new file mode 100644
index 0000000..20f668b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateByAPI (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingLaneLeg( relflush );
+    
+    bodynumber := "4";
+    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
+    address := "api-uat-sgc.tianma.cn";
+    url := "/otdService/https/GetLaneLegsInfo";
+    port := 443;
+    i := HTTPInterface::Create( address, port);
+    i.URL( url );
+    i.SSL( true );
+    i.SSLKeystore( "MyKeystore" );
+    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 );
+    reponseDataJson := htmlresponse.Get( "responseData" );
+    datalist := reponseDataJson.Get( "dataList" );
+    
+    total := datalist.Size();
+    for ( j := 0; j < total; j++ ) {
+      globalOTDTable.Global_MappingLaneLeg( relnew,
+                                            DestinationStockingPointID := guard( datalist.Get( j ).Get( "destinationstockingpointid" ).GetString(), "" ),
+                                            LaneID                     := guard( datalist.Get( j ).Get( "laneid" ).GetString(), "" ),
+                                            Name                       := guard( datalist.Get( j ).Get( "name" ).GetString(), "" ),
+                                            OriginStockingPointID      := guard( datalist.Get( j ).Get( "originstockingpointid" ).GetString(), "" ),
+                                            UserLeadTime               := guard( datalist.Get( j ).Get( "userleadtime" ).GetString(), "" )
+                                           );
+    }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingLaneLeg( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬撴敮鏋讹級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/_ROOT_Type_Global_MappingLaneLeg.qbl b/_Main/BL/Type_Global_MappingLaneLeg/_ROOT_Type_Global_MappingLaneLeg.qbl
new file mode 100644
index 0000000..3e8f307
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingLaneLeg/_ROOT_Type_Global_MappingLaneLeg.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingLaneLeg
+{
+  #keys: '5[414702.0.261965018][414702.0.261965016][0.0.0][414702.0.261965017][414702.0.261965019]'
+  BaseType: Object
+  StructuredName: 'Global_MappingLaneLegs'
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_ActualCapacity.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_ActualCapacity.qbl
new file mode 100644
index 0000000..e1a34fd
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_ActualCapacity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ActualCapacity
+{
+  #keys: '3[414702.0.261949448][414702.0.261949447][414702.0.261949449]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..1417ed6
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.261949461][414702.0.261949460][414702.0.261949462]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_Line.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_Line.qbl
new file mode 100644
index 0000000..c3760b9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_Line.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Line
+{
+  #keys: '3[414702.0.261949474][414702.0.261949473][414702.0.261949475]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_MaximumQuantity.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_MaximumQuantity.qbl
new file mode 100644
index 0000000..ef5f8c3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_MaximumQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaximumQuantity
+{
+  #keys: '3[414702.0.261949484][414702.0.261949483][414702.0.261949485]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_MinimumQuantity.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_MinimumQuantity.qbl
new file mode 100644
index 0000000..0d8733d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_MinimumQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MinimumQuantity
+{
+  #keys: '3[414702.0.261949494][414702.0.261949493][414702.0.261949495]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_OrganCode.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..f536192
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_OrganCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+  #keys: '3[414702.0.261949504][414702.0.261949503][414702.0.261949505]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_OrganName.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_OrganName.qbl
new file mode 100644
index 0000000..f8f3a2d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_OrganName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganName
+{
+  #keys: '3[414702.0.261949514][414702.0.261949513][414702.0.261949515]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_PlantName.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_PlantName.qbl
new file mode 100644
index 0000000..b5f06b5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_PlantName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlantName
+{
+  #keys: '3[414702.0.261949524][414702.0.261949523][414702.0.261949525]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_ProcessSection.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_ProcessSection.qbl
new file mode 100644
index 0000000..e53f1d6
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_ProcessSection.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProcessSection
+{
+  #keys: '3[414702.0.261949537][414702.0.261949536][414702.0.261949538]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_ProductID.qbl
new file mode 100644
index 0000000..d3238d9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.261949547][414702.0.261949546][414702.0.261949548]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_SequenceNumber.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_SequenceNumber.qbl
new file mode 100644
index 0000000..34fec71
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_SequenceNumber.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SequenceNumber
+{
+  #keys: '3[414702.0.261949560][414702.0.261949559][414702.0.261949561]'
+  IsReadOnly: true
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..3b3d6d8
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.261949573][414702.0.261949572][414702.0.261949574]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_UserLeadTime.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_UserLeadTime.qbl
new file mode 100644
index 0000000..15616b8
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_UserLeadTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UserLeadTime
+{
+  #keys: '3[414702.0.261949583][414702.0.261949582][414702.0.261949584]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl b/_Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl
new file mode 100644
index 0000000..d525c1a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_OperationTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: BusinessType
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: Line
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: OrganCode
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: PlantName
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProcessSection
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProductID
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: SequenceNumber
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/_ROOT_Type_Global_MappingOperation.qbl b/_Main/BL/Type_Global_MappingOperation/_ROOT_Type_Global_MappingOperation.qbl
new file mode 100644
index 0000000..b89eac9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/_ROOT_Type_Global_MappingOperation.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingOperation
+{
+  #keys: '5[414702.0.261400160][414702.0.261400158][0.0.0][414702.0.261400159][414702.0.261400161]'
+  BaseType: Object
+  StructuredName: 'Global_MappingOperations'
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialCode.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialCode.qbl
new file mode 100644
index 0000000..34f2836
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AlternativeMaterialCode
+{
+  #keys: '3[414702.0.261405175][414702.0.261405174][414702.0.261405176]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialType.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialType.qbl
new file mode 100644
index 0000000..9189cae
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AlternativeMaterialType
+{
+  #keys: '3[414702.0.261405188][414702.0.261405187][414702.0.261405189]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialUnit.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialUnit.qbl
new file mode 100644
index 0000000..8f0cd9c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeMaterialUnit.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AlternativeMaterialUnit
+{
+  #keys: '3[414702.0.261405198][414702.0.261405197][414702.0.261405199]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeRate.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeRate.qbl
new file mode 100644
index 0000000..0c92f98
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_AlternativeRate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AlternativeRate
+{
+  #keys: '3[414702.0.261405208][414702.0.261405207][414702.0.261405209]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..f4f88ac
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.261405221][414702.0.261405220][414702.0.261405222]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentCode.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentCode.qbl
new file mode 100644
index 0000000..4b8629f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentCode
+{
+  #keys: '3[414702.0.261405234][414702.0.261405233][414702.0.261405235]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentDescription.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentDescription.qbl
new file mode 100644
index 0000000..dd9a062
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentDescription.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentDescription
+{
+  #keys: '3[414702.0.261405247][414702.0.261405246][414702.0.261405248]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentOutputRate.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentOutputRate.qbl
new file mode 100644
index 0000000..e8989c1
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentOutputRate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentOutputRate
+{
+  #keys: '3[414702.0.261405257][414702.0.261405256][414702.0.261405258]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentType.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentType.qbl
new file mode 100644
index 0000000..e186807
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentType
+{
+  #keys: '3[414702.0.261405270][414702.0.261405269][414702.0.261405271]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnit.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnit.qbl
new file mode 100644
index 0000000..6c49c9e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentUnit
+{
+  #keys: '3[414702.0.261405280][414702.0.261405279][414702.0.261405281]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnitDescription.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnitDescription.qbl
new file mode 100644
index 0000000..b92ee54
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ComponentUnitDescription.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ComponentUnitDescription
+{
+  #keys: '3[414702.0.261405290][414702.0.261405289][414702.0.261405291]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterial.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterial.qbl
new file mode 100644
index 0000000..de448e3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterial.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DescriptionOfAlternativeMaterial
+{
+  #keys: '3[414702.0.261405300][414702.0.261405299][414702.0.261405301]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterialUnits.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterialUnits.qbl
new file mode 100644
index 0000000..4014c58
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_DescriptionOfAlternativeMaterialUnits.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DescriptionOfAlternativeMaterialUnits
+{
+  #keys: '3[414702.0.261405310][414702.0.261405309][414702.0.261405311]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_MaterialSystem.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_MaterialSystem.qbl
new file mode 100644
index 0000000..e2499ba
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_MaterialSystem.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialSystem
+{
+  #keys: '3[414702.0.261405320][414702.0.261405319][414702.0.261405321]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_OrganCode.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..42fdd82
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_OrganCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+  #keys: '3[414702.0.261405330][414702.0.261405329][414702.0.261405331]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProcessSection.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProcessSection.qbl
new file mode 100644
index 0000000..9718001
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProcessSection.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProcessSection
+{
+  #keys: '3[414702.0.261405343][414702.0.261405342][414702.0.261405344]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductCode.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..3e426ad
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414702.0.261405356][414702.0.261405355][414702.0.261405357]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductDescribe.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductDescribe.qbl
new file mode 100644
index 0000000..52b7655
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductDescribe.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductDescribe
+{
+  #keys: '3[414702.0.261405366][414702.0.261405365][414702.0.261405367]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductType.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductType.qbl
new file mode 100644
index 0000000..2e7bcfa
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductType
+{
+  #keys: '3[414702.0.261405376][414702.0.261405375][414702.0.261405377]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductUnitDescription.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductUnitDescription.qbl
new file mode 100644
index 0000000..d242d50
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_ProductUnitDescription.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductUnitDescription
+{
+  #keys: '3[414702.0.261405386][414702.0.261405385][414702.0.261405387]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_SubstitutionRelationship.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_SubstitutionRelationship.qbl
new file mode 100644
index 0000000..65e5c42
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_SubstitutionRelationship.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SubstitutionRelationship
+{
+  #keys: '3[414702.0.261405396][414702.0.261405395][414702.0.261405397]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..9d45810
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.261405406][414702.0.261405405][414702.0.261405407]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitUsageOfComponents.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitUsageOfComponents.qbl
new file mode 100644
index 0000000..cff7d28
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_UnitUsageOfComponents.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitUsageOfComponents
+{
+  #keys: '3[414702.0.261405416][414702.0.261405415][414702.0.261405417]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl b/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl
new file mode 100644
index 0000000..0e37b78
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_OperationBOMTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: AlternativeMaterialCode
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: BusinessType
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ComponentCode
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: OrganCode
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProcessSection
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProductCode
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ComponentUnit
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ComponentType
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/_ROOT_Type_Global_MappingOperationBOM.qbl b/_Main/BL/Type_Global_MappingOperationBOM/_ROOT_Type_Global_MappingOperationBOM.qbl
new file mode 100644
index 0000000..b3ad2f9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/_ROOT_Type_Global_MappingOperationBOM.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingOperationBOM
+{
+  #keys: '5[414702.0.261400165][414702.0.261400163][0.0.0][414702.0.261400164][414702.0.261400166]'
+  BaseType: Object
+  StructuredName: 'Global_MappingOperationBOMs'
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/Attribute_LineID.qbl b/_Main/BL/Type_Global_MappingProductInLane/Attribute_LineID.qbl
new file mode 100644
index 0000000..4a9813d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/Attribute_LineID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineID
+{
+  #keys: '3[414702.0.262182403][414702.0.262182402][414702.0.262182404]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingProductInLane/Attribute_ProductID.qbl
new file mode 100644
index 0000000..1914ac4
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.262182416][414702.0.262182415][414702.0.262182417]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl b/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl
new file mode 100644
index 0000000..134e2d2
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_ProductInLaneTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: LineID
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: ProductID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/_ROOT_Type_Global_MappingProductInLane.qbl b/_Main/BL/Type_Global_MappingProductInLane/_ROOT_Type_Global_MappingProductInLane.qbl
new file mode 100644
index 0000000..095c710
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/_ROOT_Type_Global_MappingProductInLane.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingProductInLane
+{
+  #keys: '5[414702.0.262177982][414702.0.262177980][0.0.0][414702.0.262177981][414702.0.262177983]'
+  BaseType: Object
+  StructuredName: 'Global_MappingProductInLanes'
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..0d9f5ca
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.247710960][414702.0.247710959][414702.0.247710961]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_CommonBusiness.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_CommonBusiness.qbl
new file mode 100644
index 0000000..f2d8b21
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_CommonBusiness.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CommonBusiness
+{
+  #keys: '3[414702.0.247710970][414702.0.247710969][414702.0.247710971]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_EndDate.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_EndDate.qbl
new file mode 100644
index 0000000..efb4082
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_EndDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[414702.0.247710980][414702.0.247710979][414702.0.247710981]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ID.qbl
new file mode 100644
index 0000000..927e312
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.247710990][414702.0.247710989][414702.0.247710991]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsCommon.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsCommon.qbl
new file mode 100644
index 0000000..32fd75c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsCommon.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsCommon
+{
+  #keys: '3[414702.0.247711000][414702.0.247710999][414702.0.247711001]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl
new file mode 100644
index 0000000..431f730
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute KeyProduct
+{
+  #keys: '3[414702.0.247711010][414702.0.247711009][414702.0.247711011]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Name.qbl
new file mode 100644
index 0000000..befa0dc
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.247711020][414702.0.247711019][414702.0.247711021]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Notes.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Notes.qbl
new file mode 100644
index 0000000..81b9008
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_Notes.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Notes
+{
+  #keys: '3[414702.0.247711030][414702.0.247711029][414702.0.247711031]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductMajorType.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductMajorType.qbl
new file mode 100644
index 0000000..0fd5b40
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductMajorType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductMajorType
+{
+  #keys: '3[414702.0.247711040][414702.0.247711039][414702.0.247711041]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductSubclassType.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductSubclassType.qbl
new file mode 100644
index 0000000..935fa0b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ProductSubclassType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductSubclassType
+{
+  #keys: '3[414702.0.247711050][414702.0.247711049][414702.0.247711051]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ShelfLife.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ShelfLife.qbl
new file mode 100644
index 0000000..2dbff7f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_ShelfLife.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShelfLife
+{
+  #keys: '3[414702.0.247711060][414702.0.247711059][414702.0.247711061]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..741605b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.247711070][414702.0.247711069][414702.0.247711071]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/TypeIndex_TypeIndexIDAndBusinessType.qbl b/_Main/BL/Type_Global_MappingProduct_MP/TypeIndex_TypeIndexIDAndBusinessType.qbl
new file mode 100644
index 0000000..bca6c7b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/TypeIndex_TypeIndexIDAndBusinessType.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TypeIndexIDAndBusinessType
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: BusinessType
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/_ROOT_Type_Global_MappingProduct_MP.qbl b/_Main/BL/Type_Global_MappingProduct_MP/_ROOT_Type_Global_MappingProduct_MP.qbl
new file mode 100644
index 0000000..7265bc5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/_ROOT_Type_Global_MappingProduct_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingProduct_MP
+{
+  #keys: '5[414702.0.247665567][414702.0.247665565][0.0.0][414702.0.247665566][414702.0.247665568]'
+  BaseType: Object
+  StructuredName: 'Global_MappingProduct_MPs'
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..81da35c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.238159206][414702.0.238159205][414702.0.238159207]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_DisplayIndex.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_DisplayIndex.qbl
new file mode 100644
index 0000000..92e49ea
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_DisplayIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DisplayIndex
+{
+  #keys: '3[414702.0.238159219][414702.0.238159218][414702.0.238159220]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_Name.qbl
new file mode 100644
index 0000000..b9b05d0
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.238159229][414702.0.238159228][414702.0.238159230]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_ParentName.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_ParentName.qbl
new file mode 100644
index 0000000..4b2842b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/Attribute_ParentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ParentName
+{
+  #keys: '3[414702.0.238159239][414702.0.238159238][414702.0.238159240]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/TypeIndex_TypeIndexBusinessTypeAndName.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/TypeIndex_TypeIndexBusinessTypeAndName.qbl
new file mode 100644
index 0000000..fef133c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/TypeIndex_TypeIndexBusinessTypeAndName.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TypeIndexBusinessTypeAndName
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: BusinessType
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: Name
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/_ROOT_Type_Global_MappingSalesSegment_MP.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/_ROOT_Type_Global_MappingSalesSegment_MP.qbl
new file mode 100644
index 0000000..644aaf7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/_ROOT_Type_Global_MappingSalesSegment_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingSalesSegment_MP
+{
+  #keys: '5[414702.0.238159187][414702.0.238159185][0.0.0][414702.0.238159186][414702.0.238159188]'
+  BaseType: Object
+  StructuredName: 'Global_MappingSalesSegment_MPs'
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_AccountName.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_AccountName.qbl
new file mode 100644
index 0000000..15cd3b3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_AccountName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AccountName
+{
+  #keys: '3[414702.0.264769587][414702.0.264769586][414702.0.264769588]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Cost.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Cost.qbl
new file mode 100644
index 0000000..a37b9e9
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Cost.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Cost
+{
+  #keys: '3[414702.0.264769597][414702.0.264769596][414702.0.264769598]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_CostDriver.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_CostDriver.qbl
new file mode 100644
index 0000000..149060b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_CostDriver.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CostDriver
+{
+  #keys: '3[414702.0.264769607][414702.0.264769606][414702.0.264769608]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ID.qbl
new file mode 100644
index 0000000..cba2641
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.264769617][414702.0.264769616][414702.0.264769618]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ProductID.qbl
new file mode 100644
index 0000000..f5cdb72
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.264769630][414702.0.264769629][414702.0.264769631]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Start.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Start.qbl
new file mode 100644
index 0000000..6a1bfbb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_Start.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Start
+{
+  #keys: '3[414702.0.264769640][414702.0.264769639][414702.0.264769641]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_StockingPointID.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..d8ba3bb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.264769653][414702.0.264769652][414702.0.264769654]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl
new file mode 100644
index 0000000..7b8a1cb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_StockingPointCostTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/_ROOT_Type_Global_MappingStockingPointCost.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/_ROOT_Type_Global_MappingStockingPointCost.qbl
new file mode 100644
index 0000000..ba439d7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/_ROOT_Type_Global_MappingStockingPointCost.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingStockingPointCost
+{
+  #keys: '5[414702.0.264765168][414702.0.264765166][0.0.0][414702.0.264765167][414702.0.264765169]'
+  BaseType: Object
+  StructuredName: 'Global_MappingStockingPointCosts'
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_Name.qbl
new file mode 100644
index 0000000..bc1f32a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.247664695][414702.0.247664694][414702.0.247664696]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_UnitID.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_UnitID.qbl
new file mode 100644
index 0000000..bd54057
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_UnitID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitID
+{
+  #keys: '3[414702.0.247664705][414702.0.247664704][414702.0.247664706]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_id.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_id.qbl
new file mode 100644
index 0000000..739ec3d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/Attribute_id.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.247705763][414702.0.247705762][414702.0.247705764]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
new file mode 100644
index 0000000..b800ef2
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateByAPI (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingStockingPoint_MP( relflush );
+    
+    bodynumber := "2";
+    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
+    address := "api-uat-sgc.tianma.cn";
+    url := "/otdService/https/GetStockingPointsInfo";
+    port := 443;
+    i := HTTPInterface::Create( address, port);
+    i.URL( url );
+    i.SSL( true );
+    i.SSLKeystore( "MyKeystore" );
+    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 );
+    reponseDataJson := htmlresponse.Get( "responseData" );
+    datalist := reponseDataJson.Get( "dataList" );
+    
+    total := datalist.Size();
+    for ( j := 0; j < total; j++ ) {
+      globalOTDTable.Global_MappingStockingPoint_MP( relnew,
+                                                     ID     := guard( datalist.Get( j ).Get( "id" ).GetString(), "" ),
+                                                     Name   := guard( datalist.Get( j ).Get( "name" ).GetString(), "" ),
+                                                     UnitID := guard( datalist.Get( j ).Get( "unitid" ).GetString(), "" )
+                                                    );
+    }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingStockingPoint_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堝簱瀛樼偣锛�",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/_ROOT_Type_Global_MappingStockingPoint_MP.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/_ROOT_Type_Global_MappingStockingPoint_MP.qbl
new file mode 100644
index 0000000..4281efe
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/_ROOT_Type_Global_MappingStockingPoint_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingStockingPoint_MP
+{
+  #keys: '5[414702.0.239762041][414702.0.239762039][0.0.0][414702.0.239762040][414702.0.239762042]'
+  BaseType: Object
+  StructuredName: 'Global_MappingStockingPoint_MPs'
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_AccountName.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_AccountName.qbl
new file mode 100644
index 0000000..8e9fe48
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_AccountName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AccountName
+{
+  #keys: '3[414702.0.264972890][414702.0.264972889][414702.0.264972891]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_Cost.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_Cost.qbl
new file mode 100644
index 0000000..fb6c969
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_Cost.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Cost
+{
+  #keys: '3[414702.0.264972900][414702.0.264972899][414702.0.264972901]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_CostDriver.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_CostDriver.qbl
new file mode 100644
index 0000000..bbacd80
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_CostDriver.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CostDriver
+{
+  #keys: '3[414702.0.264972910][414702.0.264972909][414702.0.264972911]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_ID.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_ID.qbl
new file mode 100644
index 0000000..9c80b12
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.264972920][414702.0.264972919][414702.0.264972921]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_LengthOfTime.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_LengthOfTime.qbl
new file mode 100644
index 0000000..fd779ed
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_LengthOfTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LengthOfTime
+{
+  #keys: '3[414702.0.264972930][414702.0.264972929][414702.0.264972931]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_OrgCode.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..e83c5da
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_OrgCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414702.0.264972940][414702.0.264972939][414702.0.264972941]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_ProductID.qbl
new file mode 100644
index 0000000..5269253
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.264972950][414702.0.264972949][414702.0.264972951]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_Start.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_Start.qbl
new file mode 100644
index 0000000..e41d3dc
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_Start.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Start
+{
+  #keys: '3[414702.0.264972960][414702.0.264972959][414702.0.264972961]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/Attribute_TimeUnit.qbl b/_Main/BL/Type_Global_MappingUnitCost/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..0f3ca7d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/Attribute_TimeUnit.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+  #keys: '3[414702.0.264972970][414702.0.264972969][414702.0.264972971]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl b/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl
new file mode 100644
index 0000000..77f102d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex GlobalOTDTable_OperationCostTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/_ROOT_Type_Global_MappingOperationCost.qbl b/_Main/BL/Type_Global_MappingUnitCost/_ROOT_Type_Global_MappingOperationCost.qbl
new file mode 100644
index 0000000..7ca24cc
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/_ROOT_Type_Global_MappingOperationCost.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingOperationCost
+{
+  #keys: '5[414702.0.264968472][414702.0.264968470][0.0.0][414702.0.264968471][414702.0.264968473]'
+  BaseType: Object
+  StructuredName: 'Global_MappingOperationCosts'
+}
diff --git a/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_IsDefault.qbl b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_IsDefault.qbl
new file mode 100644
index 0000000..cbf856e
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_IsDefault.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsDefault
+{
+  #keys: '3[414702.0.238140135][414702.0.238140134][414702.0.238140136]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_Name.qbl b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_Name.qbl
new file mode 100644
index 0000000..6673dd3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.0.238140145][414702.0.238140144][414702.0.238140146]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/TypeIndex_TypeIndexName.qbl b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/TypeIndex_TypeIndexName.qbl
new file mode 100644
index 0000000..c459f2c
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/TypeIndex_TypeIndexName.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TypeIndexName
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: Name
+    }
+  ]
+}
diff --git a/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/_ROOT_Type_Global_MappingUnitOfMeasure_MP.qbl b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/_ROOT_Type_Global_MappingUnitOfMeasure_MP.qbl
new file mode 100644
index 0000000..cadf447
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/_ROOT_Type_Global_MappingUnitOfMeasure_MP.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingUnitOfMeasure_MP
+{
+  #keys: '5[414702.0.238140113][414702.0.238140111][0.0.0][414702.0.238140112][414702.0.238140114]'
+  BaseType: Object
+  StructuredName: 'Global_MappingUnitOfMeasure_MPs'
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..892901a
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeRealQty
+{
+  #keys: '3[414724.0.46380545][414724.0.46380544][414724.0.46380546]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl
new file mode 100644
index 0000000..0e695ea
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomID
+{
+  #keys: '3[414724.0.46380505][414724.0.46380504][414724.0.46380506]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..81d8766
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.46380495][414724.0.46380494][414724.0.46380496]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..46f0041
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380485][414724.0.46380484][414724.0.46380486]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl
new file mode 100644
index 0000000..d091aba
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Month
+{
+  #keys: '3[414724.0.46380515][414724.0.46380514][414724.0.46380516]'
+  Description: '鏈堜唤'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..4f9d60f
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380525][414724.0.46380524][414724.0.46380526]'
+  Description: '璁㈠崟缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..f99e100
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380535][414724.0.46380534][414724.0.46380536]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..a76d536
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380555][414724.0.46380554][414724.0.46380556]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl b/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..ab13797
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_AuthorizeRealQty
+{
+  #keys: '5[414724.0.46380462][414724.0.46380460][0.0.0][414724.0.46380461][414724.0.46380463]'
+  BaseType: Object
+  Description: '鎺堟潈瀹炴椂鏁版嵁锛屾案涔呬繚鎸�'
+  StructuredName: 'H_AuthorizeRealQtys'
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl
new file mode 100644
index 0000000..2d2de2b
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DetailedInformation
+{
+  #keys: '3[414724.0.53669845][414724.0.53669844][414724.0.53669846]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl
new file mode 100644
index 0000000..d205771
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DeveloperInformation
+{
+  #keys: '3[414724.0.53669855][414724.0.53669854][414724.0.53669856]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl
new file mode 100644
index 0000000..be5ee15
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EClassName
+{
+  #keys: '3[414724.0.54835773][414724.0.54835772][414724.0.54835774]'
+  Description: '鍙戠敓鐨勭被'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl
new file mode 100644
index 0000000..8380f6d
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EDateTime
+{
+  #keys: '3[414724.0.54835763][414724.0.54835762][414724.0.54835764]'
+  Description: '閿欒鍙戠敓鏃ユ湡'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl
new file mode 100644
index 0000000..fedaa55
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EFunctionName
+{
+  #keys: '3[414724.0.54835793][414724.0.54835792][414724.0.54835794]'
+  Description: '閿欒鍑芥暟'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl
new file mode 100644
index 0000000..60c6abd
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EInformation
+{
+  #keys: '3[414724.0.54835783][414724.0.54835782][414724.0.54835784]'
+  Description: '閿欒娑堟伅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl
new file mode 100644
index 0000000..5becead
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorNr
+{
+  #keys: '3[414724.0.54890030][414724.0.54890029][414724.0.54890031]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl
new file mode 100644
index 0000000..8f844aa
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GeneralInformation
+{
+  #keys: '3[414724.0.53669835][414724.0.53669834][414724.0.53669836]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl b/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl
new file mode 100644
index 0000000..7eab462
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ErrorLogs
+{
+  #keys: '5[414724.0.54835740][414724.0.54835738][0.0.0][414724.0.54835739][414724.0.54835741]'
+  BaseType: Object
+  Description: '閿欒鏃ュ織'
+  StructuredName: 'H_ErrorLogss'
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl b/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl
new file mode 100644
index 0000000..1d632e6
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomCode
+{
+  #keys: '3[414724.0.87401068][414724.0.87401067][414724.0.87401069]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl b/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl
new file mode 100644
index 0000000..e62814a
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.87401078][414724.0.87401077][414724.0.87401079]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Department.qbl b/_Main/BL/Type_H_Forecast/Attribute_Department.qbl
new file mode 100644
index 0000000..6491619
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Department.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Department
+{
+  #keys: '3[414724.0.87401098][414724.0.87401097][414724.0.87401099]'
+  Description: '閿�鍞儴闂�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl b/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..1a021e5
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.87401048][414724.0.87401047][414724.0.87401049]'
+  Description: '棰勬祴鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl b/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl
new file mode 100644
index 0000000..1e2886f
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NeedTime
+{
+  #keys: '3[414724.0.87401088][414724.0.87401087][414724.0.87401089]'
+  Description: '闇�姹傛椂闂达紝绮剧‘鍒版棩鏈�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl b/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..3939190
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.87401028][414724.0.87401027][414724.0.87401029]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl b/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl
new file mode 100644
index 0000000..74b5351
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.87401038][414724.0.87401037][414724.0.87401039]'
+  Description: 'SKU缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl b/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl
new file mode 100644
index 0000000..6fa9183
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.87401018][414724.0.87401017][414724.0.87401019]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Util.qbl b/_Main/BL/Type_H_Forecast/Attribute_Util.qbl
new file mode 100644
index 0000000..57d21a7
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Util.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Util
+{
+  #keys: '3[414724.0.87401058][414724.0.87401057][414724.0.87401059]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl b/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl
new file mode 100644
index 0000000..6d6bb0b
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_Forecast
+{
+  #keys: '5[414724.0.87400998][414724.0.87400996][0.0.0][414724.0.87400997][414724.0.87400999]'
+  BaseType: Object
+  Description: '璁㈠崟棰勬祴'
+  StructuredName: 'H_Forecasts'
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl
new file mode 100644
index 0000000..a5d408e
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpdateTime_Forecast
+{
+  #keys: '3[414724.0.53669779][414724.0.53669778][414724.0.53669780]'
+  Description: '璁㈠崟棰勬祴鏇存柊鏃堕棿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl
new file mode 100644
index 0000000..8dc9d1a
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpdateTime_Material
+{
+  #keys: '3[414724.0.53669759][414724.0.53669758][414724.0.53669760]'
+  Description: '鐗╂枡鏇存柊鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl
new file mode 100644
index 0000000..33e09da
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode_Forecast
+{
+  #keys: '3[414724.0.53669769][414724.0.53669768][414724.0.53669770]'
+  Description: '璁㈠崟棰勬祴鏇存柊鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl
new file mode 100644
index 0000000..f816ee2
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode_Material
+{
+  #keys: '3[414724.0.53669749][414724.0.53669748][414724.0.53669750]'
+  Description: '鐗╂枡鏇存柊鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl b/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl
new file mode 100644
index 0000000..451505c
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl
@@ -0,0 +1,51 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitialData_R (
+  MacroPlan Owner
+) as Boolean
+{
+  TextBody:
+  [*
+    /*********************************************鏇存柊鐗╂枡椤圭洰*********************************
+    *鍑芥暟鍚嶇О锛歎pdateMaterialItems
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氫粠鐗╂枡淇℃伅琛ㄦ洿鏂板埌鐗╂枡鍙嶇鏁伴噺琛紝鍙閲忥紝涓嶈鐩栧師鏉ョ殑鏁版嵁锛屽鍔犵殑鏉$洰鏁伴噺榛樿涓�0,鎵ц鎴愬姛杩斿洖Ture
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if(Owner.H_ReverseRealQty(relget ).Size() <= 10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_ReverseRealQty(relnew,ID := "AAAAA",SKU := "OTN-00-ACC-001",Unit := "PCS",ReverseRealQty := 0);
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+    
+      Num_AAA := 1/0;
+      if(Num_AAA>0)
+      {
+        bResult := true;
+      }
+      else
+      {
+         bResult := false;
+      }
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..7118da1
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod () as owning JSON
+{
+  TextBody:
+  [*
+    jResult := JSON::Object().Add( "A","123");
+    return jResult.Build();
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl
new file mode 100644
index 0000000..3c263bd
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_GenerateID (
+  String HeaderCode
+) as String
+{
+  Description: '鐢熸垚ID, 18浣�'
+  TextBody:
+  [*
+    /*********************************************鐢熸垚鍞竴ID*********************************
+    *鍑芥暟鍚嶇О锛歋M_GenerateID
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氱敓鎴愬敮涓�ID
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    // 鍞竴ID
+    strID :="";
+    
+    // 寰楀埌鏃堕棿瀛楃涓� 绮剧‘鍒扮
+    dtCurrent := DateTime::ActualTime();
+    strDt := dtCurrent.Format( "YM2D2Hms");
+    
+    // 瀹氫箟鍓嶄袱浣嶄唬鐮侊紙鍙互鐢辩敤鎴蜂紶鍏ワ紝榛樿AC(Auto Code)
+    strHeader :="AC";
+    if(HeaderCode.Length()>=2)
+    {
+        strHeader:= HeaderCode.SubString( 0,2);
+    }
+    // 涓ゆ闅忔満鏁板瓧锛屽噺灏戦噸澶嶆��
+    First:=Number::Random( 1000,9999);
+    Second:=Number::Random(10000,99999);
+    // 缁勫悎ID
+    strID := strHeader+strDt+First.AsQUILL()+Second.AsQUILL();
+    return strID;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl
new file mode 100644
index 0000000..b934584
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl
@@ -0,0 +1,70 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_MaterialPurchaseIssuer (
+  output String OResultMsg,
+  MacroPlan Owner,
+  String VCode,
+  String Operator
+) as Boolean
+{
+  Description: '閲囪喘鏄庣粏鍙戝竷'
+  TextBody:
+  [*
+    /*********************************************閲囪喘鏄庣粏鍙戝竷*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialPurchaseIssuer
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-15
+    *鍑芥暟鎻忚堪锛氬皢绯荤粺鍐呮墍鏈夌姸鎬佷负鏈彂甯冪殑閲囪喘鍗曞彂甯�,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(not isnull( Owner))
+      { 
+        // 妫�鏌ユ槸鍚︽湁鏈彂甯冪殑鏁版嵁
+        AllMaterialPurchase := selectset( Owner,H_MaterialPurchase,Obj,Obj.Status()="鏈彂甯�");
+        if(AllMaterialPurchase.Size()>0)
+        {
+          // 鑾峰彇鍙戝竷ID
+          IssuerID:=H_FunctionClass::SM_GenerateID( "RR");
+          
+          // 鐢熸垚鍙戝竷璁板綍
+          Owner.H_ReleaseRecord(relnew,ID := IssuerID,Issuer := Operator,VCode := VCode,IssuingDate := DateTime::ActualTime());
+          
+          // 鏇存柊璁㈠崟鐘舵��
+          traverse(Owner,H_MaterialPurchase,Obj,Obj.Status()="鏈彂甯�")
+          {
+            Obj.Status("宸插彂甯�");
+            Obj.IssuingDate(DateTime::ActualTime());
+            Obj.H_ReleaseRecord_ID(IssuerID);
+          }
+          
+          bResult := true;
+          OResultMsg :="鐗╂枡鍙戝竷瀹屾垚";
+        }
+        else
+        {
+          OResultMsg :="鏃犲彲鍙戝竷鐨勭墿鏂欒鍗�";
+        }    
+      }
+      else
+      {
+        OResultMsg :="Owner 涓嶈兘涓篘ull";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鐗╂枡鍙戝竷閿欒锛岃鑱旂郴绯荤粺绠$悊鍛橈紒";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialPurchaseIssuer",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
new file mode 100644
index 0000000..52dcd9d
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
@@ -0,0 +1,233 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_MaterialReverse (
+  MacroPlan Owner,
+  String VCode,
+  String CustomerCode,
+  String SKU,
+  Number OperateQty,
+  String Operator,
+  output String OResultMsg,
+  String OperateType
+) as Boolean
+{
+  Description: '鐗╂枡鍙嶇'
+  TextBody:
+  [*
+    /*********************************************鐗╂枡鍙嶇鎴栨巿鏉�*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialReverse
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氱墿鏂欏弽绛炬垨鎺堟潈,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(OperateQty>0 and not isnull(Owner))
+      {
+        nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+        nReverseQtyOld :=0;   //鍘熷弽绛炬暟閲�
+        nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+        nForecastQtyNew :=0;  //璁$畻鍚庣殑棰勬祴鏁伴噺
+        nReverseQtyNew :=0;   //璁$畻鍚庣殑鍙嶇鏁伴噺
+        nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+        nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+        nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+        // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
+        OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU 
+                                              and Obj.CustomID() = CustomerCode 
+                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
+        if ( not isnull(OrderForecast))
+        {
+            nForecastQtyOld := OrderForecast.ForecatsRealQty();
+            nForecastQtyNew := nForecastQtyOld;
+        }
+        
+        // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
+        ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = SKU);
+        if ( not isnull(ObjReverse))
+        {
+            nReverseQtyOld := ObjReverse.ReverseRealQty();
+            nReverseQtyNew := nReverseQtyOld;
+        }
+        
+        // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
+        ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = SKU 
+                                                                and Obj.CustomID() = CustomerCode );
+        if ( not isnull(ObjAuthorize))
+        {
+            nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
+            nAuthorizeQtyNew :=nAuthorizeQtyOld;
+        }
+    /******************************************鍙嶇鐗╂枡*************************************************/
+        if( OperateType="鍙嶇")
+        {
+          // 鍙嶇璁板綍ID
+          HRID := H_FunctionClass::SM_GenerateID( "FQ");
+          // 鍙嶇鍚庢暟閲� = 鍘熸暟閲�+鏂板鐨勬暟閲�
+          nReverseQtyNew := nReverseQtyOld+OperateQty;
+          // 璁板綍鍔ㄤ綔
+          Owner.H_HedgingRecord(relnew,
+                                 ID := HRID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ForecastQty := nForecastQtyNew,
+                                 ReverseQty := nReverseQtyNew,
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 OperateTime := DateTime::ActualTime(),
+                                 CustomerCode := CustomerCode,
+                                 OperateQty := OperateQty);
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := "閫氳繃SKU鑾峰彇",ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 閲婃斁閲囪喘
+          Owner.H_MaterialPurchase(relnew,ID := H_FunctionClass::SM_GenerateID( "MP"),VCode:=VCode, DemandTime := DateTime::ActualTime(),
+                                    H_HedgingRecord_ID := HRID,SKU := SKU,ProductSubclassType := "鐗╂枡绫诲瀷锛岀敤SKU鎶撶墿鏂欒〃寰楀埌",Qty := OperateQty,Unit := "閫氳繃SKU鎶�",
+                                    OrgCode := "閫氳繃SKU鍦˙OOM涓姄鍙�",WarehouseCode := "鏆傛湭寰楀埌鏉ユ簮",Status := "鏈彂甯�");
+          
+          bResult := true;
+          OResultMsg:="鍙嶇鎴愬姛锛�";
+        }
+    /******************************************鎺堟潈鐗╂枡*************************************************/
+        else if(OperateType="鎺堟潈")
+        {
+          // 鎺堟潈璁板綍ID
+          AQID := H_FunctionClass::SM_GenerateID( "AQ");
+          // 鎺堟潈鍐插噺--鍙嶇
+          if( nReverseQtyOld>OperateQty)
+          {
+            nReverseQtyNew := nReverseQtyOld - OperateQty;
+          }
+          else 
+          {
+            nReverseQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鎺堟潈
+          nAuthorizeQtyNew := nAuthorizeQtyOld + OperateQty;
+          // 鎺堟潈鍐插噺--棰勬祴
+          nMid := OperateQty - nReverseQtyOld;
+          if( nMid<0)
+          {
+            nMid := 0;  
+          }
+          nForecastQtyNew := nForecastQtyOld-nMid;
+          if(nForecastQtyNew<0)
+          {
+            nForecastQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鏈夐娴嬪拰鏃犻娴�
+          if( nMid>=nForecastQtyOld)
+          {
+            nHaveForecastQty := nForecastQtyOld;
+            nNoHaveForecastQty := nMid-nForecastQtyOld;
+          }
+          else
+          {
+            nHaveForecastQty := nMid;
+            nNoHaveForecastQty := 0;
+          }
+          
+          // 璁板綍鍔ㄤ綔
+          Owner.H_HedgingRecord(relnew,
+                                 ID := AQID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ForecastQty := nForecastQtyNew,
+                                 ReverseQty := nReverseQtyNew,
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 OperateTime := DateTime::ActualTime(),
+                                 CustomerCode := CustomerCode,
+                                 OperateQty := OperateQty);
+                                 
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := "PCS",ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 鏇存柊棰勬祴
+          if( not isnull( OrderForecast))
+          {
+            OrderForecast.ForecatsRealQty(nForecastQtyNew);
+          }
+          else
+          {
+            Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := "瀹㈡埛琛ㄨ幏鍙�",
+                                                                                            OrderCode := "-",
+                                                                                            ForecatsQty :=0,
+                                                                                            ForecatsRealQty :=nForecastQtyNew,
+                                                                                            Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
+          } 
+          
+          // 鏇存柊鎺堟潈
+          if( not isnull( ObjAuthorize))
+          {
+            ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+          }
+          else
+          {
+            Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := "瀹㈡埛琛ㄨ幏鍙�",
+                                                                                            OrderCode := "-",
+                                                                                            AuthorizeRealQty :=nAuthorizeQtyNew,
+                                                                                            Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
+          } 
+          
+          // 閲婃斁閲囪喘
+          nMid_R :=OperateQty - nReverseQtyOld;
+          if( nMid_R > 0)
+          {
+            Owner.H_MaterialPurchase(relnew,ID := H_FunctionClass::SM_GenerateID( "MP"),VCode:=VCode, DemandTime := DateTime::ActualTime(),
+                                    H_HedgingRecord_ID := AQID,SKU := SKU,ProductSubclassType := "鐗╂枡绫诲瀷锛岀敤SKU鎶撶墿鏂欒〃寰楀埌",Qty := nMid_R,Unit := "閫氳繃SKU鎶�",
+                                    OrgCode := "閫氳繃SKU鍦˙OOM涓姄鍙�",WarehouseCode := "鏆傛湭寰楀埌鏉ユ簮",Status := "鏈彂甯�");
+          }
+          
+          bResult := true;
+          OResultMsg:="鎺堟潈鎴愬姛锛�";
+        }
+        else
+        {
+          OResultMsg:="鎿嶄綔澶辫触锛屾棤娉曡瘑鍒搷浣滅被鍨嬶紒";
+        }
+      }
+      else
+      {
+        OResultMsg:="鎿嶄綔澶辫触锛�" + OperateType + "鏁伴噺蹇呴』澶т簬0";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鍙嶇鏃跺彂鐢熼敊璇紝璇疯仈绯荤郴缁熺鐞嗗憳锛�";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialReverse",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
new file mode 100644
index 0000000..72a96c0
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
@@ -0,0 +1,240 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_OrderReverseOrAuthorize (
+  MacroPlan Owner,
+  String Unit,
+  String VCode,
+  Date NeedDate,
+  String CustomerCode,
+  String SKU,
+  Number OperateQty,
+  String Operator,
+  String CustomName,
+  output String OResultMsg,
+  String OperateType
+) as Boolean
+{
+  Description: '璁㈠崟鍙嶇鎴栨巿鏉�'
+  TextBody:
+  [*
+    /*********************************************璁㈠崟鍙嶇鎴栨巿鏉�*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialReverse
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-15
+    *鍑芥暟鎻忚堪锛氳鍗曞弽绛炬垨鎺堟潈,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(OperateQty>0 and not isnull(Owner))
+      {
+        nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+        nReverseQtyOld :=0;   //鍘熷弽绛炬暟閲�
+        nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+        nForecastQtyNew :=0;  //璁$畻鍚庣殑棰勬祴鏁伴噺
+        nReverseQtyNew :=0;   //璁$畻鍚庣殑鍙嶇鏁伴噺
+        nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+        nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+        nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+        // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
+        OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU 
+                                              and Obj.CustomID() = CustomerCode 
+                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
+        if ( not isnull(OrderForecast))
+        {
+            nForecastQtyOld := OrderForecast.ForecatsRealQty();
+            nForecastQtyNew := nForecastQtyOld;
+        }
+        
+        // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
+        ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = SKU);
+        if ( not isnull(ObjReverse))
+        {
+            nReverseQtyOld := ObjReverse.ReverseRealQty();
+            nReverseQtyNew := nReverseQtyOld;
+        }
+        
+        // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
+        ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = SKU 
+                                                                and Obj.CustomID() = CustomerCode );
+        if ( not isnull(ObjAuthorize))
+        {
+            nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
+            nAuthorizeQtyNew :=nAuthorizeQtyOld;
+        }
+    /******************************************鍙嶇鐗╂枡*************************************************/
+        if( OperateType="鍙嶇")
+        {
+          // 鍙嶇璁板綍ID
+          HRID := H_FunctionClass::SM_GenerateID( "OR");
+          // 鍙嶇鍚庢暟閲� = 鍘熸暟閲�+鏂板鐨勬暟閲�
+          nReverseQtyNew := nReverseQtyOld+OperateQty;
+          // 璁板綍鍔ㄤ綔
+          Owner.H_OrderRecord(relnew,
+                                 ID := HRID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ReverseQty := nReverseQtyNew,
+                                 CustomerCode := CustomerCode,
+                                 CustomerName := CustomName,
+                                 ForecastQty := nForecastQtyNew,
+                                 OrderDateTime := NeedDate,
+                                 OrderQty := OperateQty,
+                                 OrderCode:=H_FunctionClass::SM_GenerateID( "OC"),
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 ReverseDeductQty := OperateQty,
+                                 AuthorizeDeductQty := 0,
+                                 ForecastHitQty :=0,
+                                 ForecastNoHitQty :=0,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 Unit := Unit,
+                                 OperateQty := OperateQty,
+                                 OperateTime := DateTime::ActualTime());
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := Unit,ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          bResult := true;
+          OResultMsg:="璁㈠崟鍙嶇鎴愬姛锛�";
+        }
+    /******************************************鎺堟潈鐗╂枡*************************************************/
+        else if(OperateType="鎺堟潈")
+        {
+          // 鎺堟潈璁板綍ID
+          AQID := H_FunctionClass::SM_GenerateID( "AQ");
+          // 鎺堟潈鍐插噺--鍙嶇
+          if( nReverseQtyOld>OperateQty)
+          {
+            nReverseQtyNew := nReverseQtyOld - OperateQty;
+          }
+          else 
+          {
+            nReverseQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鎺堟潈
+          nAuthorizeQtyNew := nAuthorizeQtyOld + OperateQty;
+          // 鎺堟潈鍐插噺--棰勬祴
+          nMid := OperateQty - nReverseQtyOld;
+          if( nMid<0)
+          {
+            nMid := 0;  
+          }
+          nForecastQtyNew := nForecastQtyOld-nMid;
+          if(nForecastQtyNew<0)
+          {
+            nForecastQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鏈夐娴嬪拰鏃犻娴�
+          if( nMid>=nForecastQtyOld)
+          {
+            nHaveForecastQty := nForecastQtyOld;
+            nNoHaveForecastQty := nMid-nForecastQtyOld;
+          }
+          else
+          {
+            nHaveForecastQty := nMid;
+            nNoHaveForecastQty := 0;
+          }
+          
+          // 璁板綍鍔ㄤ綔
+          Owner.H_OrderRecord(relnew,
+                                 ID := AQID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ReverseQty := nReverseQtyNew,
+                                 CustomerCode := CustomerCode,
+                                 CustomerName := CustomName,
+                                 ForecastQty := nForecastQtyNew,
+                                 OrderDateTime := NeedDate,
+                                 OrderQty := OperateQty,
+                                 OrderCode:=H_FunctionClass::SM_GenerateID( "OC"),
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 ReverseDeductQty := nReverseQtyOld - nReverseQtyNew,
+                                 AuthorizeDeductQty := OperateQty,
+                                 ForecastHitQty :=nHaveForecastQty,
+                                 ForecastNoHitQty :=nNoHaveForecastQty,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 Unit := Unit,
+                                 OperateQty := OperateQty,
+                                 OperateTime := DateTime::ActualTime());
+                                 
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := Unit,ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 鏇存柊棰勬祴
+          if( not isnull( OrderForecast))
+          {
+            OrderForecast.ForecatsRealQty(nForecastQtyNew);
+          }
+          else
+          {
+            Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := CustomName,
+                                                                                            OrderCode := "-",
+                                                                                            ForecatsQty :=0,
+                                                                                            ForecatsRealQty :=nForecastQtyNew,
+                                                                                            Unit := Unit);
+          } 
+          
+          // 鏇存柊鎺堟潈
+          if( not isnull( ObjAuthorize))
+          {
+            ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+          }
+          else
+          {
+            Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := CustomName,
+                                                                                            OrderCode := "-",
+                                                                                            AuthorizeRealQty :=nAuthorizeQtyNew,
+                                                                                            Unit := Unit);
+          } 
+          
+          bResult := true;
+          OResultMsg:="鎺堟潈鎴愬姛锛�";
+        }
+        else
+        {
+          OResultMsg:="鎿嶄綔澶辫触锛屾棤娉曡瘑鍒搷浣滅被鍨嬶紒";
+        }
+      }
+      else
+      {
+        OResultMsg:="鎿嶄綔澶辫触锛�" + OperateType + "鏁伴噺蹇呴』澶т簬0";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鍙嶇鏃跺彂鐢熼敊璇紝璇疯仈绯荤郴缁熺鐞嗗憳锛�";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialReverse",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl
new file mode 100644
index 0000000..9ad500f
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateAuthorizeRealQty (
+  MacroPlan Owner
+) as Boolean
+{
+  TextBody:
+  [*
+    /*********************************************鏇存柊鎺堟潈淇℃伅*********************************
+    *鍑芥暟鍚嶇О锛欰uthorizeRealQty
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氭洿鏂拌鍗曢娴嬩俊鎭紝澧為噺鏇存柊锛屾柊澧炴爲鏁伴噺榛樿涓�0锛屾墽琛屾垚鍔熻繑鍥濼ure
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_AuthorizeRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_AuthorizeRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL(),SKU := "OTN-01-ACC-00"+ x.AsQUILL() ,Month := Date::ActualDate(),CustomName := "灏忕背",
+                                          CustomID := "XM0001",OrderCode:="OD0001",AuthorizeRealQty:=1000, Unit := "PCS");
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateAuthorizeRealQty",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl
new file mode 100644
index 0000000..1c79db9
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateMaterialItems (
+  String VCode,
+  MacroPlan Owner
+) as Boolean
+{
+  Description: '浠庣墿鏂欎俊鎭〃鏇存柊鍒扮墿鏂欏弽绛炬暟閲忚〃锛屽彧澧為噺锛屼笉瑕嗙洊鍘熸潵鐨勬暟鎹紝澧炲姞鐨勬潯鐩暟閲忛粯璁や负0'
+  TextBody:
+  [*
+    /*********************************************鏇存柊鐗╂枡椤圭洰*********************************
+    *鍑芥暟鍚嶇О锛歎pdateMaterialItems
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氫粠鐗╂枡淇℃伅琛ㄦ洿鏂板埌鐗╂枡鍙嶇鏁伴噺琛紝鍙閲忥紝涓嶈鐩栧師鏉ョ殑鏁版嵁锛屽鍔犵殑鏉$洰鏁伴噺榛樿涓�0,鎵ц鎴愬姛杩斿洖Ture
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_ReverseRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_ReverseRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL()  ,SKU := "OTN-01-ACC-00"+ x.AsQUILL() ,Unit := "PCS",ReverseRealQty := 0);
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
new file mode 100644
index 0000000..988d53e
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateOrderForecastRealQty (
+  MacroPlan Owner
+) as Boolean
+{
+  Description: '鏇存柊璁㈠崟棰勬祴淇℃伅'
+  TextBody:
+  [*
+    /*********************************************鏇存柊璁㈠崟棰勬祴淇℃伅*********************************
+    *鍑芥暟鍚嶇О锛歎pdateOrderForecastRealQty
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氭洿鏂拌鍗曢娴嬩俊鎭紝鎸夋湀鏇存柊锛岃鐩栨垨鏂板鏁版嵁锛屾墽琛屾垚鍔熻繑鍥濼ure
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_OrderForecastRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_OrderForecastRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL(),SKU := "OTN-01-ACC-00"+ x.AsQUILL() , Month := Date::ActualDate(),CustomName := "灏忕背",
+                                          CustomID := "XM0001",OrderCode:="OD0001",ForecatsQty:=1000,ForecatsRealQty:=1000, Unit := "PCS");
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateOrderForecastRealQty",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl b/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl
new file mode 100644
index 0000000..6cb0560
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_FunctionClass
+{
+  #keys: '5[414724.0.53669729][414724.0.53669727][0.0.0][414724.0.53669728][414724.0.53669730]'
+  BaseType: Object
+  Description: '鍐插噺鎿嶄綔绫�'
+  StructuredName: 'H_FunctionClasss'
+}
diff --git "a/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl" "b/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl"
new file mode 100644
index 0000000..944801a
--- /dev/null
+++ "b/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandTime
+{
+  #keys: '3[414724.0.26781557][414724.0.26781556][414724.0.26781558]'
+  Description: '闇�姹傛椂闂�'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl
new file mode 100644
index 0000000..b389f5a
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute H_HedgingRecord_ID
+{
+  #keys: '3[414724.0.26781576][414724.0.26781575][414724.0.26781577]'
+  Description: '鍔ㄤ綔璁板綍ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl
new file mode 100644
index 0000000..f52882b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute H_ReleaseRecord_ID
+{
+  #keys: '3[414724.0.26781656][414724.0.26781655][414724.0.26781657]'
+  Description: '鍙戝竷浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl
new file mode 100644
index 0000000..c02afb2
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26781527][414724.0.26781526][414724.0.26781528]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl
new file mode 100644
index 0000000..32ac153
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IssuingDate
+{
+  #keys: '3[414724.0.26781666][414724.0.26781665][414724.0.26781667]'
+  Description: '鍙戝竷鏃ユ湡'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..8a4aaef
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414724.0.26781626][414724.0.26781625][414724.0.26781627]'
+  Description: '缁勭粐浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl
new file mode 100644
index 0000000..71f619d
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductSubclassType
+{
+  #keys: '3[414724.0.26781596][414724.0.26781595][414724.0.26781597]'
+  Description: '绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl
new file mode 100644
index 0000000..4e5407c
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Qty
+{
+  #keys: '3[414724.0.26781606][414724.0.26781605][414724.0.26781607]'
+  Description: '鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl
new file mode 100644
index 0000000..535b982
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.26781586][414724.0.26781585][414724.0.26781587]'
+  Description: 'SKU缂栫爜锛堝師鏂橧D)'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl
new file mode 100644
index 0000000..2aafc74
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26781547][414724.0.26781546][414724.0.26781548]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl
new file mode 100644
index 0000000..4737bef
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Status
+{
+  #keys: '3[414724.0.26781646][414724.0.26781645][414724.0.26781647]'
+  Description: '鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl
new file mode 100644
index 0000000..436827f
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.26781616][414724.0.26781615][414724.0.26781617]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl
new file mode 100644
index 0000000..b75c114
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26781537][414724.0.26781536][414724.0.26781538]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl
new file mode 100644
index 0000000..7b27796
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WarehouseCode
+{
+  #keys: '3[414724.0.26781636][414724.0.26781635][414724.0.26781637]'
+  Description: '浠撳簱浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl b/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl
new file mode 100644
index 0000000..cf9c177
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MaterialPurchase
+{
+  #keys: '5[414724.0.26810970][414724.0.26810968][0.0.0][414724.0.26810969][414724.0.26810971]'
+  BaseType: Object
+  Description: '鍐插噺_鐗╂枡閲囪喘'
+  StructuredName: 'H_MaterialPurchases'
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..b6c8ea6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeRealQty
+{
+  #keys: '3[414724.0.87400932][414724.0.87400931][414724.0.87400933]'
+  Description: '鎺堟潈鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl
new file mode 100644
index 0000000..fb375ca
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomCode
+{
+  #keys: '3[414724.0.87400942][414724.0.87400941][414724.0.87400943]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..2ebf142
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.87400952][414724.0.87400951][414724.0.87400953]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl
new file mode 100644
index 0000000..347584b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty_Month
+{
+  #keys: '3[414724.0.87400912][414724.0.87400911][414724.0.87400913]'
+  Description: '褰撴湀棰勬祴'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl
new file mode 100644
index 0000000..5169ca6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialType
+{
+  #keys: '3[414724.0.87400977][414724.0.87400976][414724.0.87400978]'
+  Description: '鐗╂枡绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl
new file mode 100644
index 0000000..89f4265
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseRealQty
+{
+  #keys: '3[414724.0.87400922][414724.0.87400921][414724.0.87400923]'
+  Description: '鍙嶇鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..f8c0c68
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.87400892][414724.0.87400891][414724.0.87400893]'
+  Description: 'SKU缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl
new file mode 100644
index 0000000..f4e984b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Util
+{
+  #keys: '3[414724.0.87400987][414724.0.87400986][414724.0.87400988]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl
new file mode 100644
index 0000000..04e569b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.87400902][414724.0.87400901][414724.0.87400903]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl
new file mode 100644
index 0000000..b890ed6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MaterialRealQty
+{
+  #keys: '5[414724.0.87400872][414724.0.87400870][0.0.0][414724.0.87400871][414724.0.87400873]'
+  BaseType: Object
+  Description: '鐗╂枡瀹炴椂鏁版嵁'
+  StructuredName: 'H_MaterialRealQtys'
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl
new file mode 100644
index 0000000..c085444
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FKey
+{
+  #keys: '3[414724.0.87274672][414724.0.87274671][414724.0.87274673]'
+  Description: '澶栭敭銆佺粍: 澶х被鍒紝鍖呭惈澶氫釜CKey'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl
new file mode 100644
index 0000000..e1d64e6
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ItemKey
+{
+  #keys: '3[414724.0.87274682][414724.0.87274681][414724.0.87274683]'
+  Description: '椤筀Ey'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl
new file mode 100644
index 0000000..41c1c47
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+  #keys: '3[414724.0.87274692][414724.0.87274691][414724.0.87274693]'
+  Description: '鍊�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl b/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl
new file mode 100644
index 0000000..4d77133
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MessagePassing
+{
+  #keys: '5[414724.0.87274649][414724.0.87274647][0.0.0][414724.0.87274648][414724.0.87274650]'
+  BaseType: Object
+  Description:
+  [*
+    鍥犱负涓嶇煡閬撴�庝箞杩涜涓や釜绐椾綋涔嬮棿娑堟伅浼犻�掞紝
+    鐢ㄨ繖涓被鍋氫腑闂翠欢
+  *]
+  StructuredName: 'H_MessagePassings'
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
new file mode 100644
index 0000000..f0cb7e7
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomID
+{
+  #keys: '3[414724.0.46380328][414724.0.46380327][414724.0.46380329]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..f8a92fa
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.46380318][414724.0.46380317][414724.0.46380319]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
new file mode 100644
index 0000000..2edd0bc
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecatsQty
+{
+  #keys: '3[414724.0.46380358][414724.0.46380357][414724.0.46380359]'
+  Description: '棰勬祴鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl
new file mode 100644
index 0000000..28191e3
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecatsRealQty
+{
+  #keys: '3[414724.0.46380368][414724.0.46380367][414724.0.46380369]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..11098ab
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380298][414724.0.46380297][414724.0.46380299]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
new file mode 100644
index 0000000..cc1224e
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Month
+{
+  #keys: '3[414724.0.46380308][414724.0.46380307][414724.0.46380309]'
+  Description: '鏈堜唤'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..66e08c7
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380338][414724.0.46380337][414724.0.46380339]'
+  Description: '璁㈠崟缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..a9eab85
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380348][414724.0.46380347][414724.0.46380349]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..6569ece
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380378][414724.0.46380377][414724.0.46380379]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl
new file mode 100644
index 0000000..8d3d57b
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_OrderForecastRealQty
+{
+  #keys: '5[414724.0.46380278][414724.0.46380276][0.0.0][414724.0.46380277][414724.0.46380279]'
+  BaseType: Object
+  Description: '璁㈠崟棰勬祴瀹炴椂鏁伴噺锛屾瘡鏈堟洿鏂�'
+  StructuredName: 'H_OrderForecastRealQtys'
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl
new file mode 100644
index 0000000..fccc38a
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeDeductQty
+{
+  #keys: '3[414724.0.46380215][414724.0.46380214][414724.0.46380216]'
+  Description: '鎺堟潈鍐插噺鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl
new file mode 100644
index 0000000..18a2d67
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeQty
+{
+  #keys: '3[414724.0.46380195][414724.0.46380194][414724.0.46380196]'
+  Description: '鎺堟潈鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl
new file mode 100644
index 0000000..e269588
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerCode
+{
+  #keys: '3[414724.0.46380125][414724.0.46380124][414724.0.46380126]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl
new file mode 100644
index 0000000..a825907
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerName
+{
+  #keys: '3[414724.0.46380145][414724.0.46380144][414724.0.46380146]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl
new file mode 100644
index 0000000..a401658
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastHitQty
+{
+  #keys: '3[414724.0.46380225][414724.0.46380224][414724.0.46380226]'
+  Description: '鏈夐娴嬫暟閲�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl
new file mode 100644
index 0000000..571a3fa
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastNoHitQty
+{
+  #keys: '3[414724.0.46380235][414724.0.46380234][414724.0.46380236]'
+  Description: '鏃犻娴嬫暟閲�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..3983b2d
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.46380155][414724.0.46380154][414724.0.46380156]'
+  Description: '褰撴湀棰勬祴鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..21257a6
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380085][414724.0.46380084][414724.0.46380086]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl
new file mode 100644
index 0000000..dbae162
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateQty
+{
+  #keys: '3[414724.0.96596023][414724.0.96596022][414724.0.96596024]'
+  Description: '鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl
new file mode 100644
index 0000000..80e1abf
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateTime
+{
+  #keys: '3[414724.0.80254680][414724.0.80254679][414724.0.80254681]'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl
new file mode 100644
index 0000000..3c75a06
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateType
+{
+  #keys: '3[414724.0.80254657][414724.0.80254656][414724.0.80254658]'
+  Description: '鎿嶄綔绫诲瀷锛氬弽娼滄垨鎺堟潈'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl
new file mode 100644
index 0000000..a72a58a
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Operator
+{
+  #keys: '3[414724.0.80401529][414724.0.80401528][414724.0.80401530]'
+  Description: '鎿嶄綔浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..945f4e6
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380185][414724.0.46380184][414724.0.46380186]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl
new file mode 100644
index 0000000..81d29a0
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDateTime
+{
+  #keys: '3[414724.0.46380165][414724.0.46380164][414724.0.46380166]'
+  Description: '闇�姹傛椂闂�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl
new file mode 100644
index 0000000..25c5075
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderQty
+{
+  #keys: '3[414724.0.46380175][414724.0.46380174][414724.0.46380176]'
+  Description: '璁㈠崟鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl
new file mode 100644
index 0000000..fd3731e
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseDeductQty
+{
+  #keys: '3[414724.0.46380205][414724.0.46380204][414724.0.46380206]'
+  Description: '鍙嶇鍐插噺鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl
new file mode 100644
index 0000000..c537a90
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseQty
+{
+  #keys: '3[414724.0.46380115][414724.0.46380114][414724.0.46380116]'
+  Description: '鍙嶇鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl
new file mode 100644
index 0000000..ed90a54
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380105][414724.0.46380104][414724.0.46380106]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..bda8702
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.46380135][414724.0.46380134][414724.0.46380136]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl
new file mode 100644
index 0000000..5d08187
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.96596013][414724.0.96596012][414724.0.96596014]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..5c87e17
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.46380095][414724.0.46380094][414724.0.46380096]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl b/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl
new file mode 100644
index 0000000..243357b
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_OrderRecord
+{
+  #keys: '5[414724.0.46380065][414724.0.46380063][0.0.0][414724.0.46380064][414724.0.46380066]'
+  BaseType: Object
+  Description: '鍐插噺-璁㈠崟璁板綍'
+  StructuredName: 'H_OrderRecords'
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl
new file mode 100644
index 0000000..43dc82d
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FinishDate
+{
+  #keys: '3[414724.0.26730938][414724.0.26730937][414724.0.26730939]'
+  Description: '鎴鏃堕棿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..3132966
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26810929][414724.0.26810928][414724.0.26810930]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl
new file mode 100644
index 0000000..af863d9
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Issuer
+{
+  #keys: '3[414724.0.26810949][414724.0.26810948][414724.0.26810950]'
+  Description: '鍙戝竷浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl
new file mode 100644
index 0000000..8165543
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IssuingDate
+{
+  #keys: '3[414724.0.26810959][414724.0.26810958][414724.0.26810960]'
+  Description: '鍙戝竷鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..547cdc6
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26730928][414724.0.26730927][414724.0.26730929]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl
new file mode 100644
index 0000000..70b8389
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Status
+{
+  #keys: '3[414724.0.26730948][414724.0.26730947][414724.0.26730949]'
+  Description: '鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..b2de97f
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26810939][414724.0.26810938][414724.0.26810940]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl b/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl
new file mode 100644
index 0000000..2392ded
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ReleaseRecord
+{
+  #keys: '5[414724.0.26810909][414724.0.26810907][0.0.0][414724.0.26810908][414724.0.26810910]'
+  BaseType: Object
+  Description: '鍙嶅啿_鍙戝竷璁板綍'
+  StructuredName: 'H_ReleaseRecords'
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..8226548
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380412][414724.0.46380411][414724.0.46380413]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl
new file mode 100644
index 0000000..c47a901
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseRealQty
+{
+  #keys: '3[414724.0.46380432][414724.0.46380431][414724.0.46380433]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..4e72ed0
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380422][414724.0.46380421][414724.0.46380423]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..83608c4
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380442][414724.0.46380441][414724.0.46380443]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl b/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl
new file mode 100644
index 0000000..8af1dcf
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ReverseRealQty
+{
+  #keys: '5[414724.0.46380389][414724.0.46380387][0.0.0][414724.0.46380388][414724.0.46380390]'
+  BaseType: Object
+  Description: '鍙嶇瀹炴椂鏁版嵁锛屾案涔呬繚鎸�'
+  StructuredName: 'H_ReverseRealQtys'
+}
diff --git a/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl b/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl
new file mode 100644
index 0000000..fe9f311
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.96595915][414724.0.96595914][414724.0.96595916]'
+  Description: 'SKU'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl b/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl
new file mode 100644
index 0000000..6ed009d
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.96595925][414724.0.96595924][414724.0.96595926]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl b/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl
new file mode 100644
index 0000000..590106e
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_TestMap
+{
+  #keys: '5[414724.0.96595892][414724.0.96595890][0.0.0][414724.0.96595891][414724.0.96595893]'
+  BaseType: Object
+  Description: '娴嬭瘯涓や釜鏁版嵁闆嗗叧鑱旀樉绀�'
+  StructuredName: 'H_TestMaps'
+}
diff --git a/_Main/BL/Type_Lane/StaticMethod_CreateLaneFromJson.qbl b/_Main/BL/Type_Lane/StaticMethod_CreateLaneFromJson.qbl
index 6d55643..0c19698 100644
--- a/_Main/BL/Type_Lane/StaticMethod_CreateLaneFromJson.qbl
+++ b/_Main/BL/Type_Lane/StaticMethod_CreateLaneFromJson.qbl
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateLaneFromJson (
-  JSON datarow
+  JSON datarow,
+  MacroPlan macroplan
 ) as Lane
 {
   Description: 'Read the json data and use it to create lane data'
@@ -14,6 +15,11 @@
     userleadtime := datarow.Get( "userleadtime" );
     processingtime := Duration::Zero();
     
+    unitofmeasurename := "PCS";
+    currencyid := "CNY";
+    startdate := Date::Date( 1900, 1, 1 );
+    enddate := Date::Date( 9999, 12, 31 );
+    capacitytype := "Transport quantity";
     if( userleadtime.IsNull() )
     {
       processingtime := Duration::Zero(); 
@@ -24,6 +30,16 @@
       };
     
     unit := Unit::FindUnitTypeIndex( unitid );
+    if( isnull( unit)){
+      unit :=macroplan.Unit( relnew, 
+                 ID := unitid, 
+                 Name := unitid, 
+                 UnitOfMeasureName := unitofmeasurename, 
+                 CurrencyID := currencyid, 
+                 StartDate := startdate, 
+                 EndDate := enddate, 
+                 CapacityType := capacitytype );
+    }
     
     result := Lane::CreateLane( unit, id, name, processingtime);
     
diff --git a/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeBusinessTypeString.qbl b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeBusinessTypeString.qbl
new file mode 100644
index 0000000..717a4f8
--- /dev/null
+++ b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeBusinessTypeString.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeBusinessTypeString () as owning String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    result := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, true, item.BusinessType() );
+    return result.Concatenate( ";" ) ;
+  *]
+}
diff --git a/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgePlaceOfProductionOfArrayString.qbl b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgePlaceOfProductionOfArrayString.qbl
new file mode 100644
index 0000000..2612296
--- /dev/null
+++ b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgePlaceOfProductionOfArrayString.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgePlaceOfProductionOfArrayString () as owning String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    result := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, true, item.PlaceOfProductionOfArray() );
+    return result.Concatenate( ";" ) ;
+  *]
+}
diff --git a/_Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl b/_Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl
new file mode 100644
index 0000000..d59f61d
--- /dev/null
+++ b/_Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CapacityAndSaleBudgeYearsString () as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    years := construct( Strings );;
+    for( i := Date::ActualDate().Year(); i < Date::ActualDate().Year() + 10; i := i + 1 ) {
+      years.Add( [String]i );
+    }
+    return ifexpr( years.Size() > 0, years.Concatenate( ";" ), "" );
+  *]
+}
diff --git a/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl b/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
new file mode 100644
index 0000000..3cb7643
--- /dev/null
+++ b/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod TestData (
+  MPSync mpSync,
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    
+    info( "MPSync::TestData" );
+    
+    productCodeList := selectuniquevalues( macroPlan, Product_MP, item, item.ID() );
+    
+    info( "productCodeList : " + [String]productCodeList.Size() );
+    
+    mpSync.MappingCapacityAndSaleBudge( relflush );
+    for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
+      productCode := productCodeList.Element( i - 1 );
+      mappingCapacityAndSaleBudge := mpSync.MappingCapacityAndSaleBudge( relnew, 
+                                                                         ProductCode := productCode,
+                                                                         BusinessType := "浜嬩笟閮�" + [String](productCode.Length() mod 3 + 1), 
+                                                                         PlaceOfProductionOfArray := "闈㈡澘鍩哄湴" + [String](productCode.Length() mod 4 + 1)
+                                                                          );
+      for( month := 1; month <= 12; month := month + 1 ) {
+        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]month );
+        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
+        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]month );
+        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
+        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]month );
+        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
+      }
+      mappingCapacityAndSaleBudge.CapacityInPCSTotal( mappingCapacityAndSaleBudge.GetCapacityInPCSInYear() );
+      mappingCapacityAndSaleBudge.CapacityInSheetTotal( mappingCapacityAndSaleBudge.GetCapacityInSheetInYear() );
+      mappingCapacityAndSaleBudge.SaleAmountTotal( mappingCapacityAndSaleBudge.GetSaleAmountInYear() );
+    }
+    
+    result := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
+    
+    info( "MappingCapacityAndSaleBudge size : " + [String]result.Size() );
+  *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_ApiLanesData.qbl b/_Main/BL/Type_MacroPlan/Method_ApiLanesData.qbl
index 0561aae..0020767 100644
--- a/_Main/BL/Type_MacroPlan/Method_ApiLanesData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_ApiLanesData.qbl
@@ -14,7 +14,7 @@
     for( i:=0; i<data_length; i++ )
     {
       datarow := data.Get( i );
-      a := Lane::CreateLaneFromJson( datarow );
+      a := Lane::CreateLaneFromJson( datarow ,this);
       updates.Add( a );
       }
     origindataset := selectset( this, Unit.Lane, l, true );
diff --git a/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl b/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl
new file mode 100644
index 0000000..d5d02e1
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method DeleteSnaityCheck
+{
+  TextBody:
+  [*
+    // renhao Sep-13-2023 (created)
+    //鍒犻櫎娌℃湁姹囩巼鐨勮揣甯�
+    traverse(  this,Currency_MP,currency,not currency.IsBase() and currency.CurrencyRate_MP( relsize ) = 0 ){
+      currency.Delete();
+    }
+    //鍒犻櫎娌℃湁浜у搧鐨勮溅閬�
+    traverse( this,Unit.Lane,lane,not isnull( lane) and lane.ProductInLane(relsize )=0 ){
+      lane.Delete();
+    }
+    //鍒犻櫎娌℃湁鐢ㄥ埌浜у搧鍜宭ane鐨勫簱瀛樼偣
+    traverse( this,StockingPoint_MP,stock,stock.ProductInStockingPoint_MP(relsize ) = 0 ){
+      stock.Delete();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
index d030255..c71e147 100644
--- a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
@@ -106,5 +106,11 @@
       ProductLevel_MP::Create( "2", isproductcatagory, this, isfromdb );
       ProductLevel_MP::Create( "3", isproductcatagory, this, isfromdb );
       }
+    
+    existsalestlevel := SalesLevel_MP::FindSalesLevelTypeIndex( "2")
+    if( isnull( existsalestlevel ) ){
+        SalesLevel_MP::Create( "1",this,isfromdb);
+        SalesLevel_MP::Create( "2",this,isfromdb);
+      }
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
index 873ed35..7ec0576 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
@@ -17,12 +17,13 @@
     }
     queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
     queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
-    listToDeal := selectset( listToDeal, Elements, item, item.OrderDate() >= queryStartDate and item.OrderDate() <= queryEndDate, not isnull( Product_MP::FindById( this, item.ProductID() ) ) and not isnull( StockingPoint_MP::FindById( this, item.StockPointID() ) ) and not isnull( SalesSegment_MP::FindByName( this, item.SalesSegmentName() ) ) );
+    listToDeal := selectset( listToDeal, Elements, item, item.OrderDate() >= queryStartDate /*and item.OrderDate() <= queryEndDate*/, not isnull( Product_MP::FindById( this, item.ProductID() ) ) and not isnull( StockingPoint_MP::FindById( this, item.StockPointID() ) ) and not isnull( SalesSegment_MP::FindByName( this, item.SalesSegmentName() ) ) );
     
     totalcount := listToDeal.Size();
     info( "CustomerOrder has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
+    priorityName :="Normal";
     // 澶勭悊
     traverse( listToDeal, Elements, item ) {
       count := count + 1;
@@ -33,7 +34,7 @@
     //    info( item.ProductID().AsQUILL() );
       CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(), 
                                      item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(), 
-                                     item.PriorityName(), item.ProductID(), 
+                                     priorityName, item.ProductID(), 
                                      item.StockPointID(), 
                                      item.SalesSegmentName(), 
                                      item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
index ea2ad61..ead549d 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
@@ -8,9 +8,11 @@
   TextBody:
   [*
     // renhao Aug-14-2023 (created)
-    
-    listtodeal := selectset( this,MappingExternalSupply,externalSupply, true );
+    queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
+    queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
+    listtodeal := selectset( this,MappingExternalSupply,externalSupply, externalSupply.UserQuantity()>0 and externalSupply.Date() >= queryStartDate /*and externalSupply.Date() <= queryEndDate*/);
     totalcount := listtodeal.Size();
+    description := "鍦ㄩ�斿湪鍒�";
     info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
@@ -18,12 +20,14 @@
       count := count + 1;
       if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
         info( "Now is dealing with the " + count.AsQUILL() + "ExternalSupply " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
-        }
-      product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID() and product.KeyProduct() = nuclear,true);
+       }
+      product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID(),true);
+      
       
       if( not isnull( product)){
-        productMP :=  select( this,Product_MP,productMP,productMP.ID() = externalSupply.ProductID() ,true);
+        productMP :=  Product_MP :: FindProductTypeIndex( externalSupply.ProductID());
         stockingpoint := select( this,StockingPoint_MP,st,st.ID() = externalSupply.StockingPointID(),true);
+        if( not isnull( stockingpoint) and not isnull( productMP)){
         if( not isnull(businessTypes)){
         
           for( i :=0 ;i < businessTypes.Size();i++ ){
@@ -34,25 +38,23 @@
                                                stockingpoint,
                                                externalSupply.Date(),
                                                externalSupply.ManufacturedDate(),
-                                               externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�");
+                                               externalSupply.UserQuantity(),description);
             }
           }
           
         }else{
-        if( not isnull( stockingpoint) and not isnull( productMP)){
-          InventorySupply::CreateOrUpdate( externalSupply.ID(),
+          
+            InventorySupply::CreateOrUpdate( externalSupply.ID(),
                                            productMP,
                                            stockingpoint,
                                            externalSupply.Date(),
                                            externalSupply.ManufacturedDate(),
-                                           externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�");
-        }
+                                           externalSupply.UserQuantity(),description);
+          }
       
         }
         
-      }else{
-        info( "Invaild product" );
-        }
+      }
     }
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
index 903aea0..47e8597 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
@@ -11,9 +11,9 @@
     // 寰呭鐞嗘暟鎹�
     listToDeal := construct( structured[MappingForecast] );
     if( isnull( businessTypes ) or businessTypes.Size() = 0 ) {
-        listToDeal := selectset( this, MappingForecast, item, true );
+        listToDeal := selectset( this, MappingForecast, item, item.Quantity() > 0 );
     } else {
-        listToDeal := selectset( this, MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 );
+        listToDeal := selectset( this, MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 and item.Quantity()>0 );
     }
     queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
     queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
@@ -23,6 +23,7 @@
     info( "Forecast has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
+    priorityName := "Normal";
     // 澶勭悊
     traverse( listToDeal, Elements, item ) {
       count := count + 1;
@@ -31,7 +32,7 @@
         }
     //  if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
       Forecast::CreateOrUpdate( this, 
-                                item.ProductID(), item.SalesSegmentName(), item.StockingPointID(), item.PriorityName(),
+                                item.ProductID(), item.SalesSegmentName(), item.StockingPointID(), priorityName,
                                 item.CurrencyID(), item.UnitOfMeasureName(),
                                 item.ID(), item.StartDate(), item.EndDate(), item.Quantity(), item.Price());
     //  }else{
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
index 892f5ef..b807827 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
@@ -12,16 +12,17 @@
     
     keyProductList := construct( Strings );
     if( isKeyProduct ) {
-        keyProductList := selectuniquevalues( this, MappingProduct, item, item.KeyProduct(), item.ID() );
+        keyProductList := selectuniquevalues( this, MappingProduct, item, item.ProductMajorType()="鎴愬搧" or item.ProductMajorType()="鍗婃垚鍝�", item.ID() );
     }
     bomList := selectsortedset(  this, MappingBOM, item,
                                  ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, 
                                          true, 
     //                                     businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 )
                                          businessTypes.Find( item.BusinessType() ) >= 0 )
-                                 and ifexpr( isKeyProduct, 
-                                             keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0,
-                                             true ),
+    //                             and ifexpr( isKeyProduct, 
+    //                                         keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0,
+    //                                         true )
+                                 ,
                                  item.OrganCode() + "_" + item.ProductCode() + "_" + item.ProcessSection() );
     // 鎸塺outing鍙妑outingStep鍒嗙粍
     routingIds := selectuniquevalues( bomList, Elements, item, true, item.OrganCode() + "_" + item.ProductCode() );
@@ -29,14 +30,16 @@
         routingRows := selectset( bomList, Elements, item, true, routingId = item.OrganCode() + "_" + item.ProductCode() );
         if( routingRows.Size() > 0 ) {
             firstRow := routingRows.Element( 0 );
-            stockingPointId := firstRow.OrganCode()  + "_" + firstRow.ProductType() + "_Stock";
-            inputStockingPointId := firstRow.OrganCode()  + "_" + firstRow.ComponentType() + "_Stock";
+    //        stockingPointId := firstRow.OrganCode()  + "_" + firstRow.ProductType() + "_Stock";
+    //        inputStockingPointId := firstRow.OrganCode()  + "_" + firstRow.ComponentType() + "_Stock";
+            stockingPointId := firstRow.OrganCode()  + "_Stock";
+    
             // ========妫�鏌�========
             product := Product_MP::FindProductTypeIndex( firstRow.ProductCode() );
             if( not isnull( product ) ) {
     //              error( "product : " + firstRow.ProductCode() + " not found" );
               stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( stockingPointId );
-              inputStockingPoint := StockingPoint_MP::FindStockingPointTypeIndex(  inputStockingPointId );
+    
     //          info( stockingPointId.AsQUILL() );
       //        if( isnull( stockingPoint ) ) {
       //            error( "stockingPoint : " + stockingPointId + " not found" );
@@ -55,8 +58,14 @@
                   // ========鍒嗙粍澶勭悊杈撳叆========
                   
                 }
-                if( not isnull( inputStockingPoint)){
-                  this.MappingOperationBOMDataRouting( routing,routingRows,inputStockingPoint,keyProductList);
+                if( not isnull( stockingPoint)){
+                  if( isKeyProduct){
+                      keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0);
+                      this.MappingOperationBOMDataRouting( routing,keyRows);
+                    }else{
+                      this.MappingOperationBOMDataRouting( routing,routingRows);
+                    }
+                    
                 }
               }
            }
@@ -64,9 +73,9 @@
     }
     if( createPurchaseSupplyMaterial ) {
         toCreateBomList := selectuniquevalues( bomList, Elements, item, 
-                                               item.ProductType() = "P", item.OrganCode() + item.ComponentCode());
+                                               item.ComponentType() = "P", item.OrganCode() + item.ComponentCode());
         traverse( toCreateBomList, Elements, key ) {
-            boms := selectset( bomList, Elements, item, item.ProductType() = "P" and item.OrganCode() + item.ComponentCode() = key );
+            boms := selectset( bomList, Elements, item, item.ComponentType() = "P" and item.OrganCode() + item.ComponentCode() = key );
             bom := boms.First();
             this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType());
         }
diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index 059c6c9..e661d1f 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -2,9 +2,7 @@
 #parent: #root
 Method MappingOperationBOMDataRouting (
   Routing routing,
-  MappingBOMs routingRows,
-  StockingPoint_MP stockingPoint,
-  Strings keyProductIds
+  MappingBOMs routingRows
 )
 {
   TextBody:
@@ -32,6 +30,9 @@
                   if( not isnull( component ) ) {
     //                  error( "component : " + noAlterRow.ComponentCode() + " not found" );
                   // 杩炴帴浜у搧涓巓peration
+    //              inputStockingPointId := noAlterRow.OrganCode()  + "_" + noAlterRow.ComponentType() + "_Stock";
+                  inputStockingPointId := noAlterRow.OrganCode() + "_Stock";
+                  stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
                   pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
                   trash := construct( OperationBOMs );
                   operationBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
@@ -54,6 +55,9 @@
     //          }
                 traverse( routingStep, Operation, toLink ) {
                     // 杩炴帴浜у搧涓巓peration
+    //                inputStockingPointId := firstAlterRow.OrganCode()  + "_" + firstAlterRow.ComponentType() + "_Stock";
+                    inputStockingPointId := firstAlterRow.OrganCode() + "_Stock";
+                    stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
                     pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
                     trash := construct( OperationBOMs );
                     mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
@@ -67,13 +71,15 @@
                         alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
                         if( not isnull( alterProd ) ) {
         //                    error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
-                          stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ProductType() + "_Stock";
+    //                      stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ComponentType() + "_Stock";
+                          stockingPointIdAlter := alterRow.OrganCode() + "_Stock";
                           stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
                           if( isnull( stockingPointAlter ) ) {
                               error( "stockingPoint : " + stockingPointIdAlter + " not found" );
                           }
                           pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
-                          mainInput := toLink.LastOperationInput();
+                          //mainInput := toLink.LastOperationInput(); 
+                          mainInput := select( toLink,OperationInput,operationInut,operationInut.ProductID()=alterRow.ComponentCode());
                           trash := construct( OperationBOMs );
                           if( not isnull( mainInput ) ) {
                               alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
index 6a24698..7ea305b 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
@@ -8,25 +8,26 @@
 {
   TextBody:
   [*
-    routingId := "PR_"+orgCode + "_" + productId;
-    unitId := "渚涘簲鍟�";
-    routingStepName := "Purchase";
-    operationId := orgCode + "_PR_" + productId;
-    routing := Routing::CreateOrUpdate( this, routingId );
-    toDeleteSteps := selectset( routing, RoutingStep, routingStep, true );
-    RoutingStep::Delete( toDeleteSteps );
-    routingStep := RoutingStep::Create( routing, routingStepName, "", true );
+    
     product := Product_MP::FindById( this, productId );
     if( isnull( product ) ) {
         info(  "product : " + productId + " not found" );
     }
-    stockingPointId := orgCode + "_" + productType + "_Stock";
+    stockingPointId := orgCode + "_Stock";
     stockingPoint := StockingPoint_MP::FindById( this, stockingPointId );
     if( isnull( stockingPoint ) ) {
         info( "stockingPoint : " + stockingPointId + " not found" );
     }
     
     if( not isnull( product) and not isnull( stockingPoint)){
+      routingId := "PR_"+orgCode + "_" + productId;
+      unitId := "渚涘簲鍟�";
+      routingStepName := "Purchase";
+      operationId := orgCode + "_PR_" + productId;
+      routing := Routing::CreateOrUpdate( this, routingId );
+      toDeleteSteps := selectset( routing, RoutingStep, routingStep, true );
+      RoutingStep::Delete( toDeleteSteps );
+      routingStep := RoutingStep::Create( routing, routingStepName, "", true );
       unit := Unit::FindById( this, unitId );
       if( isnull( unit ) ) {
         unit := this.Unit( relnew, 
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
index 98be129..3713cc9 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
@@ -27,7 +27,7 @@
                           moperation.ProductID() = item.ProductID(), 
                           moperation.SequenceNumber() ).SequenceNumber()
       if( item.SequenceNumber() = maxsn ){
-        listtodealwithmaxsn.Add( item );
+          listtodealwithmaxsn.Add( item );
         }
       }
     
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
index fa5aa3b..9a854ef 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
@@ -10,7 +10,7 @@
   [*
     // Administrator Aug-16-2023 (created)
     // list to deal
-    //info( "Get list to deal of product" );
+    info( "Get list to deal of product" );
     listToDeal := construct( structured[MappingProduct] );
     
     if( isnull( businesstypes ) or businesstypes.Size() = 0 ) {
@@ -22,10 +22,10 @@
           }
     } else {
         if( iskeyproduct = true ){
-          listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true,  businesstypes.Find(  item.BusinessType()) > 0 );
-          }
+          listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true and businesstypes.Find(  item.BusinessType()) >= 0 );
+         }
         else{
-        listToDeal := selectset( this, MappingProduct, item, businesstypes.Find(  item.BusinessType()) > 0 );
+          listToDeal := selectset( this, MappingProduct, item, businesstypes.Find(  item.BusinessType()) >= 0 );
         }
     }
     totalcount := listToDeal.Size();
@@ -38,7 +38,7 @@
                                 "鍏ㄩ儴鐗╂枡浜у搧", 
                                 "PCS", 
                                 "鍏ㄩ儴鐗╂枡浜у搧",
-                                0.0
+                                0.0,false,false
                                 );
     count := 0;
     // Get the ProductMajorType list & ProductSubclassType list
@@ -54,7 +54,7 @@
                                     item.ProductMajorType(), 
                                     "PCS", 
                                     item.ProductMajorType(),
-                                    0.0
+                                    0.0,false,false
                                     );
       }
       productmajortype := item.ProductMajorType();
@@ -62,29 +62,30 @@
         productmajortype := "鍏ㄩ儴鐗╂枡浜у搧";
         }
        
-      if( not item.ProductSubclassType() = "" ){
-        Product_MP::CreateOrUpdate( this, 
-                                    item.ProductSubclassType(), 
-                                    productmajortype, 
-                                    item.ProductSubclassType(), 
-                                    "PCS", 
-                                    item.ProductSubclassType(),
-                                    0.0
-                                    );
-        }
-      productsubclasstype := item.ProductSubclassType();
-      if( productsubclasstype="" ){
-        productsubclasstype := productmajortype;
-        }
+    //  if( not item.ProductSubclassType() = "" ){
+    //    Product_MP::CreateOrUpdate( this, 
+    //                                item.ProductSubclassType(), 
+    //                                productmajortype, 
+    //                                item.ProductSubclassType(), 
+    //                                "PCS", 
+    //                                item.ProductSubclassType(),
+    //                                0.0,false,false
+    //                                );
+    //    }
+    //  productsubclasstype := item.ProductSubclassType();
+    //  if( productsubclasstype="" ){
+    //      productsubclasstype := productmajortype;
+    //    }
       
       if( not item.ID() = "" ){
           Product_MP::CreateOrUpdate( this, 
                                       item.ID(), 
-                                      productsubclasstype, 
+                                      productmajortype, 
                                       item.ID(), 
                                       item.UnitOfMeasureName(), 
                                       item.Name(),
-                                      item.ShelfLife()
+                                      item.ShelfLife(),
+                                      item.KeyProduct(),item.IsCommon()
                                       );
         }
       }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index b5618c6..7c856ff 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -22,6 +22,7 @@
     
     //Set the Default values
     unitofmeasurename := "PCS";
+    infinite := "Infinite";
     capacitytype := "Transport quantity";
     
     // Get the root data
@@ -29,7 +30,7 @@
                           "澶╅┈闆嗗洟", 
                           "澶╅┈闆嗗洟", 
                           "", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     // Get the sub root data
@@ -37,14 +38,14 @@
                           "鐢熶骇", 
                           "鐢熶骇", 
                           "澶╅┈闆嗗洟", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     Unit::CreateOrUpdate( this, 
                           "渚涘簲鍟�", 
                           "渚涘簲鍟�", 
                           "澶╅┈闆嗗洟", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     Unit::CreateOrUpdate( this, 
@@ -65,7 +66,7 @@
                             item.OrganCode(), 
                             OrgName, 
                             "鐢熶骇", 
-                            capacitytype, 
+                            infinite, 
                             unitofmeasurename );
                            
       //Get the second level unit
@@ -74,7 +75,7 @@
                             secondlevelid, 
                             secondlevelid, 
                             item.OrganCode(), 
-                            capacitytype, 
+                            infinite, 
                             unitofmeasurename );
         
       //Get the third level unit
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
index fe4e7a1..1375c53 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
@@ -140,6 +140,9 @@
     // 璁㈠崟闇�姹�-18
     CustomerOrder::DoSync( macroPlan, businessTypes );
     
+    //鍒犻櫎澶氫綑鎶ラ敊鏁版嵁-19
+    macroPlan.DeleteSnaityCheck();
+    
     //// todo 渚涘簲鍟嗚兘鍔�
     //info( "ProviderCapacity::DoSync" )
     
diff --git a/_Main/BL/Type_ManufactureLTImputation/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_ManufactureLTImputation/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..5884b30
--- /dev/null
+++ b/_Main/BL/Type_ManufactureLTImputation/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+  *]
+}
diff --git a/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
index 2c92dc7..d374c5e 100644
--- a/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
+++ b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
@@ -3,19 +3,20 @@
 StaticMethod CreateTestData (
   MacroPlan parent,
   String businessType,
-  String orgCode
+  String orgCode,
+  String productCode
 ) as MappingBOM
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
-    value := select( parent, MappingBOM, bom, bom.BusinessType() = businessType and bom.OrganCode() = orgCode );
+    value := select( parent, MappingBOM, bom, bom.BusinessType() = businessType and bom.OrganCode() = orgCode and bom.ProductCode() = productCode );
     if( isnull( value ) ) {
       value := parent.MappingBOM( relnew, 
                                   BusinessType := businessType,
                                   OrganCode := orgCode,
+                                  ProductCode := productCode, 
                                   ProcessSection := "", 
-                                  ProductCode := "", 
                                   ComponentCode := "", 
                                   AlternativeMaterialCode := "" );
     }
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByMonth.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByMonth.qbl
new file mode 100644
index 0000000..6b7351c
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByMonth.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetBalanceByMonth (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  Description: 'todo changeParent'
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := sum( parent, 
+                  MappingForecast, 
+                  item,
+                  productCodes.Find( item.ProductID() ) > -1 and yearNo = item.StartDate().Year() and monthNo = item.StartDate().Month(), 
+                  item.Price() * item.Quantity() );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByYear.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByYear.qbl
new file mode 100644
index 0000000..dfc4872
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetBalanceByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetBalanceByYear (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo
+) as Real
+{
+  Description: 'todo changeParent'
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := sum( parent, 
+                  MappingForecast, 
+                  item,
+                  productCodes.Find( item.ProductID() ) > -1 and yearNo = item.StartDate().Year(), 
+                  item.Price() * item.Quantity() );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByHalfYear.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByHalfYear.qbl
new file mode 100644
index 0000000..ecf844c
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByHalfYear.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetQuantityByHalfYear (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo,
+  Number halfNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := 0.0;
+    
+    startMonth := 1 + ( halfNo - 1 ) * 6;
+    endMonth := 6 + ( halfNo - 1 ) * 6;
+    
+    for( monthNo := startMonth; monthNo <= endMonth; monthNo := monthNo + 1 ) {
+      value := value + MappingForecast::GetQuantityByMonth( productCodes, parent, yearNo, monthNo );
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByMonth.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByMonth.qbl
new file mode 100644
index 0000000..d3ae8c1
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByMonth.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetQuantityByMonth (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := sum( parent, 
+                  MappingForecast, 
+                  item,
+                  productCodes.Find( item.ProductID() ) > -1 and yearNo = item.StartDate().Year() and monthNo = item.StartDate().Month(), 
+                  item.Quantity() );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityBySeason.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityBySeason.qbl
new file mode 100644
index 0000000..3b4ac41
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityBySeason.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetQuantityBySeason (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo,
+  Number seasonNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := 0.0;
+    
+    startMonth := 1 + ( seasonNo - 1 ) * 3;
+    endMonth := 3 + ( seasonNo - 1 ) * 3;
+    
+    for( monthNo := startMonth; monthNo <= endMonth; monthNo := monthNo + 1 ) {
+      value := value + MappingForecast::GetQuantityByMonth( productCodes, parent, yearNo, monthNo );
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByYear.qbl b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByYear.qbl
new file mode 100644
index 0000000..31db8aa
--- /dev/null
+++ b/_Main/BL/Type_MappingForecast/StaticMethod_GetQuantityByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetQuantityByYear (
+  Strings productCodes,
+  MacroPlan parent,
+  Number yearNo
+) as Real
+{
+  Description: 'todo changeParent'
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := sum( parent, 
+                  MappingForecast, 
+                  item,
+                  productCodes.Find( item.ProductID() ) > -1 and yearNo = item.StartDate().Year(), 
+                  item.Quantity() );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingOperation/Attribute_SequenceNumber.qbl b/_Main/BL/Type_MappingOperation/Attribute_SequenceNumber.qbl
index 4fc6ea4..fed9689 100644
--- a/_Main/BL/Type_MappingOperation/Attribute_SequenceNumber.qbl
+++ b/_Main/BL/Type_MappingOperation/Attribute_SequenceNumber.qbl
@@ -3,5 +3,6 @@
 Attribute SequenceNumber
 {
   #keys: '3[412960.0.86978408][412960.0.86978407][412960.0.86978409]'
+  IsReadOnly: true
   ValueType: Number
 }
diff --git a/_Main/BL/Type_MappingOperation/TypeIndex_MappingOperationTypeIndex.qbl b/_Main/BL/Type_MappingOperation/TypeIndex_MappingOperationTypeIndex.qbl
index 35ab7e4..2fc4aff 100644
--- a/_Main/BL/Type_MappingOperation/TypeIndex_MappingOperationTypeIndex.qbl
+++ b/_Main/BL/Type_MappingOperation/TypeIndex_MappingOperationTypeIndex.qbl
@@ -6,11 +6,7 @@
   [
     TypeIndexAttribute
     {
-      ModelElement: Line
-    }
-    TypeIndexAttribute
-    {
-      ModelElement: BusinessType
+      ModelElement: ProcessSection
     }
     TypeIndexAttribute
     {
@@ -18,7 +14,11 @@
     }
     TypeIndexAttribute
     {
-      ModelElement: OrganCode
+      ModelElement: BusinessType
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: Line
     }
     TypeIndexAttribute
     {
@@ -26,7 +26,11 @@
     }
     TypeIndexAttribute
     {
-      ModelElement: ProcessSection
+      ModelElement: SequenceNumber
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: OrganCode
     }
   ]
 }
diff --git a/_Main/BL/Type_MappingProduct/Attribute_BusinessType.qbl b/_Main/BL/Type_MappingProduct/Attribute_BusinessType.qbl
index 63b7d6b..1d3a4b3 100644
--- a/_Main/BL/Type_MappingProduct/Attribute_BusinessType.qbl
+++ b/_Main/BL/Type_MappingProduct/Attribute_BusinessType.qbl
@@ -3,5 +3,6 @@
 Attribute BusinessType
 {
   #keys: '3[414480.0.61560268][414480.0.61560267][414480.0.61560269]'
+  IsReadOnly: true
   ValueType: String
 }
diff --git a/_Main/BL/Type_MappingProduct/TypeIndex_MappingProductTypeIndex.qbl b/_Main/BL/Type_MappingProduct/TypeIndex_MappingProductTypeIndex.qbl
index 6cd9f83..56be564 100644
--- a/_Main/BL/Type_MappingProduct/TypeIndex_MappingProductTypeIndex.qbl
+++ b/_Main/BL/Type_MappingProduct/TypeIndex_MappingProductTypeIndex.qbl
@@ -8,5 +8,9 @@
     {
       ModelElement: ID
     }
+    TypeIndexAttribute
+    {
+      ModelElement: BusinessType
+    }
   ]
 }
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityEquivalent.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityEquivalent.qbl
new file mode 100644
index 0000000..79ee8e4
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityEquivalent.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityEquivalent
+{
+  #keys: '3[414384.0.867241217][414384.0.867241216][414384.0.867241218]'
+  Description: '浜ц兘褰撻噺'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
deleted file mode 100644
index acb1511..0000000
--- a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInJan
-{
-  #keys: '3[414384.0.803580132][414384.0.803580131][414384.0.803580133]'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth1.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
new file mode 100644
index 0000000..5aa064a
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth1
+{
+  #keys: '3[414384.0.864360392][414384.0.864360391][414384.0.864360393]'
+  Description: '1鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth10.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
new file mode 100644
index 0000000..2d0823b
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth10
+{
+  #keys: '3[414384.0.864360398][414384.0.864360397][414384.0.864360399]'
+  Description: '10鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth11.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
new file mode 100644
index 0000000..3e4e17f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth11
+{
+  #keys: '3[414384.0.864360395][414384.0.864360394][414384.0.864360396]'
+  Description: '11鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth12.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
new file mode 100644
index 0000000..a494071
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth12
+{
+  #keys: '3[414384.0.864360386][414384.0.864360385][414384.0.864360387]'
+  Description: '12鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth2.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
new file mode 100644
index 0000000..96e4277
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth2
+{
+  #keys: '3[414384.0.864360371][414384.0.864360370][414384.0.864360372]'
+  Description: '2鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth3.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
new file mode 100644
index 0000000..c82ee6a
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth3
+{
+  #keys: '3[414384.0.864360374][414384.0.864360373][414384.0.864360375]'
+  Description: '3鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth4.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
new file mode 100644
index 0000000..14a2e6c
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth4
+{
+  #keys: '3[414384.0.864360377][414384.0.864360376][414384.0.864360378]'
+  Description: '4鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth5.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
new file mode 100644
index 0000000..e889eda
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth5
+{
+  #keys: '3[414384.0.864360380][414384.0.864360379][414384.0.864360381]'
+  Description: '5鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth6.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
new file mode 100644
index 0000000..227edb2
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth6
+{
+  #keys: '3[414384.0.864360401][414384.0.864360400][414384.0.864360402]'
+  Description: '6鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth7.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
new file mode 100644
index 0000000..007d324
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth7
+{
+  #keys: '3[414384.0.864360383][414384.0.864360382][414384.0.864360384]'
+  Description: '7鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth8.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
new file mode 100644
index 0000000..0bea26a
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth8
+{
+  #keys: '3[414384.0.864360368][414384.0.864360367][414384.0.864360369]'
+  Description: '8鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth9.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
new file mode 100644
index 0000000..ce4956a
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth9
+{
+  #keys: '3[414384.0.864360389][414384.0.864360388][414384.0.864360390]'
+  Description: '9鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSTotal.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSTotal.qbl
new file mode 100644
index 0000000..c7b3fc7
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSTotal
+{
+  #keys: '3[414384.0.867241226][414384.0.867241225][414384.0.867241227]'
+  Description: '骞翠骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
deleted file mode 100644
index b063ea3..0000000
--- a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInJan
-{
-  #keys: '3[414384.0.803580142][414384.0.803580141][414384.0.803580143]'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth1.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
new file mode 100644
index 0000000..f2ed586
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth1
+{
+  #keys: '3[414384.0.864360406][414384.0.864360405][414384.0.864360407]'
+  Description: '1鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth10.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
new file mode 100644
index 0000000..9e791d0
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth10
+{
+  #keys: '3[414384.0.864360430][414384.0.864360429][414384.0.864360431]'
+  Description: '10鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth11.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
new file mode 100644
index 0000000..283eb69
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth11
+{
+  #keys: '3[414384.0.864360427][414384.0.864360426][414384.0.864360428]'
+  Description: '11鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth12.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
new file mode 100644
index 0000000..b91d698
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth12
+{
+  #keys: '3[414384.0.864360439][414384.0.864360438][414384.0.864360440]'
+  Description: '12鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth2.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
new file mode 100644
index 0000000..b73c187
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth2
+{
+  #keys: '3[414384.0.864360409][414384.0.864360408][414384.0.864360410]'
+  Description: '2鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth3.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
new file mode 100644
index 0000000..7d60a74
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth3
+{
+  #keys: '3[414384.0.864360421][414384.0.864360420][414384.0.864360422]'
+  Description: '3鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth4.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
new file mode 100644
index 0000000..6c46554
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth4
+{
+  #keys: '3[414384.0.864360415][414384.0.864360414][414384.0.864360416]'
+  Description: '4鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth5.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
new file mode 100644
index 0000000..575b883
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth5
+{
+  #keys: '3[414384.0.864360412][414384.0.864360411][414384.0.864360413]'
+  Description: '5鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth6.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
new file mode 100644
index 0000000..5af9a7b
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth6
+{
+  #keys: '3[414384.0.864360424][414384.0.864360423][414384.0.864360425]'
+  Description: '6鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth7.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
new file mode 100644
index 0000000..dca7992
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth7
+{
+  #keys: '3[414384.0.864360433][414384.0.864360432][414384.0.864360434]'
+  Description: '7鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth8.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
new file mode 100644
index 0000000..3daef81
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth8
+{
+  #keys: '3[414384.0.864360436][414384.0.864360435][414384.0.864360437]'
+  Description: '8鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth9.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
new file mode 100644
index 0000000..b739807
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth9
+{
+  #keys: '3[414384.0.864360418][414384.0.864360417][414384.0.864360419]'
+  Description: '9鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetTotal.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetTotal.qbl
new file mode 100644
index 0000000..1ec9da6
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetTotal
+{
+  #keys: '3[414384.0.867241232][414384.0.867241231][414384.0.867241233]'
+  Description: '骞翠骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_Deleted.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_Deleted.qbl
new file mode 100644
index 0000000..38d2205
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_Deleted.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Deleted
+{
+  #keys: '3[414384.0.867241223][414384.0.867241222][414384.0.867241224]'
+  Description: '宸插垹闄�'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_DisplayTechnology.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_DisplayTechnology.qbl
new file mode 100644
index 0000000..cfa5f36
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_DisplayTechnology.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DisplayTechnology
+{
+  #keys: '3[414384.0.867241208][414384.0.867241207][414384.0.867241209]'
+  Description: '鏄剧ず鎶�鏈垎绫�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfCut.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfCut.qbl
new file mode 100644
index 0000000..aac3e19
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfCut.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfCut
+{
+  #keys: '3[414384.0.867241229][414384.0.867241228][414384.0.867241230]'
+  Description: '鍒囧壊鏁�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfMask.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfMask.qbl
new file mode 100644
index 0000000..0a37a77
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_NumberOfMask.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfMask
+{
+  #keys: '3[414384.0.867241241][414384.0.867241240][414384.0.867241242]'
+  Description: 'mask鏁�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_OrgCode.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..3e69afb
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414384.0.867241214][414384.0.867241213][414384.0.867241215]'
+  Description: '涓氬姟閮ㄩ棬'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfArray.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
new file mode 100644
index 0000000..5f3564c
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfArray
+{
+  #keys: '3[414384.0.864360358][414384.0.864360357][414384.0.864360359]'
+  Description: '闈㈡澘鍩哄湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
new file mode 100644
index 0000000..78ade77
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfEvaporation
+{
+  #keys: '3[414384.0.867241211][414384.0.867241210][414384.0.867241212]'
+  Description: '钂搁晙浜у湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_Resolution.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_Resolution.qbl
new file mode 100644
index 0000000..f503398
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_Resolution.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Resolution
+{
+  #keys: '3[414384.0.867241235][414384.0.867241234][414384.0.867241236]'
+  Description: '鍒嗚鲸鐜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth1.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth1.qbl
new file mode 100644
index 0000000..d061259
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth1
+{
+  #keys: '3[414384.0.864360470][414384.0.864360469][414384.0.864360471]'
+  Description: '1鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth10.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth10.qbl
new file mode 100644
index 0000000..824026b
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth10
+{
+  #keys: '3[414384.0.864360449][414384.0.864360448][414384.0.864360450]'
+  Description: '10鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth11.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth11.qbl
new file mode 100644
index 0000000..896ab80
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth11
+{
+  #keys: '3[414384.0.864360443][414384.0.864360442][414384.0.864360444]'
+  Description: '11鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth12.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth12.qbl
new file mode 100644
index 0000000..e6fb2ea
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth12
+{
+  #keys: '3[414384.0.864360455][414384.0.864360454][414384.0.864360456]'
+  Description: '12鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth2.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth2.qbl
new file mode 100644
index 0000000..7f2e07b
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth2
+{
+  #keys: '3[414384.0.864360461][414384.0.864360460][414384.0.864360462]'
+  Description: '2鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth3.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth3.qbl
new file mode 100644
index 0000000..cafbdf7
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth3
+{
+  #keys: '3[414384.0.864360467][414384.0.864360466][414384.0.864360468]'
+  Description: '3鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth4.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth4.qbl
new file mode 100644
index 0000000..d710f68
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth4
+{
+  #keys: '3[414384.0.864360464][414384.0.864360463][414384.0.864360465]'
+  Description: '4鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth5.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth5.qbl
new file mode 100644
index 0000000..59d0ed8
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth5
+{
+  #keys: '3[414384.0.864360476][414384.0.864360475][414384.0.864360477]'
+  Description: '5鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth6.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth6.qbl
new file mode 100644
index 0000000..bb36165
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth6
+{
+  #keys: '3[414384.0.864360458][414384.0.864360457][414384.0.864360459]'
+  Description: '6鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth7.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth7.qbl
new file mode 100644
index 0000000..68f79e6
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth7
+{
+  #keys: '3[414384.0.864360473][414384.0.864360472][414384.0.864360474]'
+  Description: '7鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth8.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth8.qbl
new file mode 100644
index 0000000..212ce32
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth8
+{
+  #keys: '3[414384.0.864360446][414384.0.864360445][414384.0.864360447]'
+  Description: '8鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth9.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth9.qbl
new file mode 100644
index 0000000..e014c2a
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth9
+{
+  #keys: '3[414384.0.864360452][414384.0.864360451][414384.0.864360453]'
+  Description: '9鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountTotal.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountTotal.qbl
new file mode 100644
index 0000000..db943a7
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SaleAmountTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountTotal
+{
+  #keys: '3[414384.0.867241220][414384.0.867241219][414384.0.867241221]'
+  Description: '骞撮攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
deleted file mode 100644
index 97fa1b8..0000000
--- a/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SalesAmountInWInJan
-{
-  #keys: '3[414384.0.803580152][414384.0.803580151][414384.0.803580153]'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_ShippingForm.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_ShippingForm.qbl
new file mode 100644
index 0000000..8356f90
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_ShippingForm.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShippingForm
+{
+  #keys: '3[414384.0.867241244][414384.0.867241243][414384.0.867241245]'
+  Description: '鍑鸿揣褰㈡��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_CapacityEquivalent.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_CapacityEquivalent.qbl
new file mode 100644
index 0000000..c5be8e2
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_CapacityEquivalent.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CapacityEquivalent
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_DisplayTechnology.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_DisplayTechnology.qbl
new file mode 100644
index 0000000..81ea97e
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_DisplayTechnology.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: DisplayTechnology
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfCut.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfCut.qbl
new file mode 100644
index 0000000..c512ccf
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfCut.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: NumberOfCut
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfMask.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfMask.qbl
new file mode 100644
index 0000000..27114c0
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_NumberOfMask.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: NumberOfMask
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_OrgCode.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_OrgCode.qbl
new file mode 100644
index 0000000..e95264f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_OrgCode.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrgCode
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl
new file mode 100644
index 0000000..0c8ee87
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: PlaceOfProductionOfEvaporation
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_Resolution.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_Resolution.qbl
new file mode 100644
index 0000000..e505ebf
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_Resolution.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Resolution
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/DefaultValue_ShippingForm.qbl b/_Main/BL/Type_MappingSaleBudge/DefaultValue_ShippingForm.qbl
new file mode 100644
index 0000000..bf077c5
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/DefaultValue_ShippingForm.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ShippingForm
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInPCSInYear.qbl b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInPCSInYear.qbl
new file mode 100644
index 0000000..d3faf58
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInPCSInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInPCSInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
new file mode 100644
index 0000000..7ddf422
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInHalfYear (
+  Number halfNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    fromMonth := 1 + ( halfNo - 1 ) * 6;
+    toMonth := 6 + ( halfNo - 1 ) * 6;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInSeason.qbl b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInSeason.qbl
new file mode 100644
index 0000000..75d8ad6
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInSeason.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInSeason (
+  Number seasonNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    fromMonth := 1 + ( seasonNo - 1 ) * 3;
+    toMonth := 3 + ( seasonNo - 1 ) * 3;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInYear.qbl b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInYear.qbl
new file mode 100644
index 0000000..ddb2a10
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Method_GetCapacityInSheetInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCapacityInSheetInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Method_GetSaleAmountInYear.qbl b/_Main/BL/Type_MappingSaleBudge/Method_GetSaleAmountInYear.qbl
new file mode 100644
index 0000000..93bf2ba
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Method_GetSaleAmountInYear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetSaleAmountInYear () as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := 0.0;
+    for( i := 1; i <= 12; i := i + 1 ) {
+      field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]i );
+      result := result + field.GetReal( this );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl
new file mode 100644
index 0000000..a004017
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSaleByMonth (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  Description: '閿�鍞锛圵锛�'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]monthNo );
+    value := sum( parent, 
+                  MappingCapacityAndSaleBudge, 
+                  item, 
+                  productNo.Find( item.ProductCode() ) > -1,
+                  field.GetReal( item ) );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl
new file mode 100644
index 0000000..c5ef67c
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSaleByYear (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo
+) as Real
+{
+  Description: '閿�鍞锛圵锛�'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   MappingCapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetSaleAmountInYear() );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl
new file mode 100644
index 0000000..d0d21e7
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByHalfYear (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo,
+  Number halfNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   MappingCapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInHalfYear( halfNo ) );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl
new file mode 100644
index 0000000..03c0529
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByMonth (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  Description: '浜ц兘-瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]monthNo );
+    value := sum( parent, 
+                  MappingCapacityAndSaleBudge, 
+                  item, 
+                  productNo.Find( item.ProductCode() ) > -1,
+                  field.GetReal( item ) );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl
new file mode 100644
index 0000000..3426e30
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetBySeason (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo,
+  Number seasonNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    
+    list := selectset( parent, 
+                       MappingCapacityAndSaleBudge, 
+                       item, 
+                       productNo.Find( item.ProductCode() ) > -1 );
+    result := sum( parent, 
+                   MappingCapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInSeason( seasonNo ) );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl
new file mode 100644
index 0000000..124d7ff
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSheetByYear (
+  Strings productNo,
+  MPSync parent,
+  Number yearNo
+) as Real
+{
+  Description: '浜ц兘 - 瀹炴暟澶у紶'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( parent, 
+                   MappingCapacityAndSaleBudge, 
+                   item, 
+                   productNo.Find( item.ProductCode() ) > -1,
+                   item.GetCapacityInSheetInYear() );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/Attribute_IsGenerateAndPublishWorkOrders.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/Attribute_IsGenerateAndPublishWorkOrders.qbl
new file mode 100644
index 0000000..a287573
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/Attribute_IsGenerateAndPublishWorkOrders.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsGenerateAndPublishWorkOrders
+{
+  #keys: '3[414702.0.224201173][414702.0.224201172][414702.0.224201174]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl
new file mode 100644
index 0000000..3673ac7
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateAndDistributeWorkOrders (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    macroPlan.MasterPlanReleaseWorkOrder( relflush );
+    
+    newMasterPlanReleaseWorkOrder := macroPlan.MasterPlanReleaseWorkOrder( relnew, IsGenerateAndPublishWorkOrders := true );
+    
+    universalPrefixForWorkOrderNumber := [String]Date::ActualDate().Year() + 
+                                         ifexpr( ( [String]Date::ActualDate().Month() ).Length() = 1, "0" + [String]Date::ActualDate().Month(), [String]Date::ActualDate().Month() )                         +
+                                         ifexpr( ( [String]Date::ActualDate().Day() ).Length() = 1, "0" + [String]Date::ActualDate().Day(), [String]Date::ActualDate().Day() )                               +
+                                         ifexpr( ( [String]DateTime::ActualTime().HourOfDay() ).Length() = 1, "0" + [String]DateTime::ActualTime().HourOfDay(), [String]DateTime::ActualTime().HourOfDay() ) +
+                                         ifexpr( ( [String]DateTime::ActualTime().MinuteOfHour() ).Length() = 1, "0" + [String]DateTime::ActualTime().MinuteOfHour(), [String]DateTime::ActualTime().MinuteOfHour() );
+    
+    orderNumber := 1;
+    
+    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ) {
+      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl ) {
+        plannedQuantity := sum( pispippl, NewSupply, ns, guard( not isnull( ns.Process_MP().astype( Operation ) ), false ), ns.Quantity() );
+        if ( plannedQuantity > 0 ) {
+          newMasterPlanReleaseWorkOrder.MasterPlanReleaseWorkOrderTabulation( relnew,
+                                                                              ProductionWorkOrderNumber := universalPrefixForWorkOrderNumber + [String]orderNumber,
+                                                                              ProductModel              := pisp.ProductID(),
+                                                                              MaterialDescription       := pisp.ProductID(),
+                                                                              StartDate                 := pispippl.Start().Date(),
+                                                                              EndDate                   := pispippl.End().Date(),
+                                                                              PlannedQuantity           := plannedQuantity
+                                                                             );
+          orderNumber++;
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/_ROOT_Type_MasterPlanReleaseWorkOrder.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/_ROOT_Type_MasterPlanReleaseWorkOrder.qbl
new file mode 100644
index 0000000..22de573
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/_ROOT_Type_MasterPlanReleaseWorkOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MasterPlanReleaseWorkOrder
+{
+  #keys: '5[414702.0.224201152][414702.0.224201150][0.0.0][414702.0.224201151][414702.0.224201153]'
+  BaseType: Object
+  StructuredName: 'MasterPlanReleaseWorkOrders'
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_EndDate.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_EndDate.qbl
new file mode 100644
index 0000000..082a777
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_EndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[414702.0.224201255][414702.0.224201254][414702.0.224201256]'
+  Description: '缁撴潫鏃堕棿'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_MaterialDescription.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_MaterialDescription.qbl
new file mode 100644
index 0000000..cc8ae05
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_MaterialDescription.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialDescription
+{
+  #keys: '3[414702.0.224201232][414702.0.224201231][414702.0.224201233]'
+  Description: '鐗╂枡鎻忚堪'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_PlannedQuantity.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_PlannedQuantity.qbl
new file mode 100644
index 0000000..bd6926d
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_PlannedQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlannedQuantity
+{
+  #keys: '3[414702.0.224201265][414702.0.224201264][414702.0.224201266]'
+  Description: '璁″垝鏁伴噺'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductModel.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductModel.qbl
new file mode 100644
index 0000000..f8432f1
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductModel.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductModel
+{
+  #keys: '3[414702.0.224201216][414702.0.224201215][414702.0.224201217]'
+  Description: '浜у搧鍨嬪彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductionWorkOrderNumber.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductionWorkOrderNumber.qbl
new file mode 100644
index 0000000..fd4d164
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_ProductionWorkOrderNumber.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionWorkOrderNumber
+{
+  #keys: '3[414702.0.224201206][414702.0.224201205][414702.0.224201207]'
+  Description: '鐢熶骇宸ュ崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_StartDate.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_StartDate.qbl
new file mode 100644
index 0000000..4395db2
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414702.0.224201245][414702.0.224201244][414702.0.224201246]'
+  Description: '寮�濮嬫椂闂�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderStatus.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderStatus.qbl
new file mode 100644
index 0000000..a2f9f37
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderStatus.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WorkOrderStatus
+{
+  #keys: '3[414702.0.224201285][414702.0.224201284][414702.0.224201286]'
+  Description: '宸ュ崟鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderType.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderType.qbl
new file mode 100644
index 0000000..07a22be
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_WorkOrderType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WorkOrderType
+{
+  #keys: '3[414702.0.224201275][414702.0.224201274][414702.0.224201276]'
+  Description: '宸ュ崟绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/StaticMethod_Export.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/StaticMethod_Export.qbl
new file mode 100644
index 0000000..40450f1
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/StaticMethod_Export.qbl
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+  MasterPlanReleaseWorkOrderTabulations masterPlanReleaseWorkOrderTabulations
+) as BinaryValue
+{
+  TextBody:
+  [*
+    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>鐢熶骇宸ュ崟</name><column><name>鐢熶骇宸ュ崟鍙�</name><type>String</type></column><column><name>浜у搧鍨嬪彿</name><type>String</type></column><column><name>鐗╂枡鎻忚堪</name><type>String</type></column><column><name>寮�濮嬫椂闂�</name><type>String</type></column><column><name>缁撴潫鏃堕棿</name><type>String</type></column><column><name>璁″垝鏁伴噺</name><type>Number</type></column><column><name>宸ュ崟绫诲瀷</name><type>String</type></column><column><name>宸ュ崟鐘舵��</name><type>String</type></column></table>';
+    
+    xmlDOMImplementation := XMLDOMImplementation::Create();
+    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
+    
+    mprwots := selectsortedset( masterPlanReleaseWorkOrderTabulations, Elements, tempMPRWOT, true, tempMPRWOT.ProductionWorkOrderNumber() );
+    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
+    
+    traverse ( mprwots, Elements, mprwot ) {
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.ProductionWorkOrderNumber(), "鐢熶骇宸ュ崟鍙�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.ProductModel(), "浜у搧鍨嬪彿" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.MaterialDescription(), "鐗╂枡鎻忚堪" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.StartDate().Format( "Y-M2-D2" ), "寮�濮嬫椂闂�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.EndDate().Format( "Y-M2-D2" ), "缁撴潫鏃堕棿" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]mprwot.PlannedQuantity().Round( 0 ), "璁″垝鏁伴噺" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.WorkOrderType(), "宸ュ崟绫诲瀷" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, mprwot.WorkOrderStatus(), "宸ュ崟鐘舵��" );
+    }
+    
+    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
+    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
+    
+    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
+    tableGroupHandle := TableGroupHandle::Create( "鐢熶骇宸ュ崟" );
+    tableGroupHandle.Add( tableHandle );
+    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    
+    return tableBinaryData.AsBinaryValue();
+  *]
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/_ROOT_Type_MasterPlanReleaseWorkOrderTabulation.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/_ROOT_Type_MasterPlanReleaseWorkOrderTabulation.qbl
new file mode 100644
index 0000000..4bf81d7
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/_ROOT_Type_MasterPlanReleaseWorkOrderTabulation.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MasterPlanReleaseWorkOrderTabulation
+{
+  #keys: '5[414702.0.224201184][414702.0.224201182][0.0.0][414702.0.224201183][414702.0.224201185]'
+  BaseType: Object
+  StructuredName: 'MasterPlanReleaseWorkOrderTabulations'
+}
diff --git a/_Main/BL/Type_PRData/Attribute_IsGenericMaterial.qbl b/_Main/BL/Type_PRData/Attribute_IsGenericMaterial.qbl
new file mode 100644
index 0000000..587b1bb
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_IsGenericMaterial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsGenericMaterial
+{
+  #keys: '3[414384.0.847354638][414384.0.847354637][414384.0.847354639]'
+  Description: '鏄惁涓撶敤鏂�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_IsLongLeadItem.qbl b/_Main/BL/Type_PRData/Attribute_IsLongLeadItem.qbl
new file mode 100644
index 0000000..648713d
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_IsLongLeadItem.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsLongLeadItem
+{
+  #keys: '3[414384.0.847354628][414384.0.847354627][414384.0.847354629]'
+  Description: '鏄惁闀垮懆鏈�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_IsPanelMaterial.qbl b/_Main/BL/Type_PRData/Attribute_IsPanelMaterial.qbl
new file mode 100644
index 0000000..b74f153
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_IsPanelMaterial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsPanelMaterial
+{
+  #keys: '3[414384.0.847354618][414384.0.847354617][414384.0.847354619]'
+  Description: '闈㈡澘鐗╂枡鏍囪瘑'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_LeadTime.qbl b/_Main/BL/Type_PRData/Attribute_LeadTime.qbl
new file mode 100644
index 0000000..738fe9e
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_LeadTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LeadTime
+{
+  #keys: '3[414384.0.847354658][414384.0.847354657][414384.0.847354659]'
+  Description: '鎻愬墠鏈�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PRData/Attribute_MaterialMRPType.qbl b/_Main/BL/Type_PRData/Attribute_MaterialMRPType.qbl
new file mode 100644
index 0000000..f7ce480
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_MaterialMRPType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialMRPType
+{
+  #keys: '3[414384.0.847354648][414384.0.847354647][414384.0.847354649]'
+  Description: '鐗╂枡璁″垝绛栫暐'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_SendTIme.qbl b/_Main/BL/Type_PRData/Attribute_SendTIme.qbl
index 5a26118..767d0b3 100644
--- a/_Main/BL/Type_PRData/Attribute_SendTIme.qbl
+++ b/_Main/BL/Type_PRData/Attribute_SendTIme.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-Attribute SendTIme
+Attribute SendTime
 {
   #keys: '3[414384.0.789498516][414384.0.789498515][414384.0.789498517]'
   Description: '鍙戦�佹椂闂�'
diff --git a/_Main/BL/Type_PRData/Attribute_SendTimeString.qbl b/_Main/BL/Type_PRData/Attribute_SendTimeString.qbl
new file mode 100644
index 0000000..248a63f
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_SendTimeString.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendTimeString
+{
+  #keys: '3[414384.0.847354596][414384.0.847354595][414384.0.847354597]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Function_CalcSendTimeString.qbl b/_Main/BL/Type_PRData/Function_CalcSendTimeString.qbl
new file mode 100644
index 0000000..4705c8f
--- /dev/null
+++ b/_Main/BL/Type_PRData/Function_CalcSendTimeString.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcSendTimeString
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    value := "";
+    if( this.SendStatus() <> "" ) {
+      cnv := DateTimeToString::StandardConverter();
+      cnv.SetCustomConversion();
+      cnv.CustomFormatString( "yyyy/MM/dd H:mm:ss" );
+      
+      value := guard( cnv.Convert( this.SendTime() ), "" );
+    }
+    this.SendTimeString( value );
+  *]
+}
diff --git a/_Main/BL/Type_PRData/Method_DoCall.qbl b/_Main/BL/Type_PRData/Method_DoCall.qbl
index 9866803..7a3a433 100644
--- a/_Main/BL/Type_PRData/Method_DoCall.qbl
+++ b/_Main/BL/Type_PRData/Method_DoCall.qbl
@@ -49,11 +49,11 @@
     result.ReceiveTime( DateTime::Now() );
     
     // 涓昏褰曚慨鏀�
-    result.SendStatus( "T" );
+    result.SendStatus( "宸插彂閫�" );
     result.ReleaseBy( callBy );
     result.SendTime( DateTime::Now() );
-    this.SendStatus( "T" );
-    this.SendTIme( DateTime::Now() );
+    this.SendStatus( "宸插彂閫�" );
+    this.SendTime( DateTime::Now() );
     this.SendBy( callBy );
     
     return result;
diff --git a/_Main/BL/Type_PRData/Method_PrintCall.qbl b/_Main/BL/Type_PRData/Method_PrintCall.qbl
new file mode 100644
index 0000000..f82b310
--- /dev/null
+++ b/_Main/BL/Type_PRData/Method_PrintCall.qbl
@@ -0,0 +1,47 @@
+Quintiq file version 2.0
+#parent: #root
+Method PrintCall (
+  GlobalOTDTable globalData,
+  String callBy
+) as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-11-2023 (created)
+    result := globalData.PRHistoryData( relnew );
+    
+    // 鐓ф惉閮ㄥ垎
+    result.AuthorizationStatus( this.AuthorizationStatus() );
+    result.BusinessType( this.BusinessType() );
+    result.DataID( this.DataID() );
+    result.DeliverToRequestorId( this.DeliverToRequestorId() );
+    result.DestinationOrganizationID( this.DestinationOrganizationID() );
+    result.DestinationTypeCode( this.DestinationTypeCode() );
+    result.HeaderDescription( this.HeaderDescription() );
+    result.LineAttribute1( this.LineAttribute1() );
+    result.LineAttribute6( this.LineAttribute6() );
+    result.LineType( this.LineType() );
+    result.LineTypeId( this.LineTypeId() );
+    result.MRPCalverNo( this.MRPCalverNo() );
+    result.OrganCode( this.OrganCode() );
+    result.OrgId( this.OrgId() );
+    result.PlannerCode( this.PlannerCode() );
+    result.PreparerId( this.PreparerId() );
+    result.ProduceRequiredDate( this.ProduceRequiredDate() );
+    result.ProductID( this.ProductID() );
+    result.ProductName( this.ProductName() );
+    result.ProviderCode( this.ProviderCode() );
+    result.ProviderName( this.ProviderName() );
+    result.Quantity( this.Quantity() );
+    result.RequisitionType( this.RequisitionType() );
+    result.StockingPointID( this.StockingPointID() );
+    result.UnitOfMeasure( this.UnitOfMeasure() );
+    result.UnitPrice( this.UnitPrice() );
+    
+    // 璇锋眰閮ㄥ垎
+    request := ERPRequestOfPR::Create( result );
+    retult := request.GetCallJSONString();
+    request.Delete();
+    return retult;
+  *]
+}
diff --git "a/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream\043595.qbl" "b/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream\043595.qbl"
new file mode 100644
index 0000000..540295e
--- /dev/null
+++ "b/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream\043595.qbl"
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExportTheFileStream (
+  MacroPlan parent
+) as BinaryValue
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    return PRData::ExportTheFileStream( selectset( parent, PRData, item, true ) );
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl b/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl
new file mode 100644
index 0000000..5a26632
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl
@@ -0,0 +1,78 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExportTheFileStream (
+  PRDatas toExportList
+) as BinaryValue
+{
+  TextBody:
+  [*
+    // generate by generate_export.py
+    dateTimeToString := DateTimeToString::StandardConverter();
+    dateTimeToString.SetCustomConversion();
+    dateTimeToString.CustomFormatString( "yyyy/MM/dd H:mm:ss" );
+    
+    dateToString := DateToString::StandardConverter();
+    dateToString.SetCustomConversion();
+    dateToString.CustomFormatString( "yyyy/MM/dd" );
+    
+    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>PR</name>
+    <column><name>鐗╂枡缂栫爜</name><type>String</type></column>
+    <column><name>鐗╂枡鍚嶇О</name><type>String</type></column>
+    <column><name>闈㈡澘鐗╂枡鏍囪瘑</name><type>String</type></column>
+    <column><name>浜よ揣鏃ユ湡</name><type>String</type></column>
+    <column><name>PR寤鸿鏃ユ湡</name><type>String</type></column>
+    <column><name>浜よ揣鏁伴噺</name><type>Number</type></column>
+    <column><name>MRP璁$畻鐗堟湰鍙�</name><type>String</type></column>
+    <column><name>涓氬姟绫诲瀷</name><type>String</type></column>
+    <column><name>缁勭粐缂栫爜</name><type>String</type></column>
+    <column><name>鏄惁闀垮懆鏈�</name><type>String</type></column>
+    <column><name>鏄惁涓撶敤鏂�</name><type>String</type></column>
+    <column><name>鐗╂枡璁″垝绛栫暐</name><type>String</type></column>
+    <column><name>鎻愬墠鏈�</name><type>Number</type></column>
+    <column><name>渚涘簲鍟嗕唬鐮�</name><type>String</type></column>
+    <column><name>渚涘簲鍟嗗悕绉�</name><type>String</type></column>
+    <column><name>鏀惰揣搴撳瓨鐐�</name><type>String</type></column>
+    <column><name>璁¢噺鍗曚綅</name><type>String</type></column>
+    <column><name>PR鏁版嵁鍙戦�佺姸鎬�</name><type>String</type></column>
+    <column><name>鍙戦�佹椂闂�</name><type>String</type></column>
+    <column><name>鍙戦�佷汉</name><type>String</type></column>
+    </table>';
+    xmlDOMImplementation := XMLDOMImplementation::Create();
+    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
+    
+    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
+    
+    traverse ( toExportList, Elements, toExport ) {
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "鐗╂枡缂栫爜" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "鐗╂枡鍚嶇О" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsPanelMaterial(), "闈㈡澘鐗╂枡鏍囪瘑" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "浜よ揣鏃ユ湡" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.PRSuggestionDate() = Date::MinDate(), "", dateToString.Convert( toExport.PRSuggestionDate() ) ), "PR寤鸿鏃ユ湡" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "浜よ揣鏁伴噺" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP璁$畻鐗堟湰鍙�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "涓氬姟绫诲瀷" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "缁勭粐缂栫爜" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsLongLeadItem(), "鏄惁闀垮懆鏈�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsGenericMaterial(), "鏄惁涓撶敤鏂�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MaterialMRPType(), "鐗╂枡璁″垝绛栫暐" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.LeadTime(), "鎻愬墠鏈�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "渚涘簲鍟嗕唬鐮�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "渚涘簲鍟嗗悕绉�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "鏀惰揣搴撳瓨鐐�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "璁¢噺鍗曚綅" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR鏁版嵁鍙戦�佺姸鎬�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "鍙戦�佹椂闂�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendBy(), "鍙戦�佷汉" );
+    }
+    
+    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
+    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
+    
+    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
+    tableGroupHandle := TableGroupHandle::Create( "PR" );
+    tableGroupHandle.Add( tableHandle );
+    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    
+    return tableBinaryData.AsBinaryValue();
+  *]
+}
diff --git "a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl" "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
index a8478db..2b88918 100644
--- "a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
+++ "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
@@ -1,6 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod FromSupplyPlanning (
+  GlobalOTDTable otdTable,
   MacroPlan macroPlan,
   MacroPlan mappingRoot,
   ProductInStockingPointInPeriod pispip
@@ -17,12 +18,13 @@
     stockingPoint := pisp.StockingPoint_MP();
     period := pispip.Period_MP();
     mappingProduct := MappingProduct::GetByProductId( mappingRoot, product.ID() );
+    matAttrSetting := MatAttrSettingAndPlanStrategy::GetExistByMatCode( otdTable, product.ID() );
     // 鎺ュ彛/涓棿琛ㄦ殏鏃�
     mappingProviderCapacity := "鏆傛棤";
     erpData := "鏆傛棤";
     
     // 鏍规嵁pispip
-    result.MRPCalverNo( pispip.MRPCalverNo() );
+    result.MRPCalverNo( ifexpr( pispip.MRPCalverNo() = "", "鏆傛棤", pispip.MRPCalverNo() ) );
     result.Quantity( pispip.NewSupplyQuantity() );
     
     // 鏍规嵁product
@@ -37,14 +39,34 @@
     result.PRSuggestionDate( ifexpr( (result.ProduceRequiredDate() - Duration::Days( 7 )).Date() >= Date::Today(),
                                      Date::Today(), (result.ProduceRequiredDate() - Duration::Days( 7 )).Date() ) );
     
+    // 鏍规嵁 鐗╂枡灞炴�ф爣绛捐瀹�&鐗╂枡璁″垝绛栫暐
+    result.IsPanelMaterial( "鏆傛棤" );
+    if( isnull( matAttrSetting ) ) {
+      result.IsGenericMaterial( "鏆傛棤" );
+      result.IsLongLeadItem( "鏆傛棤" );
+      result.MaterialMRPType( "鏆傛棤" );
+    } else {
+      result.IsGenericMaterial( matAttrSetting.FlagGeneric() );
+      result.IsLongLeadItem( matAttrSetting.FlagLongTerm() );
+      result.MaterialMRPType( ifexpr( matAttrSetting.PlanningStrategyCustom() <> "", matAttrSetting.PlanningStrategyCustom(), matAttrSetting.PlanningStrategyAuto() ) );
+    }
+    
+    
     // 鏍规嵁product涓棿琛�
-    result.BusinessType( mappingProduct.BusinessType() );
-    result.OrganCode( mappingProduct.OrgCode() );
-    result.UnitOfMeasure( mappingProduct.UnitOfMeasureName() );
+    if( isnull( mappingProduct ) ) {
+      result.BusinessType( "鏆傛棤" );
+      result.OrganCode( "鏆傛棤" );
+      result.UnitOfMeasure( "鏆傛棤" );
+    } else {
+      result.BusinessType( mappingProduct.BusinessType() );
+      result.OrganCode( mappingProduct.OrgCode() );
+      result.UnitOfMeasure( mappingProduct.UnitOfMeasureName() );
+    }
     
     // 鏍规嵁渚涘簲鍟嗚兘鍔涗腑闂磋〃
     result.ProviderCode( mappingProviderCapacity );
     result.ProductName( mappingProviderCapacity );
+    result.LeadTime( 0.0 );
     
     // 鏍规嵁erp鎺ュ彛 鍥哄畾鍊�
     result.RequisitionType( "PURCHASE" );
@@ -68,7 +90,7 @@
     // 鍙戦�佷俊鎭�
     result.SendStatus( "" );
     result.SendBy( "" );
-    result.SendTIme( DateTime::MinDateTime() );
+    result.SendTime( DateTime::MinDateTime() );
     
     return result;
   *]
diff --git a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
index 356fd18..f011f1d 100644
--- a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
+++ b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
@@ -1,6 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod FromSupplyPlanning (
+  GlobalOTDTable otdTable,
   MacroPlan macroPlan,
   MacroPlan mappingRoot,
   String mrpCalverNo
@@ -19,8 +20,8 @@
                              item.MRPCalverNo() = mrpCalverNo );
     if( isnull( oldRecords ) or oldRecords.Size() = 0 ) {
       pispips := ProductInStockingPointInPeriod::GetByMRPCalverNo( macroPlan, mrpCalverNo );
-      traverse( pispips, Elements, item ) {
-        PRData::FromSupplyPlanning( macroPlan, mappingRoot, item );
+      traverse( pispips, Elements, item, item.NewSupplyQuantity() > 0 ) {
+        PRData::FromSupplyPlanning( otdTable, macroPlan, mappingRoot, item );
       }
     }
   *]
diff --git a/_Main/BL/Type_PRData/StaticMethod_TestData.qbl b/_Main/BL/Type_PRData/StaticMethod_TestData.qbl
index c70fa0d..0cbffa7 100644
--- a/_Main/BL/Type_PRData/StaticMethod_TestData.qbl
+++ b/_Main/BL/Type_PRData/StaticMethod_TestData.qbl
@@ -21,7 +21,7 @@
                                                                   Number::Random( 9, 12 ),
                                                                   Number::Random( 13, 28 ) ),
                           DataID := [String]Number::Random( 1, Number::MaxNumber() ), 
-                          SendStatus := ifexpr( Number::Random( 1, 5 ) = 1, "T", "" ) );     
+                          SendStatus := ifexpr( Number::Random( 1, 5 ) = 1, "宸插彂閫�", "" ) );     
       }
     }
   *]
diff --git "a/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl" "b/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl"
index 606d8a6..56336a7 100644
--- "a/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl"
+++ "b/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl"
@@ -3,6 +3,6 @@
 Attribute ProduceRequiredDate
 {
   #keys: '3[414384.0.795671764][414384.0.795671763][414384.0.795671765]'
-  Description: '闇�姹傛棩鏈�'
+  Description: '闇�姹傛棩鏈�/浜よ揣鏃ユ湡'
   ValueType: Date
 }
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTimeString.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTimeString.qbl
new file mode 100644
index 0000000..173a3be
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTimeString.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReceiveTimeString
+{
+  #keys: '3[414384.0.847354678][414384.0.847354677][414384.0.847354679]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_SendTimeString.qbl b/_Main/BL/Type_PRHistoryData/Attribute_SendTimeString.qbl
new file mode 100644
index 0000000..c6bdcae
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_SendTimeString.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendTimeString
+{
+  #keys: '3[414384.0.847354672][414384.0.847354671][414384.0.847354673]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Function_CalcReceiveTimeString.qbl b/_Main/BL/Type_PRHistoryData/Function_CalcReceiveTimeString.qbl
new file mode 100644
index 0000000..ede28e5
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Function_CalcReceiveTimeString.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcReceiveTimeString
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    
+    cnv := DateTimeToString::StandardConverter();
+    cnv.SetCustomConversion();
+    cnv.CustomFormatString( "yyyy/MM/dd H:mm:ss" );
+    
+    value := guard( cnv.Convert( this.ReceiveTime() ), "" );
+                    
+    this.ReceiveTimeString( value );
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/Function_CalcSendTimeString.qbl b/_Main/BL/Type_PRHistoryData/Function_CalcSendTimeString.qbl
new file mode 100644
index 0000000..803f885
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Function_CalcSendTimeString.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcSendTimeString
+{
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    
+    cnv := DateTimeToString::StandardConverter();
+    cnv.SetCustomConversion();
+    cnv.CustomFormatString( "yyyy/MM/dd H:mm:ss" );
+    
+    value := guard( cnv.Convert( this.SendTime() ), "" );
+                    
+    this.SendTimeString( value );
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl b/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl
new file mode 100644
index 0000000..736d231
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method PrintCall (
+  String callBy
+) as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    result := this.GlobalOTDTable().PRHistoryData( relcopy, this );
+    
+    // 鏇存柊閮ㄥ垎
+    result.PRDataReleaseDate( Date::Today() );
+    result.ReleaseBy( callBy );
+    result.SendTime( DateTime::Now() );
+    
+    // 璇锋眰
+    request := ERPRequestOfPR::Create( result );
+    callString := request.GetCallJSONString();
+    request.Delete();
+    return callString;
+  *]
+}
diff --git "a/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream\04345.qbl" "b/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream\04345.qbl"
new file mode 100644
index 0000000..a04fd41
--- /dev/null
+++ "b/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream\04345.qbl"
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExportTheFileStream (
+  GlobalOTDTable parent
+) as BinaryValue
+{
+  TextBody:
+  [*
+    // yypsybs Sep-20-2023 (created)
+    return PRHistoryData::ExportTheFileStream( selectset( parent, PRHistoryData, item, true ) );
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl b/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl
new file mode 100644
index 0000000..c0a44ae
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl
@@ -0,0 +1,72 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExportTheFileStream (
+  PRHistoryDatas toExportList
+) as BinaryValue
+{
+  TextBody:
+  [*
+    // generate by generate_export.py
+    dateTimeToString := DateTimeToString::StandardConverter();
+    dateTimeToString.SetCustomConversion();
+    dateTimeToString.CustomFormatString( "yyyy/MM/dd H:mm:ss" );
+    
+    dateToString := DateToString::StandardConverter();
+    dateToString.SetCustomConversion();
+    dateToString.CustomFormatString( "yyyy/MM/dd" );
+    
+    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>PR</name>
+    <column><name>闆朵欢鍙�</name><type>String</type></column>
+    <column><name>闆朵欢鍚嶇О</name><type>String</type></column>
+    <column><name>浜よ揣鏃ユ湡</name><type>String</type></column>
+    <column><name>闇�姹傛暟閲�</name><type>Number</type></column>
+    <column><name>MRP璁$畻鐗堟湰鍙�</name><type>String</type></column>
+    <column><name>浜嬩笟閮�</name><type>String</type></column>
+    <column><name>缁勭粐缂栫爜</name><type>String</type></column>
+    <column><name>渚涘簲鍟嗕唬鐮�</name><type>String</type></column>
+    <column><name>渚涘簲鍟嗗悕绉�</name><type>String</type></column>
+    <column><name>鏀惰揣搴撳瓨鐐�</name><type>String</type></column>
+    <column><name>璁¢噺鍗曚綅</name><type>String</type></column>
+    <column><name>PR鏁版嵁鍙戦�佺姸鎬�</name><type>String</type></column>
+    <column><name>鍙戦�佹椂闂�</name><type>String</type></column>
+    <column><name>鍙戦�佷汉</name><type>String</type></column>
+    <column><name>ERP鎺ユ敹鏃堕棿</name><type>String</type></column>
+    <column><name>ERP鎺ユ敹鐘舵��</name><type>String</type></column>
+    <column><name>閿欒淇℃伅鎻忚堪</name><type>String</type></column>
+    </table>';
+    xmlDOMImplementation := XMLDOMImplementation::Create();
+    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
+    
+    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
+    
+    traverse ( toExportList, Elements, toExport ) {
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "闆朵欢鍙�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "闆朵欢鍚嶇О" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "浜よ揣鏃ユ湡" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "闇�姹傛暟閲�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP璁$畻鐗堟湰鍙�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "浜嬩笟閮�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "缁勭粐缂栫爜" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "渚涘簲鍟嗕唬鐮�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "渚涘簲鍟嗗悕绉�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "鏀惰揣搴撳瓨鐐�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "璁¢噺鍗曚綅" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR鏁版嵁鍙戦�佺姸鎬�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "鍙戦�佹椂闂�" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReleaseBy(), "鍙戦�佷汉" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveTimeString(), "ERP鎺ユ敹鏃堕棿" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveStatus(), "ERP鎺ユ敹鐘舵��" );
+      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveError(), "閿欒淇℃伅鎻忚堪" );
+    }
+    
+    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
+    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
+    
+    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
+    tableGroupHandle := TableGroupHandle::Create( "PR" );
+    tableGroupHandle.Add( tableHandle );
+    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    
+    return tableBinaryData.AsBinaryValue();
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl b/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl
index d1dcf3b..fec169c 100644
--- a/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl
+++ b/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl
@@ -13,7 +13,7 @@
     
     jsonBuilder := JSON::Object();
     
-    jsonBuilder.Add( "releaseDate", Date::ActualDate().Format( "Y-M2-D2" ) );
+    jsonBuilder.Add( "releaseDate", DateTime::ActualTime().Format( "Y-M2-D2 H2:m:s" ) );
     jsonBuilder.Add( "businessType", businessType );
     jsonBuilder.Add( "scenarioName", scenario.Name() );
     
@@ -32,6 +32,40 @@
     
     json := jsonBuilder.Build();
     
-    info( json.AsPrettyString() );
+    //url := "/panelMaterial/send";
+     
+    // for HTTPS requests:
+    //i := HTTPInterface::Create( address, 8080 );
+    //i.URL( url );
+    i := HTTPInterface::Create( address, 8080 );
+    i.MediaType( "application/json" );
+    i.URL( "/panelMaterial/send" ); 
+    i.PostMethod( true ); //it's not a POST method
+    //postrequestbody := '{
+    //    "releaseDate": "2023-09-15 17:47:29",
+    //    "businessType": "杞﹁浇",
+    //    "scenarioName": "1.0 Base",
+    //    "panelMaterials": [
+    //        {
+    //            "productID": "Body side left - E series",
+    //            "productDescription": "娴嬭瘯A",
+    //            "startDate": "2023-09-13",
+    //            "quantity": 100.0
+    //        },
+    //        {
+    //            "productID": "Body side left - E series",
+    //            "productDescription": "娴嬭瘯B",
+    //            "startDate": "2023-09-22",
+    //            "quantity": 200.0
+    //        }
+    //    ]
+    //}';
+    postrequestbody := json.AsString();
+    
+    i.Call( postrequestbody ); // Call's argument is for POST method's content.
+    htmlresult := i.Result();
+    
+    info( "-----------------------鍙戦�佹柟--------------------------------" );
+    info( htmlresult.AsQUILL() );
   *]
 }
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialAutomotiveElectronics.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialAutomotiveElectronics.qbl
new file mode 100644
index 0000000..0fc4454
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialAutomotiveElectronics.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialAutomotiveElectronics (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialAutomotiveElectronics, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialIT.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialIT.qbl
new file mode 100644
index 0000000..48f5eed
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialIT.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialIT (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialIT, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSpecializedDisplay.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSpecializedDisplay.qbl
new file mode 100644
index 0000000..75607f3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSpecializedDisplay.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialSpecializedDisplay (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialSpecializedDisplay, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSportsHealth.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSportsHealth.qbl
new file mode 100644
index 0000000..f081fb6
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialSportsHealth.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialSportsHealth (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialSportsHealth, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM17.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM17.qbl
new file mode 100644
index 0000000..e4b7893
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM17.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialTM17 (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialTM17, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM18.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM18.qbl
new file mode 100644
index 0000000..52f3a01
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTM18.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialTM18 (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialTM18, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTianHua.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTianHua.qbl
new file mode 100644
index 0000000..9bd8092
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialTianHua.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialTianHua (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialTianHua, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialVehicle.qbl b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialVehicle.qbl
new file mode 100644
index 0000000..7881bb9
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/StaticMethod_SynchronizePanelMaterialVehicle.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizePanelMaterialVehicle (
+  MacroPlan macroPlan,
+  PanelMaterialAll pma
+)
+{
+  TextBody:
+  [*
+    traverse ( pma, PanelMaterialVehicle, pm ) {
+      targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = pm.ProductID() );
+      if ( isnull( targetProduct_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪浜у搧锛�", pm.ProductID() );
+      }
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = "鎴愬搧浠�" );
+      if ( isnull( targetStockingPoint_MP ) ) {
+        error( "铻嶅悎鏁版嵁澶辫触锛屼笉瀛樺湪搴撳瓨鐐癸細", pm.StockingPointID() );
+      }
+          
+      CustomerOrder::Create( targetProduct_MP,
+                             targetStockingPoint_MP,
+                             pm.ID(),
+                             pm.OrderDate(),
+                             [Real]pm.Quantity(),
+                             [Real]pm.Price(),
+                             pm.PriorityName(),
+                             pm.SalesSegmentName(),
+                             pm.CurrencyID(),
+                             pm.UnitOfMeasureName(),
+                             false,
+                             pm.Customer(),
+                             pm.CustomerID(),
+                             "",
+                             "",
+                             true,
+                             true,
+                             false
+                            );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl
index 2d21864..7e23ced 100644
--- a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl
index 195adab..2247ccb 100644
--- a/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl
index ddb0119..699665f 100644
--- a/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl
index 4ccf91b..21dd372 100644
--- a/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl
index 9f7f71a..e3cd600 100644
--- a/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl
index 9145c77..81c7bd9 100644
--- a/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl
index 042dc4a..a21141a 100644
--- a/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl b/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl
index d2d2fa2..95521ca 100644
--- a/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl
+++ b/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl
@@ -5,6 +5,6 @@
 {
   #keys: '5[414702.0.203671414][414702.0.203671412][0.0.0][414702.0.203671413][414702.0.203671415]'
   BaseType: Object
-  Description: '澶╄姳'
+  Description: '澶╁崕'
   StructuredName: 'PanelMaterialTianHuas'
 }
diff --git a/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl
index 3174738..6160180 100644
--- a/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl
+++ b/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl
@@ -25,7 +25,7 @@
     businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
     scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
     
-    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = businessTypeNameValue.GetValueAsString() );
     if ( not isnull( panelMaterialAll ) ) {
       panelMaterialAll.Delete();
     }
diff --git a/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl b/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl
index 10c1f0c..482800c 100644
--- a/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl
+++ b/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl
@@ -9,9 +9,17 @@
   TextBody:
   [*
     // yypsybs Sep-12-2023 (created)
-    result := selectset( parent, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip,
+    result := construct( ProductInStockingPointInPeriods );
+    if( mrpCalverNo <> "" ) {
+      result := selectset( parent, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip,
                          pispip.ProductInStockingPoint_MP().Product_MP().ID().StartsWith( "E" )
-                         and pispip.MRPCalverNo() = mrpCalverNo );
+                         and pispip.MRPCalverNo() = mrpCalverNo 
+                           );
+    } else {
+      result := selectset( parent, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip,
+                         true
+                           );
+    }
     return &result;
   *]
 }
diff --git a/_Main/BL/Type_Product_MP/Attribute_BusinessTypeCommon.qbl b/_Main/BL/Type_Product_MP/Attribute_BusinessTypeCommon.qbl
new file mode 100644
index 0000000..b384b1d
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/Attribute_BusinessTypeCommon.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessTypeCommon
+{
+  #keys: '3[414480.0.138606036][414480.0.138606035][414480.0.138606037]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Product_MP/Attribute_KeyProduct.qbl b/_Main/BL/Type_Product_MP/Attribute_KeyProduct.qbl
new file mode 100644
index 0000000..6261b43
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/Attribute_KeyProduct.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute KeyProduct
+{
+  #keys: '3[414480.0.138606008][414480.0.138606007][414480.0.138606009]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl
index 7d60ea3..2cc1d59 100644
--- a/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl
@@ -7,7 +7,9 @@
   String name,
   String unitofmeasurename,
   String description,
-  Real shelflife
+  Real shelflife,
+  Boolean keyproduct,
+  Boolean businesstypecommon
 )
 {
   TextBody:
@@ -28,7 +30,7 @@
     //info( productid );
     
     if( isnull( product ) ){
-      Product_MP::Create( owner, 
+      product := Product_MP::Create( owner, 
                           productid, 
                           parentid, 
                           name, 
@@ -44,6 +46,9 @@
                           isexcludedfromfulfilmentkpis, 
                           isfromdb
                           );
+                         
+        product.KeyProduct(keyproduct);
+        product.BusinessTypeCommon(businesstypecommon);
       }else{
         product.Update( productid, 
                         name, 
@@ -60,6 +65,8 @@
                         isexcludedfromfulfilmentkpis, 
                         isfromdb
                         );
+          product.KeyProduct(keyproduct);
+          product.BusinessTypeCommon(businesstypecommon);
         }
   *]
 }
diff --git "a/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByHalfYear\0431.qbl" "b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByHalfYear\0431.qbl"
new file mode 100644
index 0000000..d9e3137
--- /dev/null
+++ "b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByHalfYear\0431.qbl"
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetNewSupplyByHalfYear (
+  Strings productNo,
+  MacroPlan macroPlan,
+  Number yearNo,
+  Number halfNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    fromMonth := 1 + ( halfNo - 1 ) * 6;
+    toMonth := 6 + ( halfNo - 1 ) * 6;
+    result := 0.0;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      result := result + Product_MP::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByMonth.qbl b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByMonth.qbl
new file mode 100644
index 0000000..1f3fc6a
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByMonth.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetNewSupplyByMonth (
+  Strings productNo,
+  MacroPlan macroPlan,
+  Number yearNo,
+  Number monthNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( macroPlan, 
+                   Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, 
+                   item, 
+                   productNo.Find( item.ProductInStockingPoint_MP().Product_MP().ID() ) > -1 
+                   and item.Period_MP().StartDate().Year() = yearNo
+                   and item.Period_MP().StartDate().Month() = monthNo,
+                   item.NewSupplyQuantity() );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyBySeason.qbl b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyBySeason.qbl
new file mode 100644
index 0000000..e98eabe
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyBySeason.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetNewSupplyBySeason (
+  Strings productNo,
+  MacroPlan macroPlan,
+  Number yearNo,
+  Number seasonNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    fromMonth := 1 + ( seasonNo - 1 ) * 3;
+    toMonth := 3 + ( seasonNo - 1 ) * 3;
+    result := 0.0;
+    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
+      result := result + Product_MP::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByYear.qbl b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByYear.qbl
new file mode 100644
index 0000000..4759b98
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/StaticMethod_GetNewSupplyByYear.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetNewSupplyByYear (
+  Strings productNo,
+  MacroPlan macroPlan,
+  Number yearNo
+) as Real
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    result := sum( macroPlan, 
+                         Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, 
+                         item, 
+                         productNo.Find( item.ProductInStockingPoint_MP().Product_MP().ID() ) > -1 
+                         and item.Period_MP().StartDate().Year() = yearNo, 
+                         item.NewSupplyQuantity() );
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
new file mode 100644
index 0000000..69f306b
--- /dev/null
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
@@ -0,0 +1,258 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeChart (
+  MacroPlans macroPlans,
+  Boolean isCapacity,
+  String groupBy,
+  String byBusinessTypeOrByOrgCode,
+  String businessTypeChosen,
+  String placeOfProductionOfArrayChosen,
+  String year,
+  MPSync mpSync,
+  GlobalOTDTable otdTable,
+  MacroPlan mappingParent
+)
+{
+  Description: '鎸夊叆鍙傚鐞嗘暟鎹紝浜х敓闇�瑕佺殑CapacityAndSaleBudgeChartElement'
+  TextBody:
+  [*
+    // yypsybs Sep-19-2023 (created)
+    // true, false
+    info( isCapacity );
+    // 鏈�;瀛e害;鍗婂勾;骞�
+    info( groupBy );
+    // 闈㈡澘鍩哄湴;浜嬩笟閮�
+    info( byBusinessTypeOrByOrgCode );
+    info( businessTypeChosen );
+    info( placeOfProductionOfArrayChosen );
+    info( year );
+    
+    // ====娓呯悊鏃ф暟鎹�====
+    this.CapacityAndSaleBudgeChartRow( relflush );
+    this.CapacityAndSaleBudgeChartElement( relflush );
+    
+    // ====鎸夐潰鏉垮熀鍦板拰浜嬩笟閮ㄥ浜у搧杩涜绛涢�夊垎缁�====
+    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
+    if( placeOfProductionOfArrayChosen <> "" ) {
+      historyData := selectset( historyData, Elements, item, item.PlaceOfProductionOfArray() = placeOfProductionOfArrayChosen );
+    }
+    if( businessTypeChosen <> "" ) {
+      historyData := selectset( historyData, Elements, item, item.BusinessType() = businessTypeChosen );
+    }
+    //info( "historyData : " + [String]historyData.Size() );
+    traverse( historyData, Elements, item ) {
+      row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, item.BusinessType(), item.PlaceOfProductionOfArray() );
+      // 璁板綍姣忚鍖呭惈鍝簺product
+      CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, item.ProductCode() );
+    }
+    rows := selectset( this, CapacityAndSaleBudgeChartRow, item, true );
+    //info( "rows : " + [String]rows.Size() );
+    placeOfProductionOfArrayList := selectuniquevalues( historyData, Elements, item, item.PlaceOfProductionOfArray() );
+    businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
+    // 鐢熸垚鍥捐〃鍏冪礌
+    if( byBusinessTypeOrByOrgCode = "闈㈡澘鍩哄湴" and groupBy = "骞�" ) {
+      // 鐩爣
+      traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
+        productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
+        this.CapacityAndSaleBudgeChartElement( relnew, 
+                                               TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
+                                               BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                               Quantity := ifexpr( isCapacity,
+                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
+                                               );  
+        // S&OP
+        traverse( macroPlans, Elements, macroPlan ) {
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
+                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
+                                                                     0.0 )
+                                                 ); 
+        }                    
+      }
+    } 
+    if ( byBusinessTypeOrByOrgCode = "闈㈡澘鍩哄湴" and groupBy = "鍗婂勾" ) {
+      for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) {
+        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
+                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
+                                                 );  
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    if ( byBusinessTypeOrByOrgCode = "闈㈡澘鍩哄湴" and groupBy = "瀛e害" ) {
+      for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
+        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
+    //      info( "productCodeList : " + [String]productCodeList.Size() );
+    //      info( "MappingCapacityAndSaleBudge::GetSheetBySeason : " + [String]MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) );
+    //      info( "seasonNo : " + [String]seasonNo );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
+                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
+                                                 );  
+    //      info( "productCodeList : " + [String]productCodeList.Size() );
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    if ( byBusinessTypeOrByOrgCode = "闈㈡澘鍩哄湴" and groupBy = "鏈�" ) {
+      for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
+        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-鐩爣",
+                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
+                                                 );  
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    if( byBusinessTypeOrByOrgCode = "浜嬩笟閮�" and groupBy = "骞�" ) {
+      // 鐩爣
+      traverse( businessTypeList, Elements, businessType ) {
+        productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
+        this.CapacityAndSaleBudgeChartElement( relnew, 
+                                               TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
+                                               BusinessTypeOrOrgCode := businessType, 
+                                               Quantity := ifexpr( isCapacity,
+                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
+                                               );  
+        // S&OP
+        traverse( macroPlans, Elements, macroPlan ) {
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
+                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
+                                                                     0.0 )
+                                                 ); 
+        }                    
+      }
+    } 
+    if ( byBusinessTypeOrByOrgCode = "浜嬩笟閮�" and groupBy = "鍗婂勾" ) {
+      for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) {
+        traverse( businessTypeList, Elements, businessType ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
+                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
+                                                 );  
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    if ( byBusinessTypeOrByOrgCode = "浜嬩笟閮�" and groupBy = "瀛e害" ) {
+      for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
+        traverse( businessTypeList, Elements, businessType ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
+                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
+                                                 );  
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    if ( byBusinessTypeOrByOrgCode = "浜嬩笟閮�" and groupBy = "鏈�" ) {
+      for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
+        traverse( businessTypeList, Elements, businessType ) {
+          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
+          this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-鐩爣",
+                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 Quantity := ifexpr( isCapacity,
+                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
+                                                 );  
+          // S&OP
+          traverse( macroPlans, Elements, macroPlan ) {
+            this.CapacityAndSaleBudgeChartElement( relnew, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   Quantity := ifexpr( isCapacity,
+                                                                       Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
+                                                                       0.0 )
+                                                   ); 
+          }                    
+        }
+      }
+    }
+    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
+    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
+    //  info( "==鈫�==" );
+    //  info( row.BusinessType() );
+    //  info( row.PlaceOfProductionOfArray() );
+    //  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true );
+    //  info( elements.Size() );
+    //  info( row.GetProductCodes().Concatenate( " | " ) );
+    //  info( "==鈫�==" );
+    //}
+  *]
+}
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
index 1c3a3e5..6688d88 100644
--- a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -6,10 +6,11 @@
   CapacityAndSaleBudgeFilterYears years,
   CapacityAndSaleBudgeFilterMonths months,
   MPSync mpSync,
+  GlobalOTDTable otdTable,
   MacroPlan mappingParent
 )
 {
-  Description: 'todo : mappingParent鏀逛负mpSync'
+  Description: 'todo : mappingParent鏀逛负mpSync, random鍒犱簡'
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
@@ -36,56 +37,55 @@
     this.CapacityAndSaleBudgeCompareItemRow( relflush );
     this.CapacityAndSaleBudgeCompareItemColumn( relflush );
     // ====姹囨�绘墍鏈夊嚭鐜扮殑浜у搧====
-    productCodeList := construct( Strings );
     historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
+    info( "historyData : " + [String]historyData.Size() )
     traverse( historyData, Elements, one ) {
-      productCodeList.Add( one.ProductCode() );
-    }
-    traverse( macroPlans, Elements, macroPlan ) {
-      traverse( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip ) {
-        productCodeList.Add( pispip.ProductInStockingPoint_MP().Product_MP().ID() );
-      }
-    }
-    productCodeList := selectuniquevalues( productCodeList, Elements, item, item );
-    info( "product count : " + [String]productCodeList.Size() )
-    // ====鏍规嵁浜у搧鏌ヤ簨涓氶儴鍜岀粍缁囩紪鐮侊紝鐒跺悗鎸変簨涓氶儴鍜岀粍缁囩紪鐮佹眹鎬�====
-    traverse( productCodeList, Elements, productCode ) {
-      bom := MappingBOM::CreateTestData( mappingParent, [String](productCode.Length() mod 3), [String](productCode.Length() mod 4) );
-    //  bom := select( mappingParent, MappingBOM, bom, bom.ProductCode() = productCode );
-      if( not isnull( bom ) ) {
+      productCode := one.ProductCode();
+      MappingBOM::CreateTestData( mappingParent, "浜嬩笟閮�" + [String](productCode.Length() mod 3), [String](productCode.Length() mod 4), productCode );
+      boms := selectset( mappingParent, MappingBOM, bom, bom.ProductCode() = productCode );
+      if( boms.Size() > 0 ) {
+        bom := boms.First();
         businessType := bom.BusinessType();
-        orgCode := bom.OrganCode();
-        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, businessType, orgCode );
+        placeOfProductionOfArray := one.PlaceOfProductionOfArray();
+        // 鐩稿悓闈㈡澘鍩哄湴鍜屼簨涓氶儴鐨勬斁涓�琛�
+        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, businessType, placeOfProductionOfArray );
         // 璁板綍姣忚鍖呭惈鍝簺product
         CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
+      } else {
+    //    info( "111111" );
       }
     }
+    info( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
     // ====浠庡乏鍚戝彸鐢熸垚鍒楀ご涓庡唴瀹�====
     // 浜嬩笟閮紝缁勭粐
-    info( "dealing businessType and orgCode" )
+    info( "dealing businessType and placeOfProductionOfArray" )
     columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜嬩笟閮�" );
-    columnOrgCode := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "缁勭粐缂栫爜" );
+    columnPlaceOfProductionOfArray := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍩哄湴" );
     traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
       cell := columnBusinessType.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.BusinessType() );
       cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
-      cell := columnOrgCode.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.OrgCode() );
+      cell := columnPlaceOfProductionOfArray.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.PlaceOfProductionOfArray() );
       cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
     }
-    // 闈㈡澘鍒嗛厤閲� - 骞村害棰勭畻 
+    // 闈㈡澘鍒嗛厤閲� - 骞村害棰勭畻 (sheets)
     // 鏍煎紡锛� 闈㈡澘鍒嗛厤閲� - 骞� - 鏈堬紙1-12 & total锛� - 骞村害棰勭畻/scenarioName
     info( "dealing 闈㈡澘鍒嗛厤閲�" )
     if( CapacityAndSaleBudgeFilterItem::Contains( items, "闈㈡澘鍒嗛厤閲�" ) ) {
       // 鍘嗗彶鏁版嵁
       traverse( months, Elements, month ) {
-        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cellReal := MappingCapacityAndSaleBudge::GetSheetByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() );
+    //      cellReal := Real::Random( 1.0, 999.0 );
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
       }
-      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-total-骞村害棰勭畻" );
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-total-骞村害棰勭畻" );
       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cellReal := MappingCapacityAndSaleBudge::GetSheetByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() );
+    //    cellReal := Real::Random( 1.0, 999.0 );
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
         cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
       }
       // S&OP鏁版嵁
@@ -93,16 +93,20 @@
         traverse( macroPlans, Elements, macroPlan ) {
           traverse( months, Elements, month ) {
             columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
-                                                                                    "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+                                                                                    "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-" + macroPlan.ScenarioName() );
             traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cellReal := Product_MP::GetNewSupplyByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
+    //          cellReal := Real::Random( 1.0, 999.0 );
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
               cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
             }
           }
           columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
-                                                                                 "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+                                                                                 "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "骞�-total-" + macroPlan.ScenarioName() );
           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cellReal := Product_MP::GetNewSupplyByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
+    //        cellReal := Real::Random( 1.0, 999.0 );
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
             cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
           }
         }
@@ -113,30 +117,36 @@
     if( CapacityAndSaleBudgeFilterItem::Contains( items, "閿�鍞" ) ) {
       // 鍘嗗彶鏁版嵁
       traverse( months, Elements, month ) {
-        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cellReal := MappingCapacityAndSaleBudge::GetSaleByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() );
+    //      cellReal := Real::Random( 1.0, 999.0 );
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
       }
-      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-total-骞村害棰勭畻" );
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-total-骞村害棰勭畻" );
       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cellReal := MappingCapacityAndSaleBudge::GetSaleByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() );
+    //    cellReal := Real::Random( 1.0, 999.0 );
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
         cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
       }
       // S&OP鏁版嵁
       traverse( years, Elements, year ) {
         traverse( macroPlans, Elements, macroPlan ) {
           traverse( months, Elements, month ) {
-            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-" + macroPlan.ScenarioName() );
             traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cellReal := MappingForecast::GetBalanceByMonth( row.GetProductCodes(), mappingParent, year.YearNo(), month.MonthNo() );
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
               cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
             }
           }
-          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "骞�-total-" + macroPlan.ScenarioName() );
           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cellReal := MappingForecast::GetBalanceByYear( row.GetProductCodes(), mappingParent, year.YearNo() );
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
             cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
           }
         }
@@ -148,14 +158,15 @@
       // 鍘嗗彶鏁版嵁
       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-骞村害棰勭畻" );
       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        // todo
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
         cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
       }
       // S&OP鏁版嵁
       traverse( macroPlans, Elements, macroPlan ) {
-        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() );
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() + "骞�" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
       }
@@ -166,20 +177,34 @@
       // 鍘嗗彶鏁版嵁
       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-骞村害棰勭畻" );
       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        // todo
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
         cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
       }
       // S&OP鏁版嵁
       traverse( macroPlans, Elements, macroPlan ) {
-        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() );
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() + "骞�" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          // todo
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
       }
     }
     
-    
+    // 璁剧疆rowNo鍜宑olumnNo
+    info( "set rowNo and columnNo" );
+    rowNo := 1;
+    rowSorted := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, item, item.PlaceOfProductionOfArray() + "_" + item.BusinessType() );
+    traverse( rowSorted, Elements, item ) {
+      item.RowNo( rowNo );
+      rowNo := rowNo + 1;
+    }
+    columnNo := 1;
+    traverse( this, CapacityAndSaleBudgeCompareItemColumn, item ) {
+      item.ColumnNo( columnNo );
+      columnNo := columnNo + 1;
+    }
     info( "done" );
   *]
 }
diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
index 51fa4f0..20ed0bd 100644
--- a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
+++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -130,5 +130,32 @@
         }
       ]
     }
+    Component menuFile #extension
+    {
+      Children:
+      [
+        Component menuSeparator457 { #keys: '[414702.0.265704251]' BaseType: 'Menu' Properties: [ Separator: true ] }
+        Component ComponentMenu666 { #keys: '[414702.0.265704260]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'FormBrokerExecuteLog' Text: '' ] }
+      ]
+      Properties:
+      [
+        ModeledStringList ChildOrdering
+        {
+          c: ComponentMenu3
+          c: Menu9
+          c: menuBroadcastMessage
+          c: menuQuintiqChat
+          c: Menu10
+          c: menuChangePassword
+          c: Menu11
+          c: menuLoadReport
+          c: Menu13
+          c: MenuRestart
+          c: menuExit
+          c: menuSeparator457
+          c: ComponentMenu666
+        }
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ColumnTitles511.def b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ColumnTitles511.def
new file mode 100644
index 0000000..3369129
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ColumnTitles511.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ColumnTitles511
+{
+  #keys: '[414702.0.265704399]'
+  BaseType: 'ColumnTitles'
+  Children:
+  [
+    Component popupColumnTitles297
+    {
+      #keys: '[414702.0.265704402]'
+      BaseType: 'popupColumnTitles'
+    }
+  ]
+  Properties:
+  [
+    ContextMenu: 'popupColumnTitles297'
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ListGlobal_BrokerExecuteLog.def b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ListGlobal_BrokerExecuteLog.def
new file mode 100644
index 0000000..fcd767f
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Component_ListGlobal_BrokerExecuteLog.def
@@ -0,0 +1,117 @@
+Quintiq file version 2.0
+Component ListGlobal_BrokerExecuteLog
+{
+  #keys: '[414702.0.265704396]'
+  BaseType: 'List'
+  Children:
+  [
+    #child: ColumnTitles511
+    Component popupList445
+    {
+      #keys: '[414702.0.265704428]'
+      BaseType: 'popupList'
+      Children:
+      [
+        Component PopupParent
+        {
+          #keys: '[514.0.129466]'
+          BaseType: 'PopupParent'
+          IsDerived: true
+          Children:
+          [
+            Component menuSeparator { #keys: '[414702.0.265705233]' BaseType: 'Menu' Properties: [ Separator: true ] }
+            Component MenuDelete { #keys: '[414702.0.265705300]' BaseType: 'Menu' Properties: [ Image: 'DELETE' Text: 'Delete' ] }
+          ]
+          Properties:
+          [
+            ModeledStringList ChildOrdering
+            {
+              c: MenuActions
+              c: MenuFilter
+              c: menuListQuintiqSetQuantor
+              c: menuSeparator
+              c: MenuDelete
+            }
+          ]
+        }
+      ]
+      Properties:
+      [
+        PosX: 35
+        PosY: 60
+      ]
+    }
+    Component GUIDataExtractor430
+    {
+      #keys: '[414702.0.265704460]'
+      BaseType: 'GUIDataExtractor'
+      Properties:
+      [
+        DataSet: 'GlobalOTDTable'
+        DataType: 'GlobalOTDTable'
+        PosX: 5
+        PosY: 30
+        Transformation: 'Global_BrokerExecuteLog'
+      ]
+    }
+    Component GUIDataSetLevel295
+    {
+      #keys: '[414702.0.265704463]'
+      BaseType: 'GUIDataSetLevel'
+      Properties:
+      [
+        DataExtractor: 'GUIDataExtractor430'
+        PosX: 35
+        PosY: 30
+      ]
+    }
+  ]
+  Properties:
+  [
+    AutoDrag: true
+    BackgroundColor: 'Window'
+    Border: true
+    ContextMenu: 'popupList445'
+    FullRowSelect: true
+    ModeledStringList ChildOrdering
+    {
+      c: ColumnTitles511
+      c: popupList445
+      c: GUIDataExtractor430
+      c: GUIDataSetLevel295
+    }
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListGlobal_BrokerExecuteLog_Menu_OnClick
+    {
+      #keys: '[414702.0.265704469]'
+      Initiator: 'Menu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[589.0.8208609]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListGlobal_BrokerExecuteLog_GUIButtonBase_OnClick
+    {
+      #keys: '[414702.0.265704470]'
+      Initiator: 'GUIButtonBase'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[589.0.8208654]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Response_ListGlobal_BrokerExecuteLog_MenuDelete_OnClick.def b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Response_ListGlobal_BrokerExecuteLog_MenuDelete_OnClick.def
new file mode 100644
index 0000000..2925bcd
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/Response_ListGlobal_BrokerExecuteLog_MenuDelete_OnClick.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: ListGlobal_BrokerExecuteLog
+Response OnClick (
+  Global_BrokerExecuteLog selection
+) id:Response_ListGlobal_BrokerExecuteLog_MenuDelete_OnClick
+{
+  #keys: '[414702.0.265705336]'
+  Body:
+  [*
+    selection.Delete();
+  *]
+  DefinitionID => /ListGlobal_BrokerExecuteLog/Responsedef_ListGlobal_BrokerExecuteLog_Menu_OnClick
+  Initiator: 'MenuDelete'
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/_ROOT_Component_FormBrokerExecuteLog.def b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/_ROOT_Component_FormBrokerExecuteLog.def
new file mode 100644
index 0000000..006b818
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormBrokerExecuteLog/_ROOT_Component_FormBrokerExecuteLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlanner
+OrphanComponent FormBrokerExecuteLog
+{
+  #keys: '[414702.0.265704270]'
+  BaseType: 'Form'
+  GBLayout
+  {
+    Type: 'internal[GBLayoutDefinition]'
+    Columns:
+    [
+      GBFlow.Column { grow: 128 id: 581 parent: 0 }
+    ]
+    Elements:
+    [
+      GBElement
+      {
+        Component => ListGlobal_BrokerExecuteLog
+        Position { startcolumn: 581 startrow: 363 endcolumn: 581 endrow: 363 }
+      }
+    ]
+    Gaps: [ left: 0 right: 0 top: 0 bottom: 0 inner: 5 ]
+    Rows:
+    [
+      GBFlow.Row { grow: 128 id: 363 parent: 0 }
+    ]
+  }
+  Children:
+  [
+    #child: ListGlobal_BrokerExecuteLog
+  ]
+  Properties:
+  [
+    Height: 333
+    Image: 'BIRD'
+    IncludeInView: true
+    Title: 'Broker鎵ц鏃ュ織'
+    Width: 441
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Component_SplitterWndScenarioManager.def b/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Component_SplitterWndScenarioManager.def
index 3c15ce4..51ce736 100644
--- a/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Component_SplitterWndScenarioManager.def
+++ b/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Component_SplitterWndScenarioManager.def
@@ -5,9 +5,122 @@
   [
     Component SplitterPaneScenario #extension
     {
+      GBLayout
+      {
+        Type: 'internal[GBLayoutDefinition]'
+        Columns:
+        [
+          GBFlow.Column { grow: 0 id: 9 parent: 0 }
+          GBFlow.Column { grow: 0 id: 22 parent: 0 }
+          GBFlow.Column { grow: 0 id: 35 parent: 0 }
+          GBFlow.Column { grow: 0 id: 37 parent: 0 }
+          GBFlow.Column { grow: 0 id: 24 parent: 0 }
+          GBFlow.Column { grow: 0 id: 138 parent: 0 }
+          GBFlow.Column { grow: 0 id: 588 parent: 0 }
+          GBFlow.Column { grow: 0 id: 780 parent: 0 }
+          GBFlow.Column { grow: 0 id: 508 parent: 0 }
+          GBFlow.Column { grow: 128 id: 27 parent: 0 }
+        ]
+        Elements:
+        [
+          GBElement
+          {
+            Component => /SplitterWnd1
+            Position { startcolumn: 9 startrow: 2 endcolumn: 27 endrow: 2 }
+          }
+          GBElement
+          {
+            Component => ButtonRefreshKPIs
+            Position { startcolumn: 9 startrow: 5 endcolumn: 9 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => LabelImportExportStatusTitle
+            Position { startcolumn: 22 startrow: 5 endcolumn: 22 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => LabelLastDataExchangeDate
+            Position { startcolumn: 24 startrow: 5 endcolumn: 24 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => LabelLastDataExchangeAction
+            Position { startcolumn: 35 startrow: 5 endcolumn: 35 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => LabelActionOn
+            Position { startcolumn: 37 startrow: 5 endcolumn: 37 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => ButtonCreateScenariosFromDatasets
+            Position { startcolumn: 138 startrow: 5 endcolumn: 138 endrow: 5 }
+          }
+          GBElement
+          {
+            Component => ButtonRefreshScenarios
+            Position { startcolumn: 588 startrow: 5 endcolumn: 588 endrow: 5 }
+          }
+          GBElement
+          {
+            Component: 'Button897'
+            Position { startcolumn: 780 startrow: 5 endcolumn: 780 endrow: 5 }
+          }
+          GBElement
+          {
+            Component: 'Button482'
+            Position { startcolumn: 508 startrow: 5 endcolumn: 508 endrow: 5 }
+          }
+        ]
+        Gaps: [ left: 0 right: 0 top: 0 bottom: 0 inner: 5 ]
+        Rows:
+        [
+          GBFlow.Row { grow: 0 id: 5 parent: 0 }
+          GBFlow.Row { grow: 128 id: 2 parent: 0 }
+        ]
+      }
       Children:
       [
         #child: SplitterWnd1
+        Component Button897
+        {
+          #keys: '[414702.0.239704572]'
+          BaseType: 'Button'
+          Properties:
+          [
+            Image: 'BIRD'
+            LayoutGroup: 'Button0'
+            Text: '鎵ц鍏ㄥ眬浠g悊'
+          ]
+        }
+        Component Button482
+        {
+          #keys: '[414702.0.239704587]'
+          BaseType: 'Button'
+          Properties:
+          [
+            LayoutGroup: 'Button0'
+            Text: 'Button'
+          ]
+        }
+      ]
+      Properties:
+      [
+        ModeledStringList ChildOrdering
+        {
+          c: ButtonRefreshKPIs
+          c: LabelImportExportStatusTitle
+          c: ButtonCreateScenariosFromDatasets
+          c: LabelLastDataExchangeAction
+          c: SplitterWnd1
+          c: LabelLastDataExchangeDate
+          c: LabelActionOn
+          c: ButtonRefreshScenarios
+          c: Button897
+          c: Button482
+        }
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Response_TIANMA_JITUAN_SplitterWndScenarioManager_Button897_OnClick.def b/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Response_TIANMA_JITUAN_SplitterWndScenarioManager_Button897_OnClick.def
new file mode 100644
index 0000000..d600887
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_ScenarioManager_FormScenario/Response_TIANMA_JITUAN_SplitterWndScenarioManager_Button897_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: SplitterWndScenarioManager/Button897
+Response OnClick () id:Response_TIANMA_JITUAN_SplitterWndScenarioManager_Button897_OnClick
+{
+  #keys: '[414702.0.239704677]'
+  Body:
+  [*
+    GlobalOTDTable::SynchronizationAllMappingBrokerAndAPI( MacroPlan, GlobalOTDTable );
+  *]
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlActions.def
new file mode 100644
index 0000000..9245061
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414702.0.223820969]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414702.0.223820973]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414702.0.223820975]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlContent.def
new file mode 100644
index 0000000..3a0d33a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Component_pnlContent.def
@@ -0,0 +1,100 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414702.0.223820967]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efProductModel
+    {
+      #keys: '[414702.0.226423878]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.ProductModel'
+        Enabled: false
+        Label: '浜у搧鍨嬪彿'
+        Taborder: 0
+      ]
+    }
+    Component efMaterialDescription
+    {
+      #keys: '[414702.0.226423897]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.MaterialDescription'
+        Enabled: false
+        Label: '鐗╂枡鎻忚堪'
+        Taborder: 1
+      ]
+    }
+    Component dsStart
+    {
+      #keys: '[414702.0.226423917]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.StartDate'
+        Enabled: false
+        Label: '寮�濮�'
+        Taborder: 2
+      ]
+    }
+    Component dsEnd
+    {
+      #keys: '[414702.0.226423929]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.EndDate'
+        Enabled: false
+        Label: '缁撴潫'
+        Taborder: 3
+      ]
+    }
+    Component efPlannedQuantity
+    {
+      #keys: '[414702.0.226690631]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.PlannedQuantity'
+        Label: '璁″垝鏁伴噺'
+        Taborder: 4
+      ]
+    }
+    Component ddlWorkOrderType
+    {
+      #keys: '[414702.0.226592544]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'WorkOrderType'
+      Children:
+      [
+        Component deContent
+        {
+          #keys: '[414702.0.226592546]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'GlobalOTDTable'
+            Source: 'GlobalOTDTable'
+            Taborder: 0
+            Transformation: 'WorkOrderType'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'TypeName'
+        Label: '宸ュ崟绫诲瀷'
+        Taborder: 5
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Method_Edit.def
new file mode 100644
index 0000000..1bf672d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Method_Edit.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  structured[MasterPlanReleaseWorkOrderTabulation] selection
+) id:Method_DialogCreateEditIssueWorkOrder_Edit
+{
+  #keys: '[414702.0.224998029]'
+  Body:
+  [*
+    if ( selection.Size() = 1 ) {
+      data := shadow( selection.Element( 0 ) );
+    
+      DataHolderDialogData.Data( &data );
+    } else {
+      DataHolderDialogDatas.Data( selection.Copy() );
+      efProductModel.Enabled( false, "" );
+      efMaterialDescription.Enabled( false, "" );
+      dsStart.Enabled( false, "" );
+      dsEnd.Enabled( false, "" );
+      efPlannedQuantity.Enabled( false, "" );
+    }
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..cbc46b4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+  #keys: '[414702.0.223820979]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..4e08b41
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414702.0.223820978]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      
+      masterPlanReleaseWorkOrderTabulation := guard( DataHolderDialogData.Data().WrappedInstance(), null( MasterPlanReleaseWorkOrderTabulation ) );
+      
+      //info( "鏄惁涓虹┖锛�", isnull( masterPlanReleaseWorkOrderTabulation ), "    Datas涓暟锛�", guard( DataHolderDialogDatas.Data().Size(), 0 ) );
+      if ( not isnull( DataHolderDialogDatas.Data() ) and DataHolderDialogDatas.Data().Size() > 1 ) {
+        traverse ( DataHolderDialogDatas.Data(), Elements, mprwot ) {
+          mprwot.WorkOrderType( ddlWorkOrderType.Data().TypeName() );
+        }
+      } else if ( not isnull( masterPlanReleaseWorkOrderTabulation ) ) {
+        masterPlanReleaseWorkOrderTabulation.PlannedQuantity( [Real]efPlannedQuantity.Text() );
+        masterPlanReleaseWorkOrderTabulation.WorkOrderType( ddlWorkOrderType.Data().TypeName() );
+      }
+      
+      Form.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlContent_ddlWorkOrderType_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlContent_ddlWorkOrderType_OnCreated.def
new file mode 100644
index 0000000..6e33df9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlContent_ddlWorkOrderType_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: pnlContent/ddlWorkOrderType
+Response OnCreated () id:Response_pnlContent_ddlWorkOrderType_OnCreated
+{
+  #keys: '[414702.0.228678429]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      if ( not isnull( DataHolderDialogData.Data() ) ) {
+        targetWorkOrderType := select( GlobalOTDTable, WorkOrderType, tempWOT, tempWOT.TypeName() = DataHolderDialogData.Data().WorkOrderType() );
+        if ( not isnull( targetWorkOrderType ) ) {
+          this.Data( targetWorkOrderType );
+        } else {
+          this.Data( select( GlobalOTDTable, WorkOrderType, tempWOT, true ) );
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/_ROOT_Component_DialogCreateEditIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/_ROOT_Component_DialogCreateEditIssueWorkOrder.def
new file mode 100644
index 0000000..d9cc8f2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/_ROOT_Component_DialogCreateEditIssueWorkOrder.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogCreateEditIssueWorkOrder
+{
+  #keys: '[414702.0.223820965]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderDialogData
+    {
+      #keys: '[414702.0.226291622]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[MasterPlanReleaseWorkOrderTabulation]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component DataHolderDialogDatas
+    {
+      #keys: '[414702.0.228162499]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[MasterPlanReleaseWorkOrderTabulation]*'
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Image: 'DOCUMENT_EDIT'
+    Padding: 'false'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def
index 5a8abdf..1ae7777 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def
@@ -10,7 +10,7 @@
     data := shadow( selection );
     
     DataHolderDialogData.Data( &data );
-    info( "hello world" );
+    
     ApplicationMacroPlanner.ShowFormModal( this );
   *]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def
index e8f83be..1195f5f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def
@@ -14,7 +14,7 @@
     Body:
     [*
       ids := selectvalues( MacroPlan, Product_MP, tempPMP, tempPMP.IsPanelMaterial(), tempPMP.ID() );
-      info( ids.Concatenate( ";" ) );
+      //info( ids.Concatenate( ";" ) );
       this.Strings( ids.Concatenate( ";" ) );
     *]
     GroupServerCalls: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_CopyScenario.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_CopyScenario.def
new file mode 100644
index 0000000..c0a6fa5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_CopyScenario.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+Method CopyScenario (
+  ScenarioMP source
+) id:Method_DialogCreateEditScenario_CopyScenario #extension
+{
+  Body:
+  [*
+    // Copy scenario
+    scenario := ScenarioManager.ScenarioNode( relshadow,
+                                              ScenarioMP,
+                                              Parent := source,
+                                              Name := ScenarioManager.GetUniqueScenarioName( source.Name() ),
+                                              SelectedStrategy := source.SelectedStrategy(),
+                                              State := source.State() );
+    
+    DataHolderActionCopy.Data( true );
+    DataHolderDialogData.Data( &scenario );
+    
+    // do not distribute
+    DataHolderDialogData.Data().EnableSync( false );
+    checkboxEnableSync.Visible( false );
+    dropDownStringListGeneral.Visible( false );
+    checkboxIsKeyProduct.Visible( false );
+    checkboxCreatePurchaseSupplyProduct.Visible( false );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlActions.def
new file mode 100644
index 0000000..f8445bd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414702.0.213381912]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414702.0.213381916]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414702.0.213381918]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlContent.def
new file mode 100644
index 0000000..2262cc3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlContent.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414702.0.213381910]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pnlReceiveDatas
+    #child: pnlSelectVersion
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlReceiveDatas.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlReceiveDatas.def
new file mode 100644
index 0000000..450154d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlReceiveDatas.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component pnlReceiveDatas
+{
+  #keys: '[414702.0.213382696]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lblTianHua
+    {
+      #keys: '[414702.0.212183780]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '澶╁崕锛�'
+        Taborder: 0
+      ]
+    }
+    Component lblSpecializedDisplay
+    {
+      #keys: '[414702.0.212183799]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '涓撴樉锛�'
+        Taborder: 1
+      ]
+    }
+    Component lblIT
+    {
+      #keys: '[414702.0.212183811]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'IT锛�'
+        Taborder: 2
+      ]
+    }
+    Component lblMaterialVehicle
+    {
+      #keys: '[414702.0.212183824]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '杞﹁浇锛�'
+        Taborder: 3
+      ]
+    }
+    Component lblTM17
+    {
+      #keys: '[414702.0.212183836]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'TM17锛�'
+        Taborder: 4
+      ]
+    }
+    Component lblTM18
+    {
+      #keys: '[414702.0.212183849]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'TM18锛�'
+        Taborder: 5
+      ]
+    }
+    Component lblSportsHealth
+    {
+      #keys: '[414702.0.212183868]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '杩愬姩鍋ュ悍锛�'
+        Taborder: 6
+      ]
+    }
+    Component lblAutomotiveElectronics
+    {
+      #keys: '[414702.0.212172592]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '姹借溅鐢靛瓙锛�'
+        Taborder: 7
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    MinimumColumns: 1
+    MinimumRows: 1
+    Taborder: 0
+    Title: '鏈�鍚庢帴鏀舵椂闂�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlSelectVersion.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlSelectVersion.def
new file mode 100644
index 0000000..54c1ea0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Component_pnlSelectVersion.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component pnlSelectVersion
+{
+  #keys: '[414702.0.215071882]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddlSelectVersion
+    {
+      #keys: '[414702.0.215071927]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'ScenarioMP'
+      Children:
+      [
+        Component deSelectVersion
+        {
+          #keys: '[414702.0.215071929]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'ScenarioManager'
+            FixedFilter: 'object.IsLoaded() and not object.IsDeleted()'
+            Source: 'ScenarioManager'
+            Taborder: 0
+            Transformation: 'ScenarioMP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'Name'
+        Label: '閫夋嫨鐗堟湰'
+        NumberOfColumns: 50
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    MinimumColumns: 1
+    MinimumRows: 1
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Method_FusionData.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Method_FusionData.def
new file mode 100644
index 0000000..2c9a949
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Method_FusionData.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method FusionData () id:Method_DialogFusionData_FusionData
+{
+  #keys: '[414702.0.213324055]'
+  Body:
+  [*
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..389a5c1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+  #keys: '[414702.0.213381922]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..9a51849
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414702.0.213381921]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      try {
+        macroPlan := ExternalMDSEditor::MacroPlan( ddlSelectVersion.Data().DatasetName() ).AsMacroPlan();
+        GlobalOTDTable.SynchronizeOrders( macroPlan );
+      
+        Form.Close();
+      
+        WebMessageBox::Success( "铻嶅悎鏁版嵁鎴愬姛锛�", true );
+      } onerror {
+        Form.Close();
+        WebMessageBox::Error( e.GeneralInformation(), true );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblAutomotiveElectronics_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblAutomotiveElectronics_OnCreated.def
new file mode 100644
index 0000000..94fd670
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblAutomotiveElectronics_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblAutomotiveElectronics
+Response OnCreated () id:Response_pnlReceiveDatas_lblAutomotiveElectronics_OnCreated
+{
+  #keys: '[414702.0.215042189]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "姹借溅鐢靛瓙" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblIT_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblIT_OnCreated.def
new file mode 100644
index 0000000..1633488
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblIT_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblIT
+Response OnCreated () id:Response_pnlReceiveDatas_lblIT_OnCreated
+{
+  #keys: '[414702.0.215041419]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "IT" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblMaterialVehicle_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblMaterialVehicle_OnCreated.def
new file mode 100644
index 0000000..74d3b84
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblMaterialVehicle_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblMaterialVehicle
+Response OnCreated () id:Response_pnlReceiveDatas_lblMaterialVehicle_OnCreated
+{
+  #keys: '[414702.0.215041505]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杞﹁浇" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSpecializedDisplay_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSpecializedDisplay_OnCreated.def
new file mode 100644
index 0000000..a40ec23
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSpecializedDisplay_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblSpecializedDisplay
+Response OnCreated () id:Response_pnlReceiveDatas_lblSpecializedDisplay_OnCreated
+{
+  #keys: '[414702.0.215041332]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "涓撴樉" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSportsHealth_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSportsHealth_OnCreated.def
new file mode 100644
index 0000000..9a0ebc8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblSportsHealth_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblSportsHealth
+Response OnCreated () id:Response_pnlReceiveDatas_lblSportsHealth_OnCreated
+{
+  #keys: '[414702.0.215042103]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杩愬姩鍋ュ悍" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM17_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM17_OnCreated.def
new file mode 100644
index 0000000..f75df01
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM17_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblTM17
+Response OnCreated () id:Response_pnlReceiveDatas_lblTM17_OnCreated
+{
+  #keys: '[414702.0.215041591]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM17" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM18_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM18_OnCreated.def
new file mode 100644
index 0000000..ac39931
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTM18_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblTM18
+Response OnCreated () id:Response_pnlReceiveDatas_lblTM18_OnCreated
+{
+  #keys: '[414702.0.215041677]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM18" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTianHua_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTianHua_OnCreated.def
new file mode 100644
index 0000000..795f493
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/Response_pnlReceiveDatas_lblTianHua_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlReceiveDatas/lblTianHua
+Response OnCreated () id:Response_pnlReceiveDatas_lblTianHua_OnCreated
+{
+  #keys: '[414702.0.213744488]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "澶╁崕" );
+      this.Text( guard( targetPanelMaterialAll.ReleaseDate(), "鏃犳暟鎹�" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/_ROOT_Component_DialogFusionData.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/_ROOT_Component_DialogFusionData.def
new file mode 100644
index 0000000..065348b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFusionData/_ROOT_Component_DialogFusionData.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogFusionData
+{
+  #keys: '[414702.0.213381908]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Image: 'CD_GOLD'
+    Padding: 'false'
+    Title: '铻嶅悎鏁版嵁'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def
new file mode 100644
index 0000000..66db189
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component List174
+{
+  #keys: '[414724.0.53086425]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor936
+    {
+      #keys: '[414724.0.53086426]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_OrderRecord]'
+        Source: 'DataHolder248'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage349
+    Component DataSetLevel386
+    {
+      #keys: '[414724.0.53086431]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu108
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDateTime","title":"OrderDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderQty","title":"OrderQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastHitQty","title":"ForecastHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastNoHitQty","title":"ForecastNoHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastNoHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"Unit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerCode","title":"CustomerCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerCode"}}]'
+        ContextMenu: 'listContextMenu108'
+        SortCriteria: 'OperateTime'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def
new file mode 100644
index 0000000..78634a1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+Component Panel570
+{
+  #keys: '[414724.0.53023821]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FORE
+    {
+      #keys: '[414724.0.53023837]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FORE
+    {
+      #keys: '[414724.0.53023852]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        MaxRows: 0
+        NumberOfColumns: 20
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FORE
+    {
+      #keys: '[414724.0.53023864]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鎼滅储'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def
new file mode 100644
index 0000000..fe73275
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel650
+{
+  #keys: '[414724.0.52964252]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label300
+    {
+      #keys: '[414724.0.52964268]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def
new file mode 100644
index 0000000..3d07bba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage349
+{
+  #keys: '[414724.0.53086428]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def
new file mode 100644
index 0000000..b83f144
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu108
+{
+  #keys: '[414724.0.53086433]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def
new file mode 100644
index 0000000..745284f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderResultEx_OnCreated
+{
+  #keys: '[414724.0.101910615]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      ds_Month_FORE.Date(Date::ActualDate());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def
new file mode 100644
index 0000000..b6cdf5d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: Panel570/btn_Query_FORE
+Response OnClick () id:Response_Panel570_btn_Query_FORE_OnClick
+{
+  #keys: '[414724.0.100771014]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractor338.FixedFilter( "( object.ID().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )"  
+                                                   + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.OrderDateTime() < " + ds_Month_FORE.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.OrderDateTime() >= " + ds_Month_FORE.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
new file mode 100644
index 0000000..53c000e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderResultEx
+{
+  #keys: '[414724.0.51403684]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel650
+    #child: Panel570
+    #child: List174
+    Component DataHolder248
+    {
+      #keys: '[414724.0.51434769]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_OrderRecord]*'
+      Children:
+      [
+        Component DataExtractor338
+        {
+          #keys: '[414724.0.52813717]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            FixedFilter: 'object.OperateType()<>"鍙嶇"'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_OrderRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+    Title: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def"
index dc4c04e..532ab58 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def"
@@ -27,7 +27,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProduceRequiredDate","title":"ProduceRequiredDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProduceRequiredDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendBy","title":"SendBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendTIme","title":"SendTIme","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendTIme"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductName","title":"ProductName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsPannelMaterial","title":"IsPannelMaterial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsPannelMaterial"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProduceRequiredDate","title":"ProduceRequiredDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProduceRequiredDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PRSuggestionDate","title":"PRSuggestionDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PRSuggestionDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLongLeadItem","title":"IsLongLeadItem","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLongLeadItem"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsGenericMaterial","title":"IsGenericMaterial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsGenericMaterial"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialMRPType","title":"MaterialMRPType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialMRPType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LeadTime","title":"LeadTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LeadTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProviderCode","title":"ProviderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProviderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProviderName","title":"ProviderName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProviderName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure","title":"UnitOfMeasure","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasure"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendTimeString","title":"SendTimeString","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SendTimeString"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendBy","title":"SendBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendBy"}}]'
         ContextMenu: 'listContextMenuPRData'
         SortCriteria: 'BusinessType;MRPCalverNo'
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
index 29e3432..e0f9eb6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
@@ -13,6 +13,28 @@
       [
         Image: 'ARROW_RIGHT'
         Label: 'Send checked PRs'
+        Taborder: 1
+      ]
+    }
+    Component ButtonExportPR
+    {
+      #keys: '[414384.0.859041699]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'EXPORT1'
+        Label: '鏁版嵁瀵煎嚭'
+        Taborder: 2
+      ]
+    }
+    Component ButtonLoad
+    {
+      #keys: '[414384.0.859141085]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'THICK_ARROW_DOWN_BLUE'
+        Label: '閲嶆柊鍔犺浇'
         Taborder: 0
       ]
     }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def"
index 204fe6d..b2ba89c 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def"
@@ -16,6 +16,17 @@
         Title: 'Send selected PRs'
       ]
     }
+    Component MenuPrintRequest
+    {
+      #keys: '[414384.0.859180964]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'MEDIA_PLAY_GREEN'
+        Taborder: 4
+        Title: 'Print request'
+      ]
+    }
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def"
new file mode 100644
index 0000000..6e0a043
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def"
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListPRData_844
+Response OnClick (
+  PRData selection
+) id:Response_ListPRData_844_MenuPrintRequest_OnClick
+{
+  #keys: '[414384.0.859160768]'
+  CanBindMultiple: false
+  DefinitionID => /ListPRData_844/Responsedef_ListPRData_844_WebMenu_OnClick
+  Initiator: 'MenuPrintRequest'
+  QuillAction
+  {
+    Body:
+    [*
+      info( selection.PrintCall( GlobalOTDTable, ApplicationMacroPlanner.GetUserName() ) )
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def
index f626708..a2b42ff 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def
@@ -10,13 +10,13 @@
   {
     Body:
     [*
-      if( not isnull( MacroPlan ) ) {
-        MacroPlan.PRData( relflush );
-        PRData::TestData( MacroPlan );
-      }
-      if( not isnull( GlobalOTDTable ) ) {
-        GlobalOTDTable.PRHistoryData( relflush );
-      }
+      //if( not isnull( MacroPlan ) ) {
+      //  MacroPlan.PRData( relflush );
+      //  PRData::TestData( MacroPlan );
+      //}
+      //if( not isnull( GlobalOTDTable ) ) {
+      //  GlobalOTDTable.PRHistoryData( relflush );
+      //}
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def
new file mode 100644
index 0000000..db7b6a3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: PanelPRDataButton/ButtonExportPR
+Response OnClick () id:Response_PanelPRDataButton_ButtonExportPR_OnClick
+{
+  #keys: '[414384.0.859041698]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      tableBinaryData := PRData::ExportTheFileStream( MacroPlan ).AsBinaryData();
+      Application.Download( "PRData.xlsx", tableBinaryData );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def
new file mode 100644
index 0000000..0c4edde
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelPRDataButton/ButtonLoad
+Response OnClick () id:Response_PanelPRDataButton_ButtonLoad_OnClick
+{
+  #keys: '[414384.0.859141084]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      MacroPlan.PRData( relflush );
+      PRData::FromSupplyPlanning( GlobalOTDTable, MacroPlan, MacroPlan, "" );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def"
index 7696374..e17362c 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def"
@@ -22,6 +22,7 @@
   ]
   Properties:
   [
+    Image: 'EXPORT1'
     Title: 'PR'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
index 93bc5b0..478593e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -11,10 +11,10 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'MPSync'
+        Source: 'MPSync'
         Taborder: 0
-        Transformation: 'CapacityAndSaleBudge'
+        Transformation: 'MappingCapacityAndSaleBudge'
       ]
     }
     #child: listActionBarPageCapacityAndSaleBudge
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpec","title":"LineAndSpec","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpec"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpecification","title":"LineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpecification"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth3","title":"CapacityInPCSInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth4","title":"CapacityInPCSInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth5","title":"CapacityInPCSInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth6","title":"CapacityInPCSInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth7","title":"CapacityInPCSInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth8","title":"CapacityInPCSInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth9","title":"CapacityInPCSInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth10","title":"CapacityInPCSInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth11","title":"CapacityInPCSInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth12","title":"CapacityInPCSInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth3","title":"CapacityInSheetInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth4","title":"CapacityInSheetInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth5","title":"CapacityInSheetInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth6","title":"CapacityInSheetInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth7","title":"CapacityInSheetInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth8","title":"CapacityInSheetInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth9","title":"CapacityInSheetInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth10","title":"CapacityInSheetInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth11","title":"CapacityInSheetInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth12","title":"CapacityInSheetInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth3","title":"SaleAmountInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth5","title":"SaleAmountInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth4","title":"SaleAmountInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth6","title":"SaleAmountInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth7","title":"SaleAmountInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth8","title":"SaleAmountInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth9","title":"SaleAmountInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth10","title":"SaleAmountInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth11","title":"SaleAmountInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth12","title":"SaleAmountInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]'
         ContextMenu: 'listContextMenuCapacityAndSaleBudge'
         SortCriteria: 'BusinessType;OrgCode;ProductCode'
         Taborder: 2
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
index 99ec0c4..2b3f638 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -10,6 +10,7 @@
   {
     Body:
     [*
+      MPSync::TestData( MPSync, MacroPlan );
       GlobalOTDTable.InitTestData();
     *]
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
new file mode 100644
index 0000000..9cb5a75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -0,0 +1,85 @@
+Quintiq file version 2.0
+Component ChartCapacityAndSaleBudgeChart
+{
+  #keys: '[414384.0.853873491]'
+  BaseType: 'WebChart'
+  Children:
+  [
+    Component ChartLevelCapacityAndSaleBudge
+    {
+      #keys: '[414384.0.853873492]'
+      BaseType: 'WebChartLevel'
+      Children:
+      [
+        Component DataExtractorCapacityAndSaleBudge
+        {
+          #keys: '[414384.0.853873493]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'ScenarioManager'
+            Source: 'ScenarioManager'
+            Taborder: 0
+            Transformation: 'CapacityAndSaleBudgeChartElement'
+          ]
+        }
+        Component ChartSeriesCapacityAndSaleBudge
+        {
+          #keys: '[414384.0.853873495]'
+          BaseType: 'WebChartSeries'
+          Properties:
+          [
+            Label: 'Quantity'
+            Taborder: 1
+            YScaleDataPath: 'object.Quantity()'
+          ]
+        }
+      ]
+      Properties:
+      [
+        ChartColorString:
+        [*
+          WebChartColor
+          {
+            WebChartConfigGroup
+            {
+              Label: 'Series'
+            }
+            WebChartConfigGroup
+            {
+              Label: 'BusinessTypeOrOrgCode'
+              SequenceNr: 1
+            }
+          }
+        *]
+        ChartTypeString:
+        [*
+          WebChartType
+          {
+            WebChartConfigGroup
+            {
+              Label: 'Series'
+            }
+            WebChartConfigGroup
+            {
+              Label: 'BusinessTypeOrOrgCode'
+              SequenceNr: 1
+            }
+            Default: 'Stacked bar'
+            DefaultStepped: 'No'
+            MergeStackedBars: true
+          }
+        *]
+        Groups: 'TimeStringAndScenarioName,BusinessTypeOrOrgCode'
+        Taborder: 0
+      ]
+    }
+    #child: chartContextMenuCapacityAndSaleBudge
+    #child: chartActionBarPageCapacityAndSaleBudge
+  ]
+  Properties:
+  [
+    ContextMenu: 'chartContextMenuCapacityAndSaleBudge'
+    Taborder: 7
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartActionBarPageCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartActionBarPageCapacityAndSaleBudge.def
new file mode 100644
index 0000000..3292625
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartActionBarPageCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component chartActionBarPageCapacityAndSaleBudge
+{
+  #keys: '[414384.0.853873501]'
+  BaseType: 'chartActionBarPage'
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartContextMenuCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartContextMenuCapacityAndSaleBudge.def
new file mode 100644
index 0000000..381ece8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_chartContextMenuCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component chartContextMenuCapacityAndSaleBudge
+{
+  #keys: '[414384.0.853873498]'
+  BaseType: 'chartContextMenu'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
new file mode 100644
index 0000000..8011270
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: ButtonCapacityAndSaleBudgeChartTest
+Response OnClick () id:Response_FormCapacityAndSaleBudgeChart_ButtonCapacityAndSaleBudgeChartTest_OnClick
+{
+  #keys: '[414384.0.857443403]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
+      
+      ScenarioManager.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(), 
+                                                 CheckboxIsCapacity.Checked(),
+                                                 DropDownTimeGroup.Text(),
+                                                 DropDownByBusinessTypeOrByOrgCode.Text(),
+                                                 DropDownBusinessTypes.Text(),
+                                                 DropDownPlaceOfProductionOfArrays.Text(),
+                                                 DropDownYears.Text(),
+                                                 MPSync, 
+                                                 GlobalOTDTable, 
+                                                 MacroPlan );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def
new file mode 100644
index 0000000..51a6e54
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeChart_OnCreated
+{
+  #keys: '[414384.0.853873350]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
+      
+      DropDownBusinessTypes.Strings( MPSync.CapacityAndSaleBudgeBusinessTypeString() );
+      DropDownPlaceOfProductionOfArrays.Strings( MPSync.CapacityAndSaleBudgePlaceOfProductionOfArrayString() );
+      DropDownYears.Strings( MPSync::CapacityAndSaleBudgeYearsString() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
new file mode 100644
index 0000000..456fb75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
@@ -0,0 +1,94 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeChart
+{
+  #keys: '[414384.0.852503421]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ChartCapacityAndSaleBudgeChart
+    Component ButtonCapacityAndSaleBudgeChartTest
+    {
+      #keys: '[414384.0.857443217]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: '鐢熸垚'
+        Taborder: 6
+      ]
+    }
+    Component DropDownYears
+    {
+      #keys: '[414384.0.857740648]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: '骞翠唤'
+        Taborder: 2
+      ]
+    }
+    Component DropDownBusinessTypes
+    {
+      #keys: '[414384.0.857740658]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        Label: '浜嬩笟閮�'
+        Taborder: 3
+      ]
+    }
+    Component DropDownPlaceOfProductionOfArrays
+    {
+      #keys: '[414384.0.857770736]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        Label: '闈㈡澘鍩哄湴'
+        Taborder: 4
+      ]
+    }
+    Component CheckboxIsCapacity
+    {
+      #keys: '[414384.0.857770765]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: '浜ц兘'
+        Taborder: 5
+      ]
+    }
+    Component DropDownTimeGroup
+    {
+      #keys: '[414384.0.857771238]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '鏈�'
+        Label: '鏃堕棿鍒嗙粍'
+        Strings: '鏈�;瀛e害;鍗婂勾;骞�'
+        Taborder: 1
+      ]
+    }
+    Component DropDownByBusinessTypeOrByOrgCode
+    {
+      #keys: '[414384.0.857702904]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '浜嬩笟閮�'
+        Label: '鏍规嵁闈㈡澘鍩哄湴/浜嬩笟閮ㄥ垎缁�'
+        Strings: '闈㈡澘鍩哄湴;浜嬩笟閮�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '骞村害浜ч攢棰勭畻澶嶇洏鍥捐〃'
+    Image: 'COLUMN-CHART'
+    Title: '骞村害浜ч攢棰勭畻澶嶇洏鍥捐〃'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
new file mode 100644
index 0000000..db394b0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorCapacityAndSaleBudgeCompare
+{
+  #keys: '[414384.0.828942477]'
+  BaseType: 'WebMatrixEditor'
+  Children:
+  [
+    Component MatrixEditorCellCapacityAndSaleBudgeCompare
+    {
+      #keys: '[414384.0.828942478]'
+      BaseType: 'WebMatrixEditorCell'
+      Children:
+      [
+        Component DataExtractorCapacityAndSaleBudgeCompare
+        {
+          #keys: '[414384.0.828942479]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'ScenarioManager'
+            Source: 'ScenarioManager'
+            Taborder: 0
+            Transformation: 'CapacityAndSaleBudgeCompareItemColumn.CapacityAndSaleBudgeCompareItemCell'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Attributes: 'CellContent'
+        Column: 'CapacityAndSaleBudgeCompareItemColumn'
+        Row: 'CapacityAndSaleBudgeCompareItemRow'
+        Taborder: 0
+      ]
+    }
+    Component MatrixEditorRowsCapacityAndSaleBudgeCompare
+    {
+      #keys: '[414384.0.828942482]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor385
+        {
+          #keys: '[414384.0.828942483]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'ScenarioManager'
+            Source: 'ScenarioManager'
+            Taborder: 0
+            Transformation: 'CapacityAndSaleBudgeCompareItemRow'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'RowNo'
+        SortCriteria: 'RowNo'
+        Taborder: 1
+      ]
+    }
+    Component MatrixEditorColumnsCapacityAndSaleBudgeCompare
+    {
+      #keys: '[414384.0.828942486]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor224
+        {
+          #keys: '[414384.0.828942487]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'ScenarioManager'
+            Source: 'ScenarioManager'
+            Taborder: 0
+            Transformation: 'CapacityAndSaleBudgeCompareItemColumn'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'ColumnName'
+        SortCriteria: 'ColumnNo'
+        Taborder: 2
+      ]
+    }
+    #child: matrixEditorActionBarPageCapacityAndSaleBudgeCompare
+    #child: matrixeditorContextMenuCapacityAndSaleBudgeCompare
+  ]
+  Properties:
+  [
+    Columns: 'MatrixEditorColumnsCapacityAndSaleBudgeCompare'
+    ContextMenu: 'matrixeditorContextMenuCapacityAndSaleBudgeCompare'
+    Editable: false
+    Rows: 'MatrixEditorRowsCapacityAndSaleBudgeCompare'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixEditorActionBarPageCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixEditorActionBarPageCapacityAndSaleBudgeCompare.def
new file mode 100644
index 0000000..4311894
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixEditorActionBarPageCapacityAndSaleBudgeCompare.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageCapacityAndSaleBudgeCompare
+{
+  #keys: '[414384.0.828942490]'
+  BaseType: 'matrixEditorActionBarPage'
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixeditorContextMenuCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixeditorContextMenuCapacityAndSaleBudgeCompare.def
new file mode 100644
index 0000000..24036f0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_matrixeditorContextMenuCapacityAndSaleBudgeCompare.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuCapacityAndSaleBudgeCompare
+{
+  #keys: '[414384.0.828942493]'
+  BaseType: 'matrixeditorContextMenu'
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
index 1309dca..50ded64 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -10,11 +10,16 @@
   {
     Body:
     [*
+      info( DataHolderMacroPlansForScenarioComparison.Data().Size() );
+      info( DataHolderCapacityAndSaleBudgeFilterItem.Data().Size() );
+      info( DataHolderCapacityAndSaleBudgeFilterYear.Data().Size() );
+      info( DataHolderCapacityAndSaleBudgeFilterMonth.Data().Size() );
       ScenarioManager.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
                                                    DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
                                                    DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
                                                    DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                    MPSync, 
+                                                   GlobalOTDTable,
                                                    MacroPlan );
     *]
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
index 499f57c..f4be476 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -7,6 +7,7 @@
   BaseType: 'WebForm'
   Children:
   [
+    #child: MatrixEditorCapacityAndSaleBudgeCompare
     Component ButtonCapacityAndSaleBudgeCompare
     {
       #keys: '[414384.0.818241675]'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def
new file mode 100644
index 0000000..f825db9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListForecastForHedging
+{
+  #keys: '[412960.0.117650662]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorForecastForHedging453
+    {
+      #keys: '[412960.0.117650663]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Forecast]'
+        Source: 'DataHolderForecastForHedging'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageForecastForHedging
+    Component DataSetLevelForecastForHedging
+    {
+      #keys: '[412960.0.117650668]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuForecastForHedging
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}}]'
+        ContextMenu: 'listContextMenuForecastForHedging'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def
new file mode 100644
index 0000000..cc6a096
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelForecastForHedging
+{
+  #keys: '[412960.0.117670724]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListForecastForHedging
+    #child: PanelForecastForHedging961
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def
new file mode 100644
index 0000000..4940eca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component PanelForecastForHedging961
+{
+  #keys: '[412960.0.124780919]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DateSelectorForecastForHedging
+    {
+      #keys: '[412960.0.124781002]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Date: 2023-01-01
+        DateFormat: 'YMM'
+        Label: '鎴鏃ユ湡'
+        MinDate: 2023-01-01
+        Taborder: 1
+      ]
+    }
+    Component ButtonForecastForHedging
+    {
+      #keys: '[412960.0.124781317]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        BadgeTextColor: 'blue'
+        ButtonSize: 'compact'
+        Label: '  鎼滅储  '
+        Taborder: 2
+      ]
+    }
+    Component EditFieldForecastForHedging
+    {
+      #keys: '[412960.0.124781382]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 0
+      ]
+    }
+    Component LabelForecastForHedging
+    {
+      #keys: '[412960.0.124781423]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鎼滅储'
+        Taborder: 3
+        Text: '鎼滅储'
+        Visible: false
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    SizeRatio: 0
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def
new file mode 100644
index 0000000..c92b3a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageForecastForHedging
+{
+  #keys: '[412960.0.117650665]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def
new file mode 100644
index 0000000..3da0a0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuForecastForHedging
+{
+  #keys: '[412960.0.117650670]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def
new file mode 100644
index 0000000..7e09df5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelForecastForHedging961/ButtonForecastForHedging
+Response OnClick () id:Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick
+{
+  #keys: '[412960.0.124781470]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorForecastForHedging.FixedFilter( 
+                                                   "( object.ID().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.ProductID().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+      //                                             + " or " + "object.Quantity().AsString().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.UnitOfMeasureName().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SalesSegmentName().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.EndDate() < " + DateSelectorForecastForHedging.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.EndDate() >= " + DateSelectorForecastForHedging.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def
new file mode 100644
index 0000000..2d9b51d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelForecastForHedging961/DateSelectorForecastForHedging
+Response OnCreated () id:Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated
+{
+  #keys: '[412960.0.124961321]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      this.Date( Date::ActualDate() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def
new file mode 100644
index 0000000..d3b3f75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormForecastForHedging
+{
+  #keys: '[412960.0.116513237]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelForecastForHedging
+    Component DataHolderForecastForHedging
+    {
+      #keys: '[412960.0.117670741]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Forecast]*'
+      Children:
+      [
+        Component DataExtractorForecastForHedging
+        {
+          #keys: '[412960.0.117620894]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'SalesDemand.astype(Forecast)'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍐插噺鍔熻兘涓嬬殑棰勬祴鏁版嵁鐣岄潰'
+    Image: 'PURCHASE_ORDER'
+    Title: '棰勬祴鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def
new file mode 100644
index 0000000..726a92c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component ListSDIP #extension
+{
+  Children:
+  [
+    Component DataSetLevelSDIP #extension
+    {
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsRestricted","title":"ImgIsRestricted","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsRestricted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MasterSalesDemand.UnitOfMeasureName","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MasterSalesDemand.UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"QuantityInSalesDemandUOM","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"QuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantityInSalesDemandUOM","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demamd","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2 )"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity()-object.FulfilledQuantity(), 0.0)"}}]}}]'
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def
new file mode 100644
index 0000000..3d7315d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component PanelSDIP #extension
+{
+  Children:
+  [
+    #child: ListSDIP
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def
new file mode 100644
index 0000000..743b727
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+Component PanelSalesDemands #extension
+{
+  #error 102458: "Class Component with id 'PanelSalesDemands' cannot find its child with id 'PanelAllSalesDemands'. The file / folder structure might be corrupted due to integration."
+  Children:
+  [
+    Component DataHolderSalesDemands #extension
+    {
+      Children:
+      [
+        Component DataExtractorSDFromNavPanel #extension
+        {
+          Properties:
+          [
+            Source: 'DataHolderSalesDemandFromNavPanel'
+          ]
+        }
+      ]
+    }
+    #child: PanelSDIP
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def
new file mode 100644
index 0000000..697d046
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: LibMacroPlannerWebUI
+OrphanComponent FormForecasts #extension
+{
+  Children:
+  [
+    #child: PanelSalesDemands
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def
new file mode 100644
index 0000000..6795199
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListHedgingOfLog
+{
+  #keys: '[414724.0.28070551]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorHedgingOfLog883
+    {
+      #keys: '[414724.0.28070552]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_HedgingRecord]'
+        Source: 'DataHolderHedgingOfLog'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageHedgingOfLog
+    Component DataSetLevelHedgingOfLog
+    {
+      #keys: '[414724.0.28070557]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuHedgingOfLog
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Serial","title":"Serial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Serial"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReverseQty","title":"ReverseQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReverseQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AuthorizeQty","title":"AuthorizeQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AuthorizeQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateQty","title":"OperateQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateType","title":"OperateType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Operator","title":"Operator","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Operator"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateTime","title":"OperateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateTime"}}]'
+        ContextMenu: 'listContextMenuHedgingOfLog'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def
new file mode 100644
index 0000000..ed7d295
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog
+{
+  #keys: '[414724.0.28070480]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderHedgingOfLog
+    {
+      #keys: '[414724.0.28070513]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_HedgingRecord]*'
+      Children:
+      [
+        Component DataExtractorHedgingOfLog
+        {
+          #keys: '[414724.0.28070527]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_HedgingRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: ListHedgingOfLog
+    #child: PanelHedgingOfLog761
+    #child: PanelHedgingOfLog593
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def
new file mode 100644
index 0000000..58cf03b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog593
+{
+  #keys: '[414724.0.32210907]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUCode
+    {
+      #keys: '[414724.0.32210935]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: 'SKU缂栫爜锛欰AAAAAAAA'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def
new file mode 100644
index 0000000..dded053
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog761
+{
+  #keys: '[414724.0.26973497]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component LabelHedgingOfLog
+    {
+      #keys: '[414724.0.26973515]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        FixedSize: false
+        Taborder: 0
+        Text: '鏃ュ織椤甸潰'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'content'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def
new file mode 100644
index 0000000..21d6e75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageHedgingOfLog
+{
+  #keys: '[414724.0.28070554]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def
new file mode 100644
index 0000000..255ce0a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuHedgingOfLog
+{
+  #keys: '[414724.0.28070559]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def
new file mode 100644
index 0000000..88f5a2f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormHedgingOfLog_OnCreated
+{
+  #keys: '[414724.0.32481133]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
new file mode 100644
index 0000000..2b5e9aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormHedgingOfLog
+{
+  #keys: '[414724.0.28070348]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelHedgingOfLog
+    Component lb_ForecastQty
+    {
+      #keys: '[414724.0.31031550]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 1
+        Text: '鍘熸潗鏂欑殑棰勬祴鏁伴噺锛�0'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍐插噺缁撴灉-鏃ュ織'
+    Image: 'DOCUMENT_REFRESH'
+    Title: '鍙嶇鎺堟潈鍒楄〃鏄庣粏椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_ListPanelMaterialIT.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_ListPanelMaterialIT.def
new file mode 100644
index 0000000..f5a7514
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_ListPanelMaterialIT.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialIT
+{
+  #keys: '[414702.0.210691840]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialIT
+    {
+      #keys: '[414702.0.210691841]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialIT'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialIT
+    Component DataSetLevelPanelMaterialIT
+    {
+      #keys: '[414702.0.210691846]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialIT
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialIT'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listActionBarPagePanelMaterialIT.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listActionBarPagePanelMaterialIT.def
new file mode 100644
index 0000000..834622e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listActionBarPagePanelMaterialIT.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialIT
+{
+  #keys: '[414702.0.210691843]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listContextMenuPanelMaterialIT.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listContextMenuPanelMaterialIT.def
new file mode 100644
index 0000000..fbdcdc0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Component_listContextMenuPanelMaterialIT.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialIT
+{
+  #keys: '[414702.0.210691848]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnCreated.def
new file mode 100644
index 0000000..2e5c2f6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelIT
+Response OnCreated () id:Response_FormPanelMaterialIT_DataHolderPanelIT_OnCreated
+{
+  #keys: '[414702.0.211822171]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "IT" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnDataChanged.def
new file mode 100644
index 0000000..45047d0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/Response_DataHolderPanelIT_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelIT
+Response OnDataChanged () id:Response_FormPanelMaterialIT_DataHolderPanelIT_OnDataChanged
+{
+  #keys: '[414702.0.211822170]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "IT" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIT/_ROOT_Component_FormPanelMaterialIT.def b/_Main/UI/MacroPlannerWebApp/Component_FormIT/_ROOT_Component_FormPanelMaterialIT.def
new file mode 100644
index 0000000..c63195b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIT/_ROOT_Component_FormPanelMaterialIT.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialIT
+{
+  #keys: '[414702.0.209101681]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialIT
+    Component DataHolderPanelIT
+    {
+      #keys: '[414702.0.211822173]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent
+    {
+      #keys: '[414702.0.211822232]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelIT.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: 'IT'
+    Image: 'SATELLITE'
+    Title: 'IT'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
new file mode 100644
index 0000000..23d2fcb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component ListIssueWorkOrder
+{
+  #keys: '[414702.0.222532118]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorIssueWorkOrder
+    {
+      #keys: '[414702.0.222532119]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'MasterPlanReleaseWorkOrder.MasterPlanReleaseWorkOrderTabulation'
+      ]
+    }
+    #child: listActionBarPageIssueWorkOrder
+    Component DataSetLevelIssueWorkOrder
+    {
+      #keys: '[414702.0.222532124]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: MenuIssueEdit
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionWorkOrderNumber","title":"ProductionWorkOrderNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionWorkOrderNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductModel","title":"ProductModel","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialDescription","title":"MaterialDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlannedQuantity","title":"PlannedQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlannedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderType","title":"WorkOrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderStatus","title":"WorkOrderStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderStatus"}}]'
+        ContextMenu: 'MenuIssueEdit'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListIssueWorkOrder_WebMenu_OnClick
+    {
+      #keys: '[414702.0.224677542]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[495.0.82724420]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_MenuIssueEdit.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_MenuIssueEdit.def
new file mode 100644
index 0000000..c113c91
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_MenuIssueEdit.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component MenuIssueEdit
+{
+  #keys: '[414702.0.222532126]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuEdit
+    {
+      #keys: '[414702.0.223801146]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        BindOnDoubleClick: true
+        Image: 'DOCUMENT_EDIT'
+        Taborder: 3
+        Title: '缂栬緫'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelButton.def
new file mode 100644
index 0000000..0faa617
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelButton.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component PanelButton
+{
+  #keys: '[414702.0.222545713]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonGeneratePlannedData id:ButtonGeneratePlannedData_167
+    {
+      #keys: '[414702.0.222545840]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'WIND_ENGINE'
+        Label: '鐢熸垚涓嬪彂璁㈠崟'
+        Taborder: 0
+      ]
+    }
+    Component ButtonIDownload id:ButtonIDownload_779
+    {
+      #keys: '[414702.0.222545904]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DOWNLOAD'
+        Label: '涓嬭浇'
+        Taborder: 1
+      ]
+    }
+    Component ButtonIPlannedRelease id:ButtonIPlannedRelease_848
+    {
+      #keys: '[414702.0.222545967]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'PARASOL'
+        Label: '璁″垝鍙戝竷'
+        Taborder: 2
+      ]
+    }
+    Component ButtonStatusRefresh id:ButtonStatusRefresh_865
+    {
+      #keys: '[414702.0.222546030]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ARROW_CIRCLE2'
+        Label: '鐘舵�佸埛鏂�'
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelIssueWorkOrder.def
new file mode 100644
index 0000000..c8b4caf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_PanelIssueWorkOrder.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelIssueWorkOrder
+{
+  #keys: '[414702.0.222532093]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListIssueWorkOrder
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_listActionBarPageIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_listActionBarPageIssueWorkOrder.def
new file mode 100644
index 0000000..dbd461c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_listActionBarPageIssueWorkOrder.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageIssueWorkOrder
+{
+  #keys: '[414702.0.222532121]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def
new file mode 100644
index 0000000..f516650
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListIssueWorkOrder
+Response OnClick (
+  structured[MasterPlanReleaseWorkOrderTabulation] selection
+) id:Response_ListIssueWorkOrder_MenuEdit_OnClick
+{
+  #keys: '[414702.0.223821969]'
+  CanBindMultiple: false
+  DefinitionID => /ListIssueWorkOrder/Responsedef_ListIssueWorkOrder_WebMenu_OnClick
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditIssueWorkOrder );
+      
+      dlg.Edit( selection );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged\043567.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged\043567.def"
new file mode 100644
index 0000000..dcb787b
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged\043567.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListIssueWorkOrder
+Response OnUserCheckedChanged () id:Response_ListIssueWorkOrder_OnUserCheckedChanged_567
+{
+  #keys: '[414702.0.224434023]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCheckedMasterPlanReleaseWorkOrderTabulation.Data().Flush();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged.def
new file mode 100644
index 0000000..a04d9da
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_OnUserCheckedChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListIssueWorkOrder
+Response OnUserCheckedChanged (
+  structured[MasterPlanReleaseWorkOrderTabulation] checkeditems
+) id:Response_ListIssueWorkOrder_OnUserCheckedChanged
+{
+  #keys: '[414702.0.224433947]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCheckedMasterPlanReleaseWorkOrderTabulation.Data( checkeditems.Copy() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def"
new file mode 100644
index 0000000..af53e7d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def"
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelButton/ButtonGeneratePlannedData_167
+Response OnClick () id:Response_FormIssueWorkOrder_ButtonGeneratePlannedData_OnClick_124
+{
+  #keys: '[414702.0.222545839]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      MasterPlanReleaseWorkOrder::GenerateAndDistributeWorkOrders( MacroPlan );
+      
+      WebMessageBox::Success( "鐢熸垚鎴愬姛锛�", true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonIDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonIDownload_OnClick.def
new file mode 100644
index 0000000..dbb59de
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonIDownload_OnClick.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: PanelButton/ButtonIDownload_779
+Response OnClick () id:Response_PanelButton_ButtonIDownload_OnClick
+{
+  #keys: '[414702.0.229440598]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      tableBinaryData := MasterPlanReleaseWorkOrderTabulation::Export( DataHolderCheckedMasterPlanReleaseWorkOrderTabulation.Data() ).AsBinaryData();
+      
+      fileNmae := "宸ュ崟瀵煎嚭_";
+      fileNmae := fileNmae + [String]Date::ActualDate().Year() + [String]Date::ActualDate().Month() + "鏈�.xlsx";
+      
+      Application.Download( fileNmae, tableBinaryData );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def
new file mode 100644
index 0000000..24025d0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormIssueWorkOrder
+{
+  #keys: '[414702.0.223811074]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelIssueWorkOrder
+    Component DataHolderCheckedMasterPlanReleaseWorkOrderTabulation
+    {
+      #keys: '[414702.0.222552279]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[MasterPlanReleaseWorkOrderTabulation]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: PanelButton
+  ]
+  Properties:
+  [
+    Description: '涓嬪彂宸ュ崟'
+    Image: 'TREE'
+    Title: '涓嬪彂宸ュ崟'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def
new file mode 100644
index 0000000..54d1eea
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component PanelKpiMatrixButton #extension
+{
+  Children:
+  [
+    Component ButtonKpiMatrixRefresh #extension
+    {
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def
new file mode 100644
index 0000000..fe53993
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: KpiTrackerWeb
+OrphanComponent FormKpiMatrix #extension
+{
+  Children:
+  [
+    #child: PanelKpiMatrixButton
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def
new file mode 100644
index 0000000..a9fc454
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMaterialPurchase
+{
+  #keys: '[414724.0.33312250]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorMaterialPurchase593
+    {
+      #keys: '[414724.0.33312251]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_MaterialPurchase]'
+        Source: 'DataHolderMaterialPurchase'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageMaterialPurchase
+    Component DataSetLevelMaterialPurchase
+    {
+      #keys: '[414724.0.33312256]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuMaterialPurchase
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductSubclassType","title":"ProductSubclassType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductSubclassType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Qty","title":"Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Qty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"Unit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WarehouseCode","title":"WarehouseCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WarehouseCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandTime","title":"DemandTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandTime"}}]'
+        ContextMenu: 'listContextMenuMaterialPurchase'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def
new file mode 100644
index 0000000..228bfb8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelMaterialPurchase
+{
+  #keys: '[414724.0.32581841]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_StartTime
+    {
+      #keys: '[414724.0.32581870]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        NumberOfColumns: 50
+        Taborder: 0
+        Text: '寮�濮嬫椂闂达細2023-03-26 12:24:46'
+      ]
+    }
+    #child: PanelMaterialPurchase613
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def
new file mode 100644
index 0000000..25dd39f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component PanelMaterialPurchase613
+{
+  #keys: '[414724.0.32732360]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_Issuing
+    {
+      #keys: '[414724.0.32702204]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍙戝竷鎸夐挳'
+        Image: 'GOLDFISH'
+        Label: '鍙戝竷'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    MinimumColumns: 10
+    Orientation: 'horizontal'
+    Style: 'content'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def
new file mode 100644
index 0000000..96c5f0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageMaterialPurchase
+{
+  #keys: '[414724.0.33312253]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def
new file mode 100644
index 0000000..672eb72
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuMaterialPurchase
+{
+  #keys: '[414724.0.33312258]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def
new file mode 100644
index 0000000..039fd11
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: PanelMaterialPurchase613/btn_Issuing
+Response OnClick () id:Response_PanelMaterialPurchase613_btn_Issuing_OnClick
+{
+  #keys: '[414724.0.32883517]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      nExecute := WebMessageBox::Question("纭瑕佸彂甯冨綋鍓嶇殑鎵�鏈夐噰璐鍗曞悧锛�");
+      
+      if( nExecute = 0)
+      {
+        OutMsg :="";
+        bResult := H_FunctionClass::SM_MaterialPurchaseIssuer(OutMsg,MacroPlan,"-",ApplicationMacroPlanner.GetUserName());
+        if( OutMsg.Length()>0)
+        {
+          if(bResult)
+          {
+            WebMessageBox::Success( OutMsg);
+          }
+          else
+          {
+            WebMessageBox::Warning( OutMsg);
+          }
+        }   
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
new file mode 100644
index 0000000..9c8ca6c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMaterialPurchase
+{
+  #keys: '[414724.0.32392142]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component lb_Title
+    {
+      #keys: '[414724.0.32644779]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+        Taborder: 0
+        Text: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+      ]
+    }
+    #child: PanelMaterialPurchase
+    Component DataHolderMaterialPurchase
+    {
+      #keys: '[414724.0.32795597]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_MaterialPurchase]*'
+      Children:
+      [
+        Component DataExtractorMaterialPurchase
+        {
+          #keys: '[414724.0.32795611]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_MaterialPurchase'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: ListMaterialPurchase
+  ]
+  Properties:
+  [
+    Description: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+    Image: 'DOG'
+    Title: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
index 1298999..3c6f90b 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
@@ -27,7 +27,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReleaseBy","title":"ReleaseBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReleaseBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendDate","title":"SendDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveStatus","title":"ReceiveStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveTime","title":"ReceiveTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveError","title":"ReceiveError","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveError"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductName","title":"ProductName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProduceRequiredDate","title":"ProduceRequiredDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProduceRequiredDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProviderCode","title":"ProviderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProviderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProviderName","title":"ProviderName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProviderName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure","title":"UnitOfMeasure","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasure"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendTimeString","title":"SendTimeString","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendTimeString"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReleaseBy","title":"ReleaseBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReleaseBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveTimeString","title":"ReceiveTimeString","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveTimeString"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveStatus","title":"ReceiveStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveError","title":"ReceiveError","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveError"}}]'
         ContextMenu: 'listContextMenuPRHistoryData'
         SortCriteria: 'BusinessType;MRPCalverNo'
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def
index 8a0a6c7..db38272 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def
@@ -5,7 +5,7 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ButtonResendPRA
+    Component ButtonResendPR
     {
       #keys: '[414384.0.799483157]'
       BaseType: 'WebButton'
@@ -16,6 +16,17 @@
         Taborder: 0
       ]
     }
+    Component ButtonExportPRHistory
+    {
+      #keys: '[414384.0.859111744]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'EXPORT1'
+        Label: '鏁版嵁瀵煎嚭'
+        Taborder: 1
+      ]
+    }
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def"
index fd4d7de..f83c6e2 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def"
@@ -16,6 +16,17 @@
         Title: 'Call'
       ]
     }
+    Component MenuPrintRequest
+    {
+      #keys: '[414384.0.860210718]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'MEDIA_PLAY_GREEN'
+        Taborder: 4
+        Title: 'Print request'
+      ]
+    }
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuPrintRequest_OnClick\043338.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuPrintRequest_OnClick\043338.def"
new file mode 100644
index 0000000..58ad812
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuPrintRequest_OnClick\043338.def"
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListPRHistoryData_844
+Response OnClick (
+  PRHistoryData selection
+) id:Response_ListPRHistoryData_844_MenuPrintRequest_OnClick
+{
+  #keys: '[414384.0.860210608]'
+  CanBindMultiple: false
+  DefinitionID => /ListPRHistoryData_844/Responsedef_ListPRHistoryData_844_WebMenu_OnClick
+  Initiator: 'MenuPrintRequest'
+  QuillAction
+  {
+    Body:
+    [*
+      info( selection.PrintCall( ApplicationMacroPlanner.GetUserName() ) )
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def
new file mode 100644
index 0000000..9a9f95e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: PanelPRHistoryButton/ButtonExportPRHistory
+Response OnClick () id:Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick
+{
+  #keys: '[414384.0.859111743]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      tableBinaryData := PRHistoryData::ExportTheFileStream( GlobalOTDTable ).AsBinaryData();
+      Application.Download( "PRData.xlsx", tableBinaryData );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def
deleted file mode 100644
index 52c3bd2..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def
+++ /dev/null
@@ -1,28 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelPRHistoryButton/ButtonResendPRA
-Response OnClick () id:Response_PanelPRHistoryButton_ButtonResendPRA_OnClick
-{
-  #keys: '[414384.0.799483155]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  Precondition:
-  [*
-    info( DataHolderChecked.Data().Size() );
-    return DataHolderChecked.Data().Size() > 0;
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      productIdsOver14Days := PRHistoryData::ProductIdOver14Days( DataHolderChecked.Data() );
-      if( productIdsOver14Days <> "" ) {
-        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁閲嶆柊閲婃斁锛�" ) = 0 ) {
-          PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
-        }
-      } else if( WebMessageBox::Question( "鏄惁閲嶆柊閲婃斁閫変腑鐨勫唴瀹癸紵" ) = 0 ) {
-        PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPR_OnClick.def
new file mode 100644
index 0000000..526ae6e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPR_OnClick.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: PanelPRHistoryButton/ButtonResendPR
+Response OnClick () id:Response_PanelPRHistoryButton_ButtonResendPR_OnClick
+{
+  #keys: '[414384.0.799483155]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    info( DataHolderChecked.Data().Size() );
+    return DataHolderChecked.Data().Size() > 0;
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      productIdsOver14Days := PRHistoryData::ProductIdOver14Days( DataHolderChecked.Data() );
+      if( productIdsOver14Days <> "" ) {
+        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁閲嶆柊閲婃斁锛�" ) = 0 ) {
+          PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+        }
+      } else if( WebMessageBox::Question( "鏄惁閲嶆柊閲婃斁閫変腑鐨勫唴瀹癸紵" ) = 0 ) {
+        PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_ListPanelMaterialAutomotiveElectronics.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_ListPanelMaterialAutomotiveElectronics.def
new file mode 100644
index 0000000..59acd48
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_ListPanelMaterialAutomotiveElectronics.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialAutomotiveElectronics
+{
+  #keys: '[414702.0.210601878]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialAutomotiveElectronics
+    {
+      #keys: '[414702.0.210601879]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialAutomotiveElectronics'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialAutomotiveElectronics
+    Component DataSetLevelPanelMaterialAutomotiveElectronics
+    {
+      #keys: '[414702.0.210601884]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialAutomotiveElectronics
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialAutomotiveElectronics'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listActionBarPagePanelMaterialAutomotiveElectronics.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listActionBarPagePanelMaterialAutomotiveElectronics.def
new file mode 100644
index 0000000..10c54d2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listActionBarPagePanelMaterialAutomotiveElectronics.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialAutomotiveElectronics
+{
+  #keys: '[414702.0.210601881]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listContextMenuPanelMaterialAutomotiveElectronics.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listContextMenuPanelMaterialAutomotiveElectronics.def
new file mode 100644
index 0000000..4cf4117
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Component_listContextMenuPanelMaterialAutomotiveElectronics.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialAutomotiveElectronics
+{
+  #keys: '[414702.0.210601886]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnCreated.def
new file mode 100644
index 0000000..153bf2b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelAutomotiveElectronics
+Response OnCreated () id:Response_FormPanelMaterialAutomotiveElectronics_DataHolderPanelAutomotiveElectronics_OnCreated
+{
+  #keys: '[414702.0.211782554]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "姹借溅鐢靛瓙" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnDataChanged.def
new file mode 100644
index 0000000..5d5b00c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/Response_DataHolderPanelAutomotiveElectronics_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelAutomotiveElectronics
+Response OnDataChanged () id:Response_FormPanelMaterialAutomotiveElectronics_DataHolderPanelAutomotiveElectronics_OnDataChanged
+{
+  #keys: '[414702.0.211782555]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "姹借溅鐢靛瓙" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/_ROOT_Component_FormPanelMaterialAutomotiveElectronics.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/_ROOT_Component_FormPanelMaterialAutomotiveElectronics.def
new file mode 100644
index 0000000..bf0aa3c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialAutomotiveElectronics/_ROOT_Component_FormPanelMaterialAutomotiveElectronics.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialAutomotiveElectronics
+{
+  #keys: '[414702.0.210632875]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialAutomotiveElectronics
+    Component DataHolderPanelAutomotiveElectronics
+    {
+      #keys: '[414702.0.211782557]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent id:LabelLastSent_680
+    {
+      #keys: '[414702.0.211782616]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelAutomotiveElectronics.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '姹借溅鐢靛瓙'
+    Image: 'RFID_CHIP'
+    Title: '姹借溅鐢靛瓙'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_ListPanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_ListPanelMaterialSpecializedDisplay.def
new file mode 100644
index 0000000..daa00b5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_ListPanelMaterialSpecializedDisplay.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialSpecializedDisplay
+{
+  #keys: '[414702.0.209165818]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialSpecializedDisplay
+    {
+      #keys: '[414702.0.209165819]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialSpecializedDisplay'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialSpecializedDisplay
+    Component DataSetLevelPanelMaterialSpecializedDisplay
+    {
+      #keys: '[414702.0.209165824]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialSpecializedDisplay
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialSpecializedDisplay'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listActionBarPagePanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listActionBarPagePanelMaterialSpecializedDisplay.def
new file mode 100644
index 0000000..a60b6c3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listActionBarPagePanelMaterialSpecializedDisplay.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialSpecializedDisplay
+{
+  #keys: '[414702.0.209165821]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listContextMenuPanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listContextMenuPanelMaterialSpecializedDisplay.def
new file mode 100644
index 0000000..9eaeb5f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Component_listContextMenuPanelMaterialSpecializedDisplay.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialSpecializedDisplay
+{
+  #keys: '[414702.0.209165826]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnCreated.def
new file mode 100644
index 0000000..f850744
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelSpecializedDisplay
+Response OnCreated () id:Response_FormPanelMaterialSpecializedDisplay_DataHolderPanelSpecializedDisplay_OnCreated
+{
+  #keys: '[414702.0.211782227]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "涓撴樉" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnDataChanged.def
new file mode 100644
index 0000000..da65c1e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/Response_DataHolderPanelSpecializedDisplay_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelSpecializedDisplay
+Response OnDataChanged () id:Response_FormPanelMaterialSpecializedDisplay_DataHolderPanelSpecializedDisplay_OnDataChanged
+{
+  #keys: '[414702.0.211782228]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "涓撴樉" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
new file mode 100644
index 0000000..74e4ff6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialSpecializedDisplay
+{
+  #keys: '[414702.0.209165405]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialSpecializedDisplay
+    Component DataHolderPanelSpecializedDisplay
+    {
+      #keys: '[414702.0.211782230]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent id:LabelLastSent_452
+    {
+      #keys: '[414702.0.211519610]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelSpecializedDisplay.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '涓撴樉'
+    Image: 'LAPTOP2'
+    Title: '涓撴樉'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_ListPanelMaterialSportsHealth.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_ListPanelMaterialSportsHealth.def
new file mode 100644
index 0000000..470bb1a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_ListPanelMaterialSportsHealth.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialSportsHealth
+{
+  #keys: '[414702.0.209153614]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialSportsHealth
+    {
+      #keys: '[414702.0.209153615]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialSportsHealth'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialSportsHealth
+    Component DataSetLevelPanelMaterialSportsHealth
+    {
+      #keys: '[414702.0.209153620]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialSportsHealth
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialSportsHealth'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listActionBarPagePanelMaterialSportsHealth.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listActionBarPagePanelMaterialSportsHealth.def
new file mode 100644
index 0000000..7afeb77
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listActionBarPagePanelMaterialSportsHealth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialSportsHealth
+{
+  #keys: '[414702.0.209153617]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listContextMenuPanelMaterialSportsHealth.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listContextMenuPanelMaterialSportsHealth.def
new file mode 100644
index 0000000..a901936
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Component_listContextMenuPanelMaterialSportsHealth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialSportsHealth
+{
+  #keys: '[414702.0.209153622]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnCreated.def
new file mode 100644
index 0000000..a335367
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelSportsHealth
+Response OnCreated () id:Response_FormPanelMaterialSportsHealth_DataHolderPanelSportsHealth_OnCreated
+{
+  #keys: '[414702.0.211819877]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杩愬姩鍋ュ悍" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnDataChanged.def
new file mode 100644
index 0000000..8f99fec
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/Response_DataHolderPanelSportsHealth_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelSportsHealth
+Response OnDataChanged () id:Response_FormPanelMaterialSportsHealth_DataHolderPanelSportsHealth_OnDataChanged
+{
+  #keys: '[414702.0.211819876]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杩愬姩鍋ュ悍" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/_ROOT_Component_FormPanelMaterialSportsHealth.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/_ROOT_Component_FormPanelMaterialSportsHealth.def
new file mode 100644
index 0000000..6e01214
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSportsHealth/_ROOT_Component_FormPanelMaterialSportsHealth.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialSportsHealth
+{
+  #keys: '[414702.0.210874377]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialSportsHealth
+    Component DataHolderPanelSportsHealth
+    {
+      #keys: '[414702.0.211819879]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent
+    {
+      #keys: '[414702.0.211821961]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelSportsHealth.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '杩愬姩鍋ュ悍'
+    Image: 'APPLE'
+    Title: '杩愬姩鍋ュ悍'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_ListPanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_ListPanelMaterialTM.def
new file mode 100644
index 0000000..e55373e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_ListPanelMaterialTM.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialTM
+{
+  #keys: '[414702.0.211024657]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialTM
+    {
+      #keys: '[414702.0.211024658]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialTM17'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialTM
+    Component DataSetLevelPanelMaterialTM
+    {
+      #keys: '[414702.0.211024663]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialTM
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialTM'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listActionBarPagePanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listActionBarPagePanelMaterialTM.def
new file mode 100644
index 0000000..f3a589a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listActionBarPagePanelMaterialTM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialTM
+{
+  #keys: '[414702.0.211024660]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listContextMenuPanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listContextMenuPanelMaterialTM.def
new file mode 100644
index 0000000..85fad20
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Component_listContextMenuPanelMaterialTM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialTM
+{
+  #keys: '[414702.0.211024665]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnCreated.def
new file mode 100644
index 0000000..b163a78
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTM17
+Response OnCreated () id:Response_FormPanelMaterialTM17_DataHolderPanelTM17_OnCreated
+{
+  #keys: '[414702.0.211884009]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM17" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnDataChanged.def
new file mode 100644
index 0000000..da9f657
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/Response_DataHolderPanelTM17_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTM17
+Response OnDataChanged () id:Response_FormPanelMaterialTM17_DataHolderPanelTM17_OnDataChanged
+{
+  #keys: '[414702.0.211884008]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM17" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/_ROOT_Component_FormPanelMaterialTM17.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/_ROOT_Component_FormPanelMaterialTM17.def
new file mode 100644
index 0000000..66b4230
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM17/_ROOT_Component_FormPanelMaterialTM17.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialTM17
+{
+  #keys: '[414702.0.211085284]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialTM
+    Component DataHolderPanelTM17
+    {
+      #keys: '[414702.0.211884011]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent
+    {
+      #keys: '[414702.0.211884076]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelTM17.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: 'TM17'
+    Image: 'MARKER'
+    Title: 'TM17'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_ListPanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_ListPanelMaterialTM.def
new file mode 100644
index 0000000..68eb395
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_ListPanelMaterialTM.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialTM
+{
+  #keys: '[414702.0.210995730]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialTM
+    {
+      #keys: '[414702.0.210995731]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialTM18'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialTM
+    Component DataSetLevelPanelMaterialTM
+    {
+      #keys: '[414702.0.210995736]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialTM
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialTM'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listActionBarPagePanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listActionBarPagePanelMaterialTM.def
new file mode 100644
index 0000000..53e1f18
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listActionBarPagePanelMaterialTM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialTM
+{
+  #keys: '[414702.0.210995733]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listContextMenuPanelMaterialTM.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listContextMenuPanelMaterialTM.def
new file mode 100644
index 0000000..0f68ddf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Component_listContextMenuPanelMaterialTM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialTM
+{
+  #keys: '[414702.0.210995738]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnCreated.def
new file mode 100644
index 0000000..da89ecb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTM18
+Response OnCreated () id:Response_FormPanelMaterialTM18_DataHolderPanelTM18_OnCreated
+{
+  #keys: '[414702.0.211683113]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM18" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnDataChanged.def
new file mode 100644
index 0000000..b1e90c7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/Response_DataHolderPanelTM18_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTM18
+Response OnDataChanged () id:Response_FormPanelMaterialTM18_DataHolderPanelTM18_OnDataChanged
+{
+  #keys: '[414702.0.211683114]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "TM18" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/_ROOT_Component_FormPanelMaterialTM18.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/_ROOT_Component_FormPanelMaterialTM18.def
new file mode 100644
index 0000000..807ee1f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTM18/_ROOT_Component_FormPanelMaterialTM18.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialTM18
+{
+  #keys: '[414702.0.209184779]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialTM
+    Component DataHolderPanelTM18
+    {
+      #keys: '[414702.0.211683116]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent id:LabelLastSent_969
+    {
+      #keys: '[414702.0.211561471]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelTM18.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: 'M18'
+    Image: 'MARKER_DELETE'
+    Title: 'M18'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_ListPanelMaterialTianHua.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_ListPanelMaterialTianHua.def
new file mode 100644
index 0000000..351aa56
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_ListPanelMaterialTianHua.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialTianHua
+{
+  #keys: '[414702.0.210905662]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialTianHua
+    {
+      #keys: '[414702.0.210905663]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialTianHua'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialTianHua
+    Component DataSetLevelPanelMaterialTianHua
+    {
+      #keys: '[414702.0.210905668]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialTianHua
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialTianHua'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listActionBarPagePanelMaterialTianHua.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listActionBarPagePanelMaterialTianHua.def
new file mode 100644
index 0000000..c8243d8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listActionBarPagePanelMaterialTianHua.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialTianHua
+{
+  #keys: '[414702.0.210905665]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listContextMenuPanelMaterialTianHua.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listContextMenuPanelMaterialTianHua.def
new file mode 100644
index 0000000..7573e40
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Component_listContextMenuPanelMaterialTianHua.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialTianHua
+{
+  #keys: '[414702.0.210905670]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnCreated.def
new file mode 100644
index 0000000..571614d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTianHua
+Response OnCreated () id:Response_FormPanelMaterialTianHua_DataHolderPanelTianHua_OnCreated
+{
+  #keys: '[414702.0.211890766]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "澶╁崕" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnDataChanged.def
new file mode 100644
index 0000000..eec0cbb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/Response_DataHolderPanelTianHua_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelTianHua
+Response OnDataChanged () id:Response_FormPanelMaterialTianHua_DataHolderPanelTianHua_OnDataChanged
+{
+  #keys: '[414702.0.211890767]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "澶╁崕" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def
new file mode 100644
index 0000000..31b93b5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialTianHua
+{
+  #keys: '[414702.0.210844802]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialTianHua
+    Component DataHolderPanelTianHua
+    {
+      #keys: '[414702.0.211890769]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component LabelLastSent id:LabelLastSent_662
+    {
+      #keys: '[414702.0.211781782]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelTianHua.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '澶╄姳'
+    Image: 'CANDLE'
+    Title: '澶╄姳'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_ListPanelMaterialVehicle.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_ListPanelMaterialVehicle.def
new file mode 100644
index 0000000..5b14efc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_ListPanelMaterialVehicle.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPanelMaterialVehicle
+{
+  #keys: '[414702.0.210996626]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPanelMaterialVehicle
+    {
+      #keys: '[414702.0.210996627]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PanelMaterialAll.PanelMaterialVehicle'
+      ]
+    }
+    #child: listActionBarPagePanelMaterialVehicle
+    Component DataSetLevelPanelMaterialVehicle
+    {
+      #keys: '[414702.0.210996632]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPanelMaterialVehicle
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CurrencyID","title":"CurrencyID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CurrencyID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"CustomerID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"IsEligibleForNetting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPIUser","title":"IsExcludedFromFulfillmentKPIUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPIUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"OrderLineID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityName","title":"PriorityName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuPanelMaterialVehicle'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listActionBarPagePanelMaterialVehicle.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listActionBarPagePanelMaterialVehicle.def
new file mode 100644
index 0000000..d86d50a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listActionBarPagePanelMaterialVehicle.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePanelMaterialVehicle
+{
+  #keys: '[414702.0.210996629]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listContextMenuPanelMaterialVehicle.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listContextMenuPanelMaterialVehicle.def
new file mode 100644
index 0000000..43317c3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Component_listContextMenuPanelMaterialVehicle.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuPanelMaterialVehicle
+{
+  #keys: '[414702.0.210996634]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_ButtonFusionData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_ButtonFusionData_OnClick.def
new file mode 100644
index 0000000..5062d5f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_ButtonFusionData_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ButtonFusionData
+Response OnClick () id:Response_FormPanelMaterialVehicle_ButtonFusionData_OnClick
+{
+  #keys: '[414702.0.212120934]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogFusionData );
+      dlg.FusionData();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnCreated.def
new file mode 100644
index 0000000..5d3384d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelMaterialVehicle
+Response OnCreated () id:Response_FormPanelMaterialVehicle_DataHolderPanelMaterialVehicle_OnCreated
+{
+  #keys: '[414702.0.209104458]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杞﹁浇" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnDataChanged.def
new file mode 100644
index 0000000..b38c87f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/Response_DataHolderPanelMaterialVehicle_OnDataChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: DataHolderPanelMaterialVehicle
+Response OnDataChanged () id:Response_FormPanelMaterialVehicle_DataHolderPanelMaterialVehicle_OnDataChanged
+{
+  #keys: '[414702.0.211118621]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      targetPanelMaterialAll := select( GlobalOTDTable, PanelMaterialAll, tempPMA, tempPMA.BusinessType() = "杞﹁浇" );
+      if ( not isnull( targetPanelMaterialAll ) ) {
+        this.Data( targetPanelMaterialAll );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/_ROOT_Component_FormPanelMaterialVehicle.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/_ROOT_Component_FormPanelMaterialVehicle.def
new file mode 100644
index 0000000..a4436ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialVehicle/_ROOT_Component_FormPanelMaterialVehicle.def
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelMaterialVehicle
+{
+  #keys: '[414702.0.210202229]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPanelMaterialVehicle
+    Component LabelLastSent
+    {
+      #keys: '[414702.0.211266049]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        DataBinding: 'DataHolderPanelMaterialVehicle.Data.ReleaseDate'
+        Label: '涓婃鍙戦�佹椂闂达細'
+        Taborder: 1
+      ]
+    }
+    Component DataHolderPanelMaterialVehicle
+    {
+      #keys: '[414702.0.211025504]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'PanelMaterialAll'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component ButtonFusionData
+    {
+      #keys: '[414702.0.212142601]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'COOLING_TOWER'
+        Label: '铻嶅悎鏁版嵁'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '杞﹁浇'
+    Image: 'BICYCLE'
+    Title: '杞﹁浇'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def
new file mode 100644
index 0000000..fbb5054
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListReleaseRecord
+{
+  #keys: '[414724.0.35732464]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorReleaseRecord690
+    {
+      #keys: '[414724.0.35732465]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_ReleaseRecord]'
+        Source: 'DataHolderReleaseRecord'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageReleaseRecord
+    Component DataSetLevelReleaseRecord
+    {
+      #keys: '[414724.0.35732470]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuReleaseRecord
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Issuer","title":"Issuer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Issuer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IssuingDate","title":"IssuingDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IssuingDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FinishDate","title":"FinishDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FinishDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Status","title":"Status","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Status"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VCode","title":"VCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Serial","title":"Serial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Serial"}}]'
+        ContextMenu: 'listContextMenuReleaseRecord'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def
new file mode 100644
index 0000000..6ef25a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListReleaseRecord243
+{
+  #keys: '[414724.0.41061843]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorReleaseRecord404
+    {
+      #keys: '[414724.0.41061844]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_MaterialPurchase]'
+        Source: 'DataHolderReleaseRecord319'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageReleaseRecord199
+    Component DataSetLevelReleaseRecord707
+    {
+      #keys: '[414724.0.41061849]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuReleaseRecord690
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"H_ReleaseRecord_ID","title":"H_ReleaseRecord_ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"H_ReleaseRecord_ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"H_HedgingRecord_ID","title":"H_HedgingRecord_ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"H_HedgingRecord_ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Qty","title":"Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Qty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Status","title":"Status","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Status"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IssuingDate","title":"IssuingDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IssuingDate"}}]'
+        ContextMenu: 'listContextMenuReleaseRecord690'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def
new file mode 100644
index 0000000..ae7d74e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord
+{
+  #keys: '[414724.0.37022508]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dtMonth
+    {
+      #keys: '[414724.0.37110654]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def
new file mode 100644
index 0000000..c45790c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord108
+{
+  #keys: '[414724.0.37293164]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderReleaseRecord
+    {
+      #keys: '[414724.0.37293178]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_ReleaseRecord]*'
+      Children:
+      [
+        Component DataExtractorReleaseRecord
+        {
+          #keys: '[414724.0.37293193]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_ReleaseRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    #child: ListReleaseRecord
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def
new file mode 100644
index 0000000..5c158ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord527
+{
+  #keys: '[414724.0.41061788]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderReleaseRecord319
+    {
+      #keys: '[414724.0.41061799]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_MaterialPurchase]*'
+      Children:
+      [
+        Component DataExtractorReleaseRecord661
+        {
+          #keys: '[414724.0.41061814]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_MaterialPurchase'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    #child: ListReleaseRecord243
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def
new file mode 100644
index 0000000..6f4ec7e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageReleaseRecord
+{
+  #keys: '[414724.0.35732467]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def
new file mode 100644
index 0000000..66121a1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageReleaseRecord199
+{
+  #keys: '[414724.0.41061846]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def
new file mode 100644
index 0000000..d2cf3cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuReleaseRecord
+{
+  #keys: '[414724.0.35732472]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def
new file mode 100644
index 0000000..833cb86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuReleaseRecord690
+{
+  #keys: '[414724.0.41061851]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def
new file mode 100644
index 0000000..f4cc29c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListReleaseRecord
+Response OnSelectionChanged (
+  H_ReleaseRecord selection
+) id:Response_ListReleaseRecord_OnSelectionChanged
+{
+  #keys: '[414724.0.69081721]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorReleaseRecord661.FixedFilter( "object.H_ReleaseRecord_ID() = " + selection.ID().AsQUILL());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def
new file mode 100644
index 0000000..5fc1173
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormReleaseRecord_OnCreated
+{
+  #keys: '[414724.0.37110847]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      dtMonth.Date(Date::Today());
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def
new file mode 100644
index 0000000..5161dff
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelReleaseRecord/dtMonth
+Response OnChanged () id:Response_PanelReleaseRecord_dtMonth_OnChanged
+{
+  #keys: '[414724.0.71871659]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorReleaseRecord.FixedFilter( "object.IssuingDate().Date() < " + dtMonth.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.IssuingDate().Date() >= " + dtMonth.Date().StartOfMonth().AsQUILL());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
new file mode 100644
index 0000000..28f9120
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormReleaseRecord
+{
+  #keys: '[414724.0.36870764]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component LabelReleaseRecord
+    {
+      #keys: '[414724.0.36933216]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        NumberOfColumns: 20
+        Taborder: 0
+        Text: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+      ]
+    }
+    #child: PanelReleaseRecord
+    #child: PanelReleaseRecord108
+    #child: PanelReleaseRecord527
+  ]
+  Properties:
+  [
+    Description: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+    Image: 'BULL'
+    Title: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
new file mode 100644
index 0000000..a826c6e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component Panel261
+{
+  #keys: '[414724.0.44249978]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_OK_FAAC
+    {
+      #keys: '[414724.0.44279077]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'OK'
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btn_Cancel_FAAC
+    {
+      #keys: '[414724.0.44279090]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DELETE'
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
new file mode 100644
index 0000000..f043a99
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelOptimizerGeneral718
+{
+  #keys: '[414724.0.43041017]'
+  BaseType => //PanelOptimizerGeneral
+  Children:
+  [
+    Component CheckboxRunPeggingAfterOptRun
+    {
+      #keys: '[144528.1.1789128457]'
+      BaseType => //PanelOptimizerGeneral/CheckboxRunPeggingAfterOptRun
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+    Component EditFieldMinSalesDemandQtyThreshold
+    {
+      #keys: '[144528.1.1789128515]'
+      BaseType => //PanelOptimizerGeneral/EditFieldMinSalesDemandQtyThreshold
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+    Component EditFieldUsagePercentTripCleanup
+    {
+      #keys: '[144528.1.1789128517]'
+      BaseType => //PanelOptimizerGeneral/EditFieldUsagePercentTripCleanup
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
new file mode 100644
index 0000000..49964fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelTop
+{
+  #keys: '[414724.0.43072496]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUCode_FAAC
+    {
+      #keys: '[414724.0.43602743]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'TM070RDH10-2322'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
new file mode 100644
index 0000000..9d296a3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelTop0001
+{
+  #keys: '[414724.0.43233506]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelTop
+    #child: PanelTop612
+    #child: PanelTop264
+    #child: PanelTop597
+    #child: PanelTop846
+    #child: PanelTop104
+    #child: PanelTop360
+    #child: PanelTop744
+    #child: PanelTop820
+  ]
+  Properties:
+  [
+    Border: true
+    Style: 'content'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
new file mode 100644
index 0000000..2d52f9c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop104
+{
+  #keys: '[414724.0.43764561]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomName_FAAC
+    {
+      #keys: '[414724.0.43764592]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Description: '瀹㈡埛鍚嶇О'
+        Label: '瀹㈡埛鍚嶇О'
+        NumberOfColumns: 30
+        PlaceHolder: '璇疯緭鍏�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 7
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
new file mode 100644
index 0000000..9d587c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop264
+{
+  #keys: '[414724.0.43764392]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Util_FAAC
+    {
+      #keys: '[414724.0.43764416]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鍗曚綅'
+        Label: '鍗曚綅'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'PCS'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
new file mode 100644
index 0000000..6e7e7dc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+Component PanelTop360
+{
+  #keys: '[414724.0.43764343]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component np_Qty_FAAC
+    {
+      #keys: '[414724.0.43764374]'
+      BaseType: 'WebNumberPicker'
+      Properties:
+      [
+        Label: '鏁伴噺'
+        MaximumColumns: 50
+        Min: '0'
+        NumberOfColumns: 23
+        Step: 100
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
new file mode 100644
index 0000000..861f761
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop597
+{
+  #keys: '[414724.0.43764439]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddsl_OperateType_FAAC
+    {
+      #keys: '[414724.0.44398642]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '鍙嶇'
+        Label: '鍔ㄤ綔绫诲瀷'
+        NumberOfColumns: 26
+        Strings: '鍙嶇;鎺堟潈'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 5
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
new file mode 100644
index 0000000..855b473
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop612
+{
+  #keys: '[414724.0.43764662]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Operator_FAAC
+    {
+      #keys: '[414724.0.43764687]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鎿嶄綔浜�'
+        Label: '鎿嶄綔浜�'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: '鏉庡彲'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 8
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
new file mode 100644
index 0000000..6408506
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelTop744
+{
+  #keys: '[414724.0.43764285]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUName_FAAC
+    {
+      #keys: '[414724.0.43764315]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'T1鍨嬫ā缁�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
new file mode 100644
index 0000000..8d132dd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component PanelTop820
+{
+  #keys: '[414724.0.79122768]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_NeedDate
+    {
+      #keys: '[414724.0.79122804]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Label: '闇�姹傛棩鏈�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
new file mode 100644
index 0000000..07e3ec6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop846
+{
+  #keys: '[414724.0.43764508]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomID_FAAC
+    {
+      #keys: '[414724.0.43764542]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛ID'
+        NumberOfColumns: 30
+        PlaceHolder: '璇疯緭鍏�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 6
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
new file mode 100644
index 0000000..e01820f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmAuthorizeAndCountersign_OnCreated
+{
+  #keys: '[414724.0.80341563]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      /**********************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈�*******************/
+      //瀹氫箟涓嬩竴涓槦鏈�
+      nTargetWeenNum := 5;
+      nTodayWeekNum := Date::ActualDate().DayOfWeek();
+      nAddDays := 0;
+      if( nTodayWeekNum <= nTargetWeenNum)
+      {
+        nAddDays := nTargetWeenNum-nTodayWeekNum;
+      }
+      else
+      {
+        nAddDays := 7 - nTodayWeekNum+nTargetWeenNum;
+      }
+      // 涓嬩竴涓槦鏈熺殑鏃ユ湡
+      dtNeedDate := Date::ActualDate() + nAddDays;
+      /******************************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈� 缁撴潫***********************/
+      ds_NeedDate.Date(dtNeedDate);
+      
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SKUCode_FAAC.Text(StrValue.Element( 0));
+        lb_SKUName_FAAC.Text("浜у搧");
+        lb_Operator_FAAC.Text("");
+        lb_Util_FAAC.Text(StrValue.Element( 1));
+        txt_CustomID_FAAC.Text(StrValue.Element( 2));
+        txt_CustomName_FAAC.Text(StrValue.Element( 3));
+        lb_Operator_FAAC.Text(ApplicationMacroPlanner.GetUserName());
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
new file mode 100644
index 0000000..353774e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: Panel261/btn_Cancel_FAAC
+Response OnClick () id:Response_Panel261_btn_Cancel_FAAC_OnClick
+{
+  #keys: '[414724.0.90212874]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      FrmAuthorizeAndCountersign.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
new file mode 100644
index 0000000..c34f055
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: Panel261/btn_OK_FAAC
+Response OnClick () id:Response_Panel261_btn_OK_FAAC_OnClick
+{
+  #keys: '[414724.0.56302031]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      strQty := np_Qty_FAAC.Number().AsQUILL();
+      Qty := 0;
+      if( strQty.FindString( ".",0)>0)
+      {
+        Qty := [Number]strQty.SubString( 0,strQty.FindString( ".",0));
+      }
+      else
+      {
+        Qty := [Number]strQty;
+      }
+      OperateMsg :="";
+      OperateResult := H_FunctionClass::SM_OrderReverseOrAuthorize(  MacroPlan,lb_Util_FAAC.Text() ,"-",ds_NeedDate.Date() ,txt_CustomID_FAAC.Text(),lb_SKUCode_FAAC.Text(),Qty,
+                                                            lb_Operator_FAAC.Text(),txt_CustomName_FAAC.Text(),OperateMsg,ddsl_OperateType_FAAC.Text());
+      
+      if( OperateMsg.Length()>0)
+      {
+        if( OperateResult)
+        {
+          WebMessageBox::Success( OperateMsg);
+        }
+        else
+        {
+          WebMessageBox::Warning( OperateMsg);
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
new file mode 100644
index 0000000..69e5e49
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmAuthorizeAndCountersign
+{
+  #keys: '[414724.0.41821648]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component lb_Title_FRMAAC
+    {
+      #keys: '[414724.0.41841127]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '璁㈠崟鍙嶆綔鎺堟潈鏂板椤�'
+        Taborder: 0
+        Text: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
+      ]
+    }
+    #child: PanelTop0001
+    #child: Panel261
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鎺堟潈鍜屽弽绛�'
+    Image: 'DOCUMENTS_NEW'
+    Title: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def
new file mode 100644
index 0000000..585fd28
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component Panel227
+{
+  #keys: '[414724.0.44768889]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_OK_FAACM
+    {
+      #keys: '[414724.0.44768900]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'OK'
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btn_Cancel_FAACM
+    {
+      #keys: '[414724.0.44768918]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DELETE'
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 12
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def
new file mode 100644
index 0000000..8f8ecba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel368
+{
+  #keys: '[414724.0.44768637]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddsl_OperateType_FAACM
+    {
+      #keys: '[414724.0.44768691]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '鍙嶇'
+        Label: '鎿嶄綔绫诲瀷'
+        NumberOfColumns: 26
+        Strings: '鍙嶇;鎺堟潈'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 7
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def
new file mode 100644
index 0000000..2cf1300
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel418
+{
+  #keys: '[414724.0.44768711]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomID_FAACM
+    {
+      #keys: '[414724.0.44768737]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛ID'
+        NumberOfColumns: 30
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 8
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def
new file mode 100644
index 0000000..834c7f3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+Component Panel445
+{
+  #keys: '[414724.0.44768544]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component np_Qty_FAACM
+    {
+      #keys: '[414724.0.44768568]'
+      BaseType: 'WebNumberPicker'
+      Properties:
+      [
+        Label: '鏁伴噺'
+        MaximumColumns: 50
+        Min: '0'
+        NumberOfColumns: 23
+        Step: 100
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 5
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def
new file mode 100644
index 0000000..88c30e0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel455
+{
+  #keys: '[414724.0.44768353]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SUK_FAACM
+    {
+      #keys: '[414724.0.44768369]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'TM070RDH10-23'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def
new file mode 100644
index 0000000..9bc250f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel488
+{
+  #keys: '[414724.0.44768844]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Operator_FAACM
+    {
+      #keys: '[414724.0.44768867]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鎿嶄綔浜�'
+        Taborder: 0
+        Text: '鏉庡彲'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 11
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def
new file mode 100644
index 0000000..9f57250
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel504
+{
+  #keys: '[414724.0.45008336]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label861
+    {
+      #keys: '[414724.0.45008373]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def
new file mode 100644
index 0000000..92f48e1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel523
+{
+  #keys: '[414724.0.44768447]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialCode_FAACM
+    {
+      #keys: '[414724.0.44768476]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍘熸枡缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'A1'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def
new file mode 100644
index 0000000..98be692
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel616
+{
+  #keys: '[414724.0.44768757]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomName_FAACM
+    {
+      #keys: '[414724.0.44768782]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 9
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def
new file mode 100644
index 0000000..977afd4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel645
+{
+  #keys: '[414724.0.44768399]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUName_FAACM
+    {
+      #keys: '[414724.0.44768428]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'T1鍨嬫ā缁�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def
new file mode 100644
index 0000000..00ec1d8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel694
+{
+  #keys: '[414724.0.44768495]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialName
+    {
+      #keys: '[414724.0.44768519]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍘熸枡鍚嶇О'
+        Taborder: 0
+        Text: '鐜荤拑'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def
new file mode 100644
index 0000000..c842a7b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel890
+{
+  #keys: '[414724.0.44768586]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Unit_FAACM
+    {
+      #keys: '[414724.0.44768614]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍗曚綅'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'PCS'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 6
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def
new file mode 100644
index 0000000..0abe7a4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel972
+{
+  #keys: '[414724.0.44768802]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialType_FAACM
+    {
+      #keys: '[414724.0.44768826]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鐗╂枡绫诲瀷'
+        Taborder: 0
+        Text: '鍘熸潗鏂�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 10
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
new file mode 100644
index 0000000..c03f661
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmAuthorizeAndCountersign_Material_OnCreated
+{
+  #keys: '[414724.0.113356318]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SUK_FAACM.Text(StrValue.Element( 0));
+        lb_MaterialCode_FAACM.Text(StrValue.Element( 1));
+        lb_Unit_FAACM.Text(StrValue.Element( 2));
+        lb_Operator_FAACM.Text(ApplicationMacroPlanner.GetUserName());
+      }
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        txt_CustomID_FAACM.Text(StrValue.Element( 2));
+        txt_CustomName_FAACM.Text(StrValue.Element( 3));
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def
new file mode 100644
index 0000000..211cd7d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel227/btn_Cancel_FAACM
+Response OnClick () id:Response_Panel227_btn_Cancel_FAACM_OnClick
+{
+  #keys: '[414724.0.65725554]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      FrmAuthorizeAndCountersign_Material.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def
new file mode 100644
index 0000000..4f8495f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: Panel227/btn_OK_FAACM
+Response OnClick () id:Response_Panel227_btn_OK_FAACM_OnClick
+{
+  #keys: '[414724.0.61672228]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      strQty := np_Qty_FAACM.Number().AsQUILL();
+      Qty := 0;
+      if( strQty.FindString( ".",0)>0)
+      {
+        Qty := [Number]strQty.SubString( 0,strQty.FindString( ".",0));
+      }
+      else
+      {
+        Qty := [Number]strQty;
+      }
+      OperateMsg :="";
+      OperateResult := H_FunctionClass::SM_MaterialReverse(   MacroPlan,"-",txt_CustomID_FAACM.Text(),lb_MaterialCode_FAACM.Text(),Qty,
+                                                            lb_Operator_FAACM.Text(),OperateMsg,ddsl_OperateType_FAACM.Text());
+      
+      if( OperateMsg.Length()>0)
+      {
+        if( OperateResult)
+        {
+          WebMessageBox::Success( OperateMsg);
+        }
+        else
+        {
+          WebMessageBox::Warning( OperateMsg);
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
new file mode 100644
index 0000000..748bae7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmAuthorizeAndCountersign_Material
+{
+  #keys: '[414724.0.44768276]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel455
+    #child: Panel645
+    #child: Panel523
+    #child: Panel694
+    #child: Panel445
+    #child: Panel890
+    #child: Panel368
+    #child: Panel418
+    #child: Panel616
+    #child: Panel972
+    #child: Panel488
+    #child: Panel227
+    #child: Panel504
+  ]
+  Properties:
+  [
+    Description: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+    Title: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def
new file mode 100644
index 0000000..975cea9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List710
+{
+  #keys: '[414724.0.56301766]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor332
+    {
+      #keys: '[414724.0.56301767]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_ErrorLogs]'
+        Source: 'DataHolder674'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage361
+    Component DataSetLevel407
+    {
+      #keys: '[414724.0.56301772]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu619
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EClassName","title":"EClassName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EClassName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EFunctionName","title":"EFunctionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EFunctionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EDateTime","title":"EDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorNr","title":"ErrorNr","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorNr"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DeveloperInformation","title":"DeveloperInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DeveloperInformation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DetailedInformation","title":"DetailedInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DetailedInformation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"GeneralInformation","title":"GeneralInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"GeneralInformation"}}]'
+        ContextMenu: 'listContextMenu619'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def
new file mode 100644
index 0000000..fb73e77
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage361
+{
+  #keys: '[414724.0.56301769]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def
new file mode 100644
index 0000000..2ae4bcb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu619
+{
+  #keys: '[414724.0.56301774]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def
new file mode 100644
index 0000000..23776ce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmErrorLogs
+{
+  #keys: '[414724.0.56301712]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: List710
+    Component DataHolder674
+    {
+      #keys: '[414724.0.56301734]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_ErrorLogs]*'
+      Children:
+      [
+        Component DataExtractor131
+        {
+          #keys: '[414724.0.56301746]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_ErrorLogs'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '閿欒鏃ュ織'
+    Image: 'WARNING'
+    Title: '閿欒鏃ュ織'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def
new file mode 100644
index 0000000..f24ffbd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List832
+{
+  #keys: '[414724.0.53475318]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor470
+    {
+      #keys: '[414724.0.53475319]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Product_MP]'
+        Source: 'dh_FM_PruductMP'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage456
+    Component DataSetLevel707
+    {
+      #keys: '[414724.0.53475324]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu892
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventoryLevels","title":"TotalInventoryLevels","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventoryLevels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsProductCategory","title":"IsProductCategory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsProductCategory"}}]'
+        ContextMenu: 'listContextMenu892'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
new file mode 100644
index 0000000..987148b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component Panel418
+{
+  #keys: '[414724.0.50254946]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SUK_FM
+    {
+      #keys: '[414724.0.53353887]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜锛�'
+        NumberOfColumns: 20
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FM
+    {
+      #keys: '[414724.0.53353923]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        NumberOfColumns: 15
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FM
+    {
+      #keys: '[414724.0.52966648]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鏌ヨ'
+        Taborder: 2
+      ]
+    }
+    Component btn_Add_FM
+    {
+      #keys: '[414724.0.53385964]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ADD2'
+        Label: '鏂板鍙嶇/鎺堟潈'
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def
new file mode 100644
index 0000000..77621e3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel456
+{
+  #keys: '[414724.0.53325925]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label632
+    {
+      #keys: '[414724.0.53325937]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '鍘熸枡鍒楄〃椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def
new file mode 100644
index 0000000..fd9f86e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage456
+{
+  #keys: '[414724.0.53475321]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def
new file mode 100644
index 0000000..9da1efe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu892
+{
+  #keys: '[414724.0.53475326]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def
new file mode 100644
index 0000000..4b24dec
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: List832
+Response OnSelectionChanged (
+  Product_MP selection
+) id:Response_List832_OnSelectionChanged
+{
+  #keys: '[414724.0.113297034]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmMaterial",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(lb_SUK_FM.Text()+";"+ selection.ID() +";"+selection.UnitOfMeasureName()+";");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
new file mode 100644
index 0000000..1704689
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmMaterial_OnCreated
+{
+  #keys: '[414724.0.93205703]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SUK_FM.Text(StrValue.Element( 0));
+        de_dh_FM_ProductMP.FixedFilter( "object.ParentID()="+lb_SUK_FM.Text());
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
new file mode 100644
index 0000000..6d50114
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel418/btn_Add_FM
+Response OnClick () id:Response_Panel418_btn_Add_FM_OnClick
+{
+  #keys: '[414724.0.93205915]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Application.OpenForm( "FrmAuthorizeAndCountersign_Material","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def
new file mode 100644
index 0000000..822a47c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: Panel418/btn_Query_FM
+Response OnClick () id:Response_Panel418_btn_Query_FM_OnClick
+{
+  #keys: '[414724.0.113144268]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      de_dh_FM_ProductMP.FixedFilter( "object.ID().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" );
+      //                                             + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )"  
+      //                                             + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" 
+      //                                             + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
new file mode 100644
index 0000000..899892b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmMaterial
+{
+  #keys: '[414724.0.53175071]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel456
+    #child: Panel418
+    #child: List832
+    Component dh_FM_PruductMP
+    {
+      #keys: '[414724.0.53475285]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Product_MP]*'
+      Children:
+      [
+        Component de_dh_FM_ProductMP
+        {
+          #keys: '[414724.0.53475299]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'Product_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍘熸枡鍒楄〃椤�'
+    Title: '鍘熸枡鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
new file mode 100644
index 0000000..a5ffa10
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component Panel383
+{
+  #keys: '[414724.0.86151558]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FOF
+    {
+      #keys: '[414724.0.86151747]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+        Visible: false
+      ]
+    }
+    Component txt_QueryContent_FOF
+    {
+      #keys: '[414724.0.86151766]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+        Visible: false
+      ]
+    }
+    Component btn_Query_FOF
+    {
+      #keys: '[414724.0.88914059]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鏌ヨ'
+        Image: 'VIEW'
+        Label: '鏌ヨ'
+        Taborder: 2
+        Visible: false
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    MinimumColumns: 80
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
new file mode 100644
index 0000000..9fb6eb2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+Component Panel647
+{
+  #keys: '[414724.0.86151576]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_Add_Order_FOF
+    {
+      #keys: '[414724.0.87342042]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Label: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Taborder: 1
+      ]
+    }
+    Component btn_Add_Material_FOF
+    {
+      #keys: '[414724.0.86151707]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Label: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Taborder: 2
+      ]
+    }
+    Component btn_InitialData
+    {
+      #keys: '[414724.0.93657921]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
+        Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    MinimumColumns: 20
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
new file mode 100644
index 0000000..46d28e9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+Component Panel849
+{
+  #keys: '[414724.0.87341748]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: Panel383
+    #child: Panel647
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def
new file mode 100644
index 0000000..6145b74
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel961
+{
+  #keys: '[414724.0.93502088]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label800
+    {
+      #keys: '[414724.0.93502160]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '棰勬祴鍒楄〃椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
new file mode 100644
index 0000000..bc95d75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component liH_Forecast
+{
+  #keys: '[414724.0.106554517]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor980
+    {
+      #keys: '[414724.0.106554518]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_Forecast]'
+        Source: 'dh_FOF_H_Forecast'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage729
+    Component DataSetLevel204
+    {
+      #keys: '[414724.0.106554523]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu367
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NeedTime","title":"NeedTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NeedTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Util","title":"Util","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Util"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"CustomName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"Department","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
+        ContextMenu: 'listContextMenu367'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 6
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def
new file mode 100644
index 0000000..7c8d9bb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage729
+{
+  #keys: '[414724.0.106554520]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
new file mode 100644
index 0000000..320820a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963
+{
+  #keys: '[414724.0.86151897]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def
new file mode 100644
index 0000000..979e4f8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu367
+{
+  #keys: '[414724.0.106554525]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
new file mode 100644
index 0000000..5f3683c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687
+{
+  #keys: '[414724.0.86151902]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
new file mode 100644
index 0000000..4104d43
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component list_ForecastView_FOF
+{
+  #keys: '[414724.0.86151894]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component de_list_ForecastView_FOF
+    {
+      #keys: '[414724.0.86151895]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[SalesDemandBase]'
+        Source: 'dh_FOF_Data'
+        Taborder: 0
+        Transformation: 'Elements.astype(Forecast)'
+      ]
+    }
+    #child: listActionBarPage963
+    Component DataSetLevel191
+    {
+      #keys: '[414724.0.86151900]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgNotLinkedToPeriod","title":"ImgNotLinkedToPeriod","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgNotLinkedToPeriod"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsPostponed","title":"ImgIsPostponed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsPostponed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"Quantity UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Original Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NettedQuantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NettedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfillment","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round(2)"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue(object.NettedQuantity()-object.FulfilledQuantity(),0.0).Round(2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Priority.Name","title":"Priority","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Priority.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandUncertaintyPercentage","title":"Uncertainty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandUncertaintyPercentage"}}]'
+        ContextMenu: 'listContextMenu687'
+        FixedFilter: 'object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 4
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
new file mode 100644
index 0000000..9800a96
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnClose () id:Response_FrmOrderForecast_OnClose
+{
+  #keys: '[414724.0.91684618]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebForm_OnClose'
+  QuillAction
+  {
+    Body:
+    [*
+      // 娓呯┖閫夋嫨椤�
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( not isnull( SelectItem))
+      {
+        SelectItem.Value("");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
new file mode 100644
index 0000000..4991801
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderForecast_OnCreated
+{
+  #keys: '[414724.0.91471552]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      // 鍒濆鍖栨煡璇㈠弬鏁版湀浠�
+      ds_Month_FOF.Date(Date::ActualDate());
+      // 棰勬祴鏁版嵁2姝ゅ鐞嗭紙绛涢��+瀹㈡埛鍚嶇О鎻愬彇锛�
+      if( MacroPlan.H_Forecast(relget ).Size()>0)
+      {
+        MacroPlan.H_Forecast(relget ).Delete( 0,MacroPlan.H_Forecast(relget ).Size()-1);
+      }
+      //AllData:= selectset( MacroPlan, Product_MP.SalesDemand.astype( Forecast ),object,object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() 
+      //                     and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
+      //                     and object.Quantity()>0 );
+      //
+      //CustomName:="";
+      //DepartMent:="";
+      //idx:=0;
+      //traverse( AllData,Elements,Obj,not isnull(Obj))
+      //{
+      //  idx:=Obj.SalesSegmentName().FindString( "_",0);
+      //  if(idx>0)
+      //  {
+      //    DepartMent:=Obj.SalesSegmentName().SubString( 0,idx+1);
+      //    CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
+      //  }
+      //  else
+      //  {
+      //    CustomName :=Obj.SalesSegmentName();
+      //  }
+      //  
+      //   ArrayData:=Obj.SalesSegmentName().SubString( 0,Obj.SalesSegmentName().FindString( "_",0)+1);
+      //   MacroPlan.H_Forecast(relnew,OrderCode := H_FunctionClass::SM_GenerateID( "OF"),
+      //                          SKU := Obj.ProductID(),
+      //                          CustomCode := CustomName,
+      //                         CustomName := CustomName,
+      //                         Util:=Obj.UnitOfMeasureName(),
+      //                         NeedTime:=Obj.EndDate(),
+      //                         ForecastQty:=[Number]Obj.Quantity().Round( 0),
+      //                         Department:=DepartMent);
+      //}
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
new file mode 100644
index 0000000..41a29a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: Panel383/btn_Query_FOF
+Response OnClick () id:Response_Panel383_btn_Query_FOF_OnClick
+{
+  #keys: '[414724.0.91472695]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      MacroPlan.H_Forecast(relnew, CustomName := "灏忕背",CustomCode := "XM001",ForecastQty := 100,Department := "閿�鍞�1閮�",
+                                         NeedTime := Date::ActualDate(),OrderCode := "00010101",SKU := "ANNDDSSSS",Util := "PCS");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
new file mode 100644
index 0000000..b54e053
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_Add_Material_FOF
+Response OnClick () id:Response_Panel647_btn_Add_Material_FOF_OnClick
+{
+  #keys: '[414724.0.86152486]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
new file mode 100644
index 0000000..dae89b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_Add_Order_FOF
+Response OnClick () id:Response_Panel647_btn_Add_Order_FOF_OnClick
+{
+  #keys: '[414724.0.86152095]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        Application.OpenForm( "FrmAuthorizeAndCountersign","popout");
+      }
+      else
+      {
+        WebMessageBox::Information( "璇烽�夋嫨涓�椤归娴嬪悗鍐嶇偣鍑绘寜閽紒");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
new file mode 100644
index 0000000..1804c2e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_InitialData
+Response OnClick () id:Response_Panel647_btn_InitialData_OnClick
+{
+  #keys: '[414724.0.93657952]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      // 娌℃湁鐢ㄧ殑鎸夐挳鍜屽嚱鏁帮紝鍙负浜嗘祴璇曠敓鎴愬亣鏁版嵁銆�
+      StrCustoms:="XM_2023,灏忕背;HW_2023,鍗庝负;OV_2023,VIVO;OP_2023,OPPO;HX_2023,娴蜂俊;YJ_2023,涓�鍔�;HE_2023,娴峰皵;GL_2023,鏍煎姏;";
+      ArrayCustom := StrCustoms.Tokenize( ";"); //8涓鎴�
+      idx :=0;
+      for( i:=0;i<20;i:=i+1)
+      {
+        idx :=Number::Random( 0,7);
+        arrCustomInfo := ArrayCustom.Element( idx).Tokenize( ",");
+        MacroPlan.H_Forecast(relnew, CustomName := arrCustomInfo.Element( 1),CustomCode := arrCustomInfo.Element( 0),ForecastQty := Number::Random( 100,5000),
+                              Department := "閿�鍞�1閮�",NeedTime := Date::ActualDate(),OrderCode := H_FunctionClass::SM_GenerateID( "OF") ,SKU := "SKU-CP-2023-N"+(Number::Random( 1000,9999)).AsQUILL(),Util := "PCS");  
+        
+      }
+      // 鐢熸垚棰勬祴 瀹炴椂鏁版嵁锛屽弽绛炬暟鎹紝鎺堟潈鏁版嵁锛堝弽绛� 鎺堟潈榛樿涓�0锛屽鑷姩鍒涘缓锛岃繖閲屼笉鍐嶆坊鍔狅級
+       traverse(MacroPlan,H_Forecast ,Obj,not isnull(Obj) )
+      {
+        MacroPlan.H_OrderForecastRealQty(relnew,CustomID := Obj.CustomCode(),CustomName := Obj.CustomName(),ForecatsQty := Obj.ForecastQty(),
+                                          ForecatsRealQty := Obj.ForecastQty(),ID := H_FunctionClass::SM_GenerateID( "OF"),Month := Date::ActualDate(),
+                                          OrderCode := Obj.OrderCode(),SKU := Obj.SKU(),Unit := Obj.Util());
+                                          
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
new file mode 100644
index 0000000..0fbfea6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: liH_Forecast
+Response OnDoubleClick (
+  H_Forecast selection
+) id:Response_liH_Forecast_OnDoubleClick
+{
+  #keys: '[414724.0.111761136]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
new file mode 100644
index 0000000..7f12e18
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: liH_Forecast
+Response OnSelectionChanged (
+  H_Forecast selection
+) id:Response_liH_Forecast_OnSelectionChanged
+{
+  #keys: '[414724.0.111760968]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
new file mode 100644
index 0000000..3d85f54
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: list_ForecastView_FOF
+Response OnDoubleClick (
+  Forecast selection
+) id:Response_list_ForecastView_FOF_OnDoubleClick
+{
+  #keys: '[414724.0.92081867]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      CustomID := "NO";
+      CustonName :="鏈姄鍙栧埌";
+      SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
new file mode 100644
index 0000000..582090d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: list_ForecastView_FOF
+Response OnSelectionChanged (
+  Forecast selection
+) id:Response_list_ForecastView_FOF_OnSelectionChanged
+{
+  #keys: '[414724.0.91684287]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      CustomID := "NO";
+      CustonName :="鏈姄鍙栧埌";
+      SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
new file mode 100644
index 0000000..17a5ad7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
@@ -0,0 +1,132 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderForecast
+{
+  #keys: '[414724.0.86131780]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel849
+    #child: list_ForecastView_FOF
+    Component dh_FOF_Data
+    {
+      #keys: '[414724.0.86151860]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[SalesDemandBase]*'
+      Children:
+      [
+        Component de_dh_FOF_Data
+        {
+          #keys: '[414724.0.86151875]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[SalesDemandBase]'
+            Source: 'dh_FOF_ChildrenData'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+        Component DataExtractor819
+        {
+          #keys: '[414724.0.107645127]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 1
+            Transformation: 'SalesDemand'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+    #child: Panel961
+    Component dh_FOF_ChildrenData
+    {
+      #keys: '[414724.0.106541535]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[SalesDemandBase]*'
+      Children:
+      [
+        Component de_FOF_ChildrenData_0
+        {
+          #keys: '[414724.0.106541577]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[Product_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderProduct'
+            Taborder: 0
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+        Component de_FOF_ChildrenData_1
+        {
+          #keys: '[414724.0.106541594]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[StockingPoint_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderStockingPoint'
+            Taborder: 1
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+        Component de_FOF_ChildrenData_2
+        {
+          #keys: '[414724.0.106541611]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[SalesSegment_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderSalesSegment'
+            Taborder: 2
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component dh_FOF_H_Forecast
+    {
+      #keys: '[414724.0.109053093]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_Forecast]*'
+      Children:
+      [
+        Component de_dh_FOF_H_Foecast
+        {
+          #keys: '[414724.0.106582442]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_Forecast'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 5
+      ]
+    }
+    #child: liH_Forecast
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟棰勬祴椤甸潰'
+    Image: 'GOLDFISH'
+    Title: '棰勬祴鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def
new file mode 100644
index 0000000..8a9e630
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List782
+{
+  #keys: '[414724.0.51431908]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor569
+    {
+      #keys: '[414724.0.51431909]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_OrderRecord]'
+        Source: 'DataHolder570'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage195
+    Component DataSetLevel473
+    {
+      #keys: '[414724.0.51431914]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu526
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderQty","title":"OrderQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReverseQty","title":"ReverseQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReverseQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AuthorizeQty","title":"AuthorizeQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AuthorizeQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastHitQty","title":"ForecastHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastNoHitQty","title":"ForecastNoHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastNoHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerCode","title":"CustomerCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerCode"}}]'
+        ContextMenu: 'listContextMenu526'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def
new file mode 100644
index 0000000..efc9c10
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+Component Panel445
+{
+  #keys: '[414724.0.51402312]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FOR
+    {
+      #keys: '[414724.0.50290636]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FOR
+    {
+      #keys: '[414724.0.50221115]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        NumberOfColumns: 20
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FOR
+    {
+      #keys: '[414724.0.51431855]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鎼滅储'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def
new file mode 100644
index 0000000..5261db6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel576
+{
+  #keys: '[414724.0.50290602]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label531
+    {
+      #keys: '[414724.0.50290614]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def
new file mode 100644
index 0000000..e66c687
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage195
+{
+  #keys: '[414724.0.51431911]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def
new file mode 100644
index 0000000..67992d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu526
+{
+  #keys: '[414724.0.51431916]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def
new file mode 100644
index 0000000..b632d2a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderResult_OnCreated
+{
+  #keys: '[414724.0.51432652]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ds_Month_FOR.Date(Date::Today());
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def
new file mode 100644
index 0000000..ccc66fa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: Panel445/btn_Query_FOR
+Response OnClick () id:Response_Panel445_btn_Query_FOR_OnClick
+{
+  #keys: '[414724.0.103696532]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractor568.FixedFilter( "( object.ID().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )"  
+                                                   + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.OrderDateTime() < " + ds_Month_FOR.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.OrderDateTime() >= " + ds_Month_FOR.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
new file mode 100644
index 0000000..8dfdddb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderResult
+{
+  #keys: '[414724.0.51340846]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel576
+    #child: Panel445
+    #child: List782
+    Component DataHolder570
+    {
+      #keys: '[414724.0.50261398]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_OrderRecord]*'
+      Children:
+      [
+        Component DataExtractor568
+        {
+          #keys: '[414724.0.50291048]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_OrderRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+    Title: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
new file mode 100644
index 0000000..47bbf7d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmRAShow
+{
+  #keys: '[414724.0.87341476]'
+  BaseType: 'WebForm'
+  Properties:
+  [
+    Description: '鍘熸枡鍙嶇鍜屾巿鏉冨睍绀�'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
new file mode 100644
index 0000000..a540a2e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListData_FT
+{
+  #keys: '[414724.0.58710447]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor206
+    {
+      #keys: '[414724.0.58710448]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Product_MP]'
+        Source: 'DataHolder623'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage748
+    Component DataSetLevel675
+    {
+      #keys: '[414724.0.58710453]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CanBeExported","title":"CanBeExported","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"CanBeExported"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayIndex","title":"DisplayIndex","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"DisplayIndex"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasMaturation","title":"HasMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasConversionFactor","title":"HasConversionFactor","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasConversionFactor"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","title":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasParent","title":"HasParent","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasParent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasPlanning","title":"HasPlanning","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasPlanning"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasProductLevel","title":"HasProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasRecipe","title":"HasRecipe","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasRecipe"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLife","title":"HasShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLifeOrMaturation","title":"HasShelfLifeOrMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasShelfLifeOrMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasValidProductLevel","title":"HasValidProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasValidProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IconName","title":"IconName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IconName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgHasSalesDemand","title":"ImgHasSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgHasSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsActive","title":"ImgIsActive","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsActive"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IndentationSymbol","title":"IndentationSymbol","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IndentationSymbol"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsByProduct","title":"IsByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedByProduct","title":"IsDerivedByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedExcludeFromFulfillmentKPI","title":"IsDerivedExcludeFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedExcludeFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPI","title":"IsExcludedFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromOptimization","title":"IsExcludedFromOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsImbalance","title":"IsImbalance","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsImbalance"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsIncludedInBalancing","title":"IsIncludedInBalancing","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsIncludedInBalancing"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLeaf","title":"IsLeaf","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsLeaf"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsManuallyConfigured","title":"IsManuallyConfigured","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsManuallyConfigured"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsPlannedAfterOptimization","title":"IsPlannedAfterOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsPlannedAfterOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsProductCategory","title":"IsProductCategory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsProductCategory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSoftDeleted","title":"IsSoftDeleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSoftDeleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSystem","title":"IsSystem","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSystem"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsed","title":"IsUsed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsedInProcess","title":"IsUsedInProcess","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsedInProcess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsValidData","title":"IsValidData","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsValidData"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIBalanceViolationMeta","title":"KPIBalanceViolationMeta","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIBalanceViolationMeta"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMaximumInventory","title":"KPIMaximumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMaximumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMinimumInventory","title":"KPIMinimumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMinimumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPITargetInventory","title":"KPITargetInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPITargetInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaturationDays","title":"MaturationDays","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaturationDays"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinSalesDemandQuantity","title":"MinSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MinSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaxSalesDemandQuantity","title":"MaxSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MaxSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfProductInStockingPoint","title":"NumberOfProductInStockingPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfProductInStockingPoint"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfShelfLifeViolations","title":"NumberOfShelfLifeViolations","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfShelfLifeViolations"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ParentID","title":"ParentID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ParentID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevere","title":"SanityCheckDataMostSevere","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevere"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevereCount","title":"SanityCheckDataMostSevereCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevereCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataTotalViolationCount","title":"SanityCheckDataTotalViolationCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataTotalViolationCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShelfLife","title":"ShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventoryLevels","title":"TotalInventoryLevels","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventoryLevels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventorySupply","title":"TotalInventorySupply","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventorySupply"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalSalesDemand","title":"TotalSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Type","title":"Type","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Type"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
new file mode 100644
index 0000000..a7dc33b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component Panel675
+{
+  #keys: '[414724.0.58893964]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonClear
+    {
+      #keys: '[414724.0.58893989]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'ClearDtaa'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
new file mode 100644
index 0000000..20c42d7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage748
+{
+  #keys: '[414724.0.58710450]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
new file mode 100644
index 0000000..5042401
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623
+{
+  #keys: '[414724.0.58710455]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
new file mode 100644
index 0000000..8ea5738
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: Panel675/ButtonClear
+Response OnClick () id:Response_Panel675_ButtonClear_OnClick
+{
+  #keys: '[414724.0.58894009]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      try{
+        H_FunctionClass::UpdateAuthorizeRealQty( MacroPlan);
+        /*
+        ExecuteCount :=0;
+        while(not isnull(MacroPlan.H_ReverseRealQty(relget ).First())  and ExecuteCount<20)
+        {
+          MacroPlan.H_ErrorLogs(relnew,EClassName := "1",EDateTime := DateTime::ActualGMTTime(),EFunctionName := ExecuteCount.AsQUILL());
+          ExecuteCount:=ExecuteCount+1;
+          MacroPlan.H_ReverseRealQty(relget ).First().Delete();
+        }
+        */
+      }
+      onerror{
+        MacroPlan.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                             DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                             GeneralInformation := e.GeneralInformation());
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
new file mode 100644
index 0000000..77d883c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmTEST
+{
+  #keys: '[414724.0.57640752]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListData_FT
+    Component DataHolder623
+    {
+      #keys: '[414724.0.57601078]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Product_MP]*'
+      Children:
+      [
+        Component DataExtractor391
+        {
+          #keys: '[414724.0.58771962]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'Product_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    #child: Panel675
+  ]
+  Properties:
+  [
+    Description: '娴嬭瘯绐椾綋锛屾煡鐪嬫暟鎹娇鐢�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def
new file mode 100644
index 0000000..2c4828b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component pnlContent #extension
+{
+  Children:
+  [
+    Component LabelCurrentStep #extension
+    {
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def
new file mode 100644
index 0000000..78fcf7f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: SOPWorkflowWeb
+OrphanComponent SWF_DialogCeateNextStepDefinitionDependency #extension
+{
+  Children:
+  [
+    #child: pnlContent
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw b/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw
new file mode 100644
index 0000000..7bb36cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw
@@ -0,0 +1,183 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_legacy_1
+      {
+        title: 'Currencies'
+        shown: true
+        componentID: 'FormCurrency'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 6
+        }
+        components
+        {
+          FormCurrency_PanelCurrency
+          {
+            sizeRatio: 1
+          }
+          FormCurrency_ListCurrency
+          {
+          }
+          FormCurrency_DataSetLevelCurrency
+          {
+            groupDepth: -1
+            sort: 'DESC:IsBase,Name'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 33
+            }
+            column_Base
+            {
+              columnId: 'Base'
+              dataPath: 'Base'
+              dataType: 'string'
+              title: '鍩虹'
+              index: 1
+              subtotals: ''
+              width: 30
+            }
+            column_InUse
+            {
+              columnId: 'InUse'
+              dataPath: 'InUse'
+              dataType: 'string'
+              title: 'InUse'
+              index: 2
+              subtotals: ''
+              width: 30
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Symbol
+            {
+              columnId: 'Symbol'
+              dataPath: 'Symbol'
+              dataType: 'string'
+              title: '璞″緛'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_legacy_2
+      {
+        title: 'Currency rates'
+        shown: true
+        componentID: 'FormCurrencyRates'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 7
+          columnSpan: 6
+        }
+        components
+        {
+          FormCurrencyRates_ListCurrencyRate
+          {
+          }
+          FormCurrencyRates_DataSetLevelCurrencyRate
+          {
+            groupDepth: -1
+            sort: 'DESC:Start'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 33
+            }
+            column_Start
+            {
+              columnId: 'Start'
+              dataPath: 'Start'
+              dataType: 'date'
+              title: '寮�濮�'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Rate
+            {
+              columnId: 'Rate'
+              dataPath: 'Rate'
+              dataType: 'real'
+              title: '閫熷害'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_legacy_3
+      {
+        title: 'Currency rates chart'
+        shown: true
+        componentID: 'FormCurrencyRatesChart'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 9
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormCurrencyRatesChart_DashboardChartCurrencyRates
+          {
+            SynchronizationGroup: ''
+          }
+          FormCurrencyRatesChart_DashboardChartCurrencyRates_legend
+          {
+            LegendItems:
+            [
+            ]
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: 'applicationDevelopmentActionBarPageDef'
+    group: ''
+    index: 0
+    image: 'APPLICATION_SERVER_PREFERENCES'
+    description: ''
+  }
+  formatversion: 2
+  id: 'Test_for_hedging'
+  name: 'Test for hedging'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
index b0553a3..cb94597 100644
--- a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
+++ b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
@@ -5,7 +5,7 @@
   ProjectProperties
   {
     ApplicationComponentName: 'ApplicationMacroPlanner'
-    BuildVersion: '2022.3.0.125'
+    BuildVersion: '2022.3.0.32'
     Description: 'Quintiq Macro Planner'
     ProjectKind: 'WebClient'
   }
diff --git a/_var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties b/_var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties
index 5bf9674..89de4e7 100644
--- a/_var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties
+++ b/_var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties
@@ -4,8 +4,11 @@
 _meta.type=model
 _meta.version.config=1.3
 _self.configsettype=Role
-_self.description=IT
 _self.name=Dev-21
+arg=template:serverargs
+arg.architectdependencies=
+arg.custom=""
+arg.versioncontrolmode=true
 domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
 domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
 domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
@@ -451,16 +454,56 @@
 domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
 domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
 domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
 domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
 domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
 domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
 domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
 domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
 domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
 domainmodel.mdsstoragedefinitionmanager.audittraillocation=
 domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
 domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
-domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=true
+domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
 domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
 domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
 domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
@@ -529,4 +572,4 @@
 domainmodel.soapserverinterfacedefinition.interface.utf.idescription=
 user=template:user
 user.increasestartofplanning=false
-user.sizingparameter=false
\ No newline at end of file
+user.sizingparameter=false
diff --git a/_var/_Main/ModelSettings/Common/Dev-38/_ROOT_Role_Dev-38.properties b/_var/_Main/ModelSettings/Common/Dev-38/_ROOT_Role_Dev-38.properties
new file mode 100644
index 0000000..7e6f16a
--- /dev/null
+++ b/_var/_Main/ModelSettings/Common/Dev-38/_ROOT_Role_Dev-38.properties
@@ -0,0 +1,575 @@
+#The properties belonging to _meta and _self groups are reserved. Please do not change them. Comments on these properties will not be preserved.
+_meta.application=server
+_meta.kind=Quintiq Property File
+_meta.type=model
+_meta.version.config=1.3
+_self.configsettype=Role
+_self.name=Dev-38
+arg=template:serverargs
+arg.architectdependencies=
+arg.custom=""
+arg.versioncontrolmode=true
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.connection=DBODBC1
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.parameters=/datasource=CIM_Carco /owner=dbo /user=quintiq
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.connection=dbodbc1
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.parameters=/datasource=otd /owner=OTD /chardatatypeforstring /characterencoding=UTF-8 /appdatatypeforstring=wchar
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.password=1 A205E2668CFBD9365E030C36BB0A4297 730524bf-f9c9-426f-94a0-953687be1178
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject.parameters=/datasource=MPERPIntegrationDataSource /owner=dbo /user=quintiq
+domainmodel.fileprovider.qdrive=template:domainmodel.fileprovider.qdrive
+domainmodel.fileprovider.qdrive.enabled=true
+domainmodel.fileprovider.qdrive.readonly=false
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint=template:domainmodel.integratorconfig.dsendpoint
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.connectiontimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dspassword=1 D27640F00F09F1085D52409202B71B4E 2a9f48ef-2467-4394-afcb-75e45a1c40d9
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsserviceurl=https://vdemopro1342dsy.extranet.3ds.com/3DSpace/resources/v1/model/
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsuser=Push
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.maxconnections=10
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.receivecontentcharset=ASCII
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.requesttimeout=60
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
+domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
+domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
+domainmodel.mdsstoragedefinitionmanager.audittraillocation=
+domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
+domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
+domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
+domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+#domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+domainmodel.mdsstoragedefinitionmanager.driver=OCI
+domainmodel.mdsstoragedefinitionmanager.dssfilesystemenabled=false
+domainmodel.mdsstoragedefinitionmanager.maxcolumnname=0
+domainmodel.mdsstoragedefinitionmanager.maxtablename=0
+domainmodel.mdsstoragedefinitionmanager.name=dbodbc1
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasichost=10.110.14.50
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicport=1521
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicservice=totddb_it
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontnsname=
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontype=Basic
+domainmodel.mdsstoragedefinitionmanager.parameters=/datasource=MacroPlannerInternalDB /user=otdit
+domainmodel.mdsstoragedefinitionmanager.password=1 2A801D084589485925DA39115D5C7855 b91e3007-e230-4ef5-833e-a07edfc8903c
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetkind=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.hostname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.password=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.timeout=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.username=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.password=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.timeout=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.username=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.password=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.username=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.url=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.encodingstrategy=UseSameAsRequest
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.exporttzoffset=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.forssl=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.groupname=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.idescription=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.securecommunication.protocols=TLSv1,TLSv1.1,TLSv1.2
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.timezone=GMT
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.useoslocaltimezone=true
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.url=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.url=
+domainmodel.soapserverinterfacedefinition.interface.utf=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.utf.groupname=
+domainmodel.soapserverinterfacedefinition.interface.utf.idescription=
+user=template:user
+user.increasestartofplanning=false
+user.sizingparameter=false
diff --git a/_var/_Main/ModelSettings/Common/Dev-40/_ROOT_Role_Dev-40.properties b/_var/_Main/ModelSettings/Common/Dev-40/_ROOT_Role_Dev-40.properties
new file mode 100644
index 0000000..26cfcab
--- /dev/null
+++ b/_var/_Main/ModelSettings/Common/Dev-40/_ROOT_Role_Dev-40.properties
@@ -0,0 +1,575 @@
+#The properties belonging to _meta and _self groups are reserved. Please do not change them. Comments on these properties will not be preserved.
+_meta.application=server
+_meta.kind=Quintiq Property File
+_meta.type=model
+_meta.version.config=1.3
+_self.configsettype=Role
+_self.name=Dev-40
+arg=template:serverargs
+arg.architectdependencies=
+arg.custom=""
+arg.versioncontrolmode=true
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.connection=DBODBC1
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.parameters=/datasource=CIM_Carco /owner=dbo /user=quintiq
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.connection=dbodbc1
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.parameters=/datasource=otd /owner=OTD /chardatatypeforstring /characterencoding=UTF-8 /appdatatypeforstring=wchar
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.password=1 A205E2668CFBD9365E030C36BB0A4297 730524bf-f9c9-426f-94a0-953687be1178
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject.parameters=/datasource=MPERPIntegrationDataSource /owner=dbo /user=quintiq
+domainmodel.fileprovider.qdrive=template:domainmodel.fileprovider.qdrive
+domainmodel.fileprovider.qdrive.enabled=true
+domainmodel.fileprovider.qdrive.readonly=false
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint=template:domainmodel.integratorconfig.dsendpoint
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.connectiontimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dspassword=1 D27640F00F09F1085D52409202B71B4E 2a9f48ef-2467-4394-afcb-75e45a1c40d9
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsserviceurl=https://vdemopro1342dsy.extranet.3ds.com/3DSpace/resources/v1/model/
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsuser=Push
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.maxconnections=10
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.receivecontentcharset=ASCII
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.requesttimeout=60
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
+domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
+domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
+domainmodel.mdsstoragedefinitionmanager.audittraillocation=
+domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
+domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
+domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
+domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+#domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+domainmodel.mdsstoragedefinitionmanager.driver=OCI
+domainmodel.mdsstoragedefinitionmanager.dssfilesystemenabled=false
+domainmodel.mdsstoragedefinitionmanager.maxcolumnname=0
+domainmodel.mdsstoragedefinitionmanager.maxtablename=0
+domainmodel.mdsstoragedefinitionmanager.name=dbodbc1
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasichost=10.110.14.50
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicport=1521
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicservice=totddb_it
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontnsname=
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontype=Basic
+domainmodel.mdsstoragedefinitionmanager.parameters=/datasource=MacroPlannerInternalDB /user=otdit
+domainmodel.mdsstoragedefinitionmanager.password=1 2A801D084589485925DA39115D5C7855 b91e3007-e230-4ef5-833e-a07edfc8903c
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetkind=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.hostname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.password=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.timeout=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.username=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.password=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.timeout=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.username=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.password=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.username=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.url=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.encodingstrategy=UseSameAsRequest
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.exporttzoffset=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.forssl=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.groupname=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.idescription=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.securecommunication.protocols=TLSv1,TLSv1.1,TLSv1.2
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.timezone=GMT
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.useoslocaltimezone=true
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.url=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.url=
+domainmodel.soapserverinterfacedefinition.interface.utf=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.utf.groupname=
+domainmodel.soapserverinterfacedefinition.interface.utf.idescription=
+user=template:user
+user.increasestartofplanning=false
+user.sizingparameter=false
diff --git a/_var/_Main/ModelSettings/Common/Dev-42/_ROOT_Role_Dev-42.properties b/_var/_Main/ModelSettings/Common/Dev-42/_ROOT_Role_Dev-42.properties
new file mode 100644
index 0000000..72cac08
--- /dev/null
+++ b/_var/_Main/ModelSettings/Common/Dev-42/_ROOT_Role_Dev-42.properties
@@ -0,0 +1,575 @@
+#The properties belonging to _meta and _self groups are reserved. Please do not change them. Comments on these properties will not be preserved.
+_meta.application=server
+_meta.kind=Quintiq Property File
+_meta.type=model
+_meta.version.config=1.3
+_self.configsettype=Role
+_self.name=Dev-42
+arg=template:serverargs
+arg.architectdependencies=
+arg.custom=""
+arg.versioncontrolmode=true
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.destination.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.exportcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.connection=DBODBC1
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.parameters=/datasource=CIM_Carco /owner=dbo /user=quintiq
+domainmodel.ediremotedatasourcedefinition.remotestorage.importcim.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcampaignsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputcurrenciesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputentitycostsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputglobalparametersfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputgroupsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventoryspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputinventorysuppliesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputlanesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputperioddefinitionsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputpostponementsandfulfillmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputprioritiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputproductsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputrecipesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputroutingsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalesdemandsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsalessegmentsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputshiftpatternsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputstockingpointsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputsupplyspecificationsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitavailabilitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcalendarelementsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitcapacitiesfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitofmeasuresfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfromexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.connection=dbodbc1
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.parameters=/datasource=otd /owner=OTD /chardatatypeforstring /characterencoding=UTF-8 /appdatatypeforstring=wchar
+domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.password=1 A205E2668CFBD9365E030C36BB0A4297 730524bf-f9c9-426f-94a0-953687be1178
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcampaignstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputcurrenciestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputentitycoststomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputforecaststoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparameterstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputglobalparamterstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputgroupstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventoryspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputinventorysuppliestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputlanestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionsfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputperioddefinitionstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxcolumnnamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.maxtablenamelength=0
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputpostponementsandfulfillmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputprioritiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputproductstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputrecipestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputroutingstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalesdemandstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsalessegmentstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputshiftpatternstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputstockingpointstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputsupplyspecificationstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputtransportcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitavailabilitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcalendarelementstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiesfrommodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitcapacitiestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitofmeasurestomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.connection=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.parameters=
+domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel.password=
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject.parameters=/datasource=MPERPIntegrationDataSource /owner=dbo /user=quintiq
+domainmodel.fileprovider.qdrive=template:domainmodel.fileprovider.qdrive
+domainmodel.fileprovider.qdrive.enabled=true
+domainmodel.fileprovider.qdrive.readonly=false
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint=template:domainmodel.integratorconfig.dsendpoint
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.connectiontimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dspassword=1 D27640F00F09F1085D52409202B71B4E 2a9f48ef-2467-4394-afcb-75e45a1c40d9
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsserviceurl=https://vdemopro1342dsy.extranet.3ds.com/3DSpace/resources/v1/model/
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.dsuser=Push
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.maxconnections=10
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.receivecontentcharset=ASCII
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.requesttimeout=60
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
+domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
+domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
+domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
+domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
+domainmodel.mdsstoragedefinitionmanager.audittraillocation=
+domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
+domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
+domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
+domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
+domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+#domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
+domainmodel.mdsstoragedefinitionmanager.driver=OCI
+domainmodel.mdsstoragedefinitionmanager.dssfilesystemenabled=false
+domainmodel.mdsstoragedefinitionmanager.maxcolumnname=0
+domainmodel.mdsstoragedefinitionmanager.maxtablename=0
+domainmodel.mdsstoragedefinitionmanager.name=dbodbc1
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasichost=10.110.14.50
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicport=1521
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicservice=totddb_it
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontnsname=
+domainmodel.mdsstoragedefinitionmanager.ociconnectiontype=Basic
+domainmodel.mdsstoragedefinitionmanager.parameters=/datasource=MacroPlannerInternalDB /user=otdit
+domainmodel.mdsstoragedefinitionmanager.password=1 2A801D084589485925DA39115D5C7855 b91e3007-e230-4ef5-833e-a07edfc8903c
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetkind=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.hostname=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.password=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.timeout=
+domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.username=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.password=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.timeout=
+domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces.username=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients=template:domainmodel.soapclientinterfacedefinition
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.endpoint=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.groupname=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.idescription=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.password=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.sslkeystore=
+domainmodel.soapclientinterfacedefinition.interface.sopworkflowclients.username=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.libdef_soapserver.url=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.encodingstrategy=UseSameAsRequest
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.exporttzoffset=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.forssl=false
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.groupname=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.idescription=
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.securecommunication.protocols=TLSv1,TLSv1.1,TLSv1.2
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.timezone=GMT
+domainmodel.soapserverinterfacedefinition.interface.monitoringlibrarysoap.useoslocaltimezone=true
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopdsscserverinterface.url=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.groupname=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.idescription=
+domainmodel.soapserverinterfacedefinition.interface.sopworkflowserver.url=
+domainmodel.soapserverinterfacedefinition.interface.utf=template:domainmodel.soapserverinterfacedefinition
+domainmodel.soapserverinterfacedefinition.interface.utf.groupname=
+domainmodel.soapserverinterfacedefinition.interface.utf.idescription=
+user=template:user
+user.increasestartofplanning=false
+user.sizingparameter=false

--
Gitblit v1.9.3