From 0b288e121e532eacae485608cd8f2ae497977faa Mon Sep 17 00:00:00 2001
From: yypsybs <yypsybs@foxmail.com>
Date: 星期一, 18 九月 2023 17:02:36 +0800
Subject: [PATCH] Merge branch 'dev' into dev_yx

---
 _Main/BL/Type_PanelMaterialIT/Attribute_CurrencyID.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_PriorityName.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_ID.qbl                                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_IsEligibleForNetting.qbl                                                                                            |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_Quantity.qbl                                                                                                        |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_ID.qbl                                                                                                              |    7 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_CurrencyID.qbl                                                                                                   |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_Quantity.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_PriorityName.qbl                                                                                                 |    7 
 _Main/BL/EDI/Broker_Broker_OTD_Product.qbl                                                                                                                       |    1 
 _Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl                                                                               |    4 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                               |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_ProductID.qbl                                                                                                         |    6 
 _Main/BL/Type_PanelMaterialTM17/Attribute_OrderID.qbl                                                                                                            |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_CustomerID.qbl                                                                                                      |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_CustomerID.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlActions.def                                                                          |   40 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_SalesAmount.qbl                                                                                                 |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_VerNo.qbl                                                                                                    |    6 
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateTestData.qbl                                                                                           |   21 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_UnitOfMeasureName.qbl                                                                                    |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderLineID.qbl                                                                                       |    6 
 _Main/BL/Type_Lane/StaticMethod_CreateLane.qbl                                                                                                                   |    2 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProfitabilityLevel.qbl                                                                                    |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsEligibleForNetting.qbl                                                                           |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/_ROOT_Type_PanelMaterialAutomotiveElectronics.qbl                                                               |   10 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_Price.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_Quantity.qbl                                                                                                        |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_UnitOfMeasureName.qbl                                                                                               |    8 
 _Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl                                                                      |   48 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsEligibleForNetting.qbl                                                                                 |    7 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_Quantity.qbl                                                                                                    |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_CustomerID.qbl                                                                                            |    6 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastDemandDate.qbl                                                                                          |    7 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_ServiceType.qbl                                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlContent.def                                                                  |   86 
 _Main/BL/Type_PanelMaterialIT/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listContextMenuHistoricalSalesOrders.def                                               |   46 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuEdit_OnClick.def                                                          |   20 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/QuintiqEndpoint_QuintiqEndpoint.qbl                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def                                                           |   15 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_Price.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Customer.qbl                                                                                          |    7 
 _Main/BL/Type_PanelMaterialIT/_ROOT_Type_PanelMaterialIT.qbl                                                                                                     |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def                                                                        |   16 
 _Main/BL/Type_PanelMaterialTM18/Attribute_IsFirmed.qbl                                                                                                           |    7 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_UnitOfMeasureName.qbl                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_UnitOfMeasureName.qbl                                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_Menurelease.def                                                                                |   23 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_StockingPointID.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderLineID.qbl                                                                                                |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_Customer.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_UnitOfMeasureName.qbl                                                                                 |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_IsFirmed.qbl                                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Component_listActionBarPageBusinessType#675.def                                                                    |   10 
 _Main/BL/Type_PanelMaterialTM17/Attribute_SalesSegmentName.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_Edit.def                                                                              |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def                                |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def                                     |   35 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/RestEndpoint_RestEndpointPanelMaterial.qbl                                                   |   10 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderID.qbl                                                                                                 |    6 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_StockingPointID.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_Quantity.qbl                                                                                                        |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_RewindsQuantityToReduced.qbl                                                                              |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_ProductID.qbl                                                                                                            |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderDate.qbl                                                                                             |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_Customer.qbl                                                                                                     |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsFirmed.qbl                                                                                          |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsEligibleForNetting.qbl                                                                                    |    7 
 _Main/UI/MacroPlanner/Component_FormProducts/Component_ListProduct.def                                                                                           |   42 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listContextMenuData.def                                                                  |   62 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_Edit.def                                                                                 |   17 
 _Main/BL/Type_PanelMaterialTM17/Attribute_Customer.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def                                                                                   |   25 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderID.qbl                                                                                        |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderLineID.qbl                                                                                    |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnCancel_OnClick.def                                              |   15 
 _Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl                                                                                           |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlContent.def                                                                          |   24 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_ID.qbl                                                                                                           |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuDelete_OnClick.def                                          |   19 
 _Main/BL/Type_PanelMaterialIT/Attribute_CustomerID.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/_ROOT_Component_FormPanelPullPlanReport.def                                                        |   17 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_PriorityName.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_Filling.def                                                                        |   15 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_Customer.qbl                                                                                                    |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_Customer.qbl                                                                                                        |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderLineID.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_New.def                                                                                  |   17 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_Price.qbl                                                                                                             |    7 
 _Main/BL/Type_MacroPlan/Method_MappingProductData.qbl                                                                                                            |    4 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                             |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_UnitOfMeasureName.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews#633.def                                                         |   22 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_PriorityName.qbl                                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/_ROOT_Component_DialogFillingCapacityOrder.def                                                  |   42 
 _Main/BL/Type_PanelMaterialAll/Attribute_releaseDate.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_SalesSegmentName.qbl                                                                                  |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_ReleaseFillingScheme.qbl                                                                                  |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelData#431.def                                                                        |   14 
 _Main/BL/Relations/Relation_PanelMaterialVehicle_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl                                                              |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listActionBarPageCustomerAndFillingCapacityOrder.def                                   |   10 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_OrderID.qbl                                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def                   |   18 
 _Main/BL/Relations/Relation_HistoricalFillingCapacityOrder_MacroPlan_MacroPlan_HistoricalFillin.qbl                                                              |   23 
 _Main/BL/Relations/Relation_PanelMaterialIT_PanelMaterialAll_PanelMaterialAll_PanelMaterialIT.qbl                                                                |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listContextMenuWorkOrderType.def                                                               |   62 
 _Main/BL/Relations/Relation_PanelMaterialTM18_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl                                                              |   23 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_Customer.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Component_listContextMenuBusinessType655.def                                                                       |   46 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listActionBarPageHistoricalSalesOrders.def                                             |   10 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsEligibleForNetting.qbl                                                                              |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CurrencyID.qbl                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonRefresh_OnClick.def                                            |   24 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetUnitOfMeasuresString.qbl                                                                                      |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelPanelPullPlanReport.def                                                             |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuEdit_OnClick.def                                          |   20 
 _Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl                                                                                        |   65 
 _Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl                                                                                                    |    5 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ProductID.qbl                                                                                               |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Customer.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def                                                                      |   18 
 _Main/BL/Type_PanelMaterialTM18/Attribute_PriorityName.qbl                                                                                                       |    7 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl                                                                                                       |   15 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageSales.def                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Views/填产方案列表.vw                                                                                                                      |  194 +
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                             |    7 
 _Main/BL/ConfigTemplates.properties                                                                                                                              |    4 
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl                                                                               |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuNew_OnClick.def                                           |   26 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnOk_OnClick.def                                                     |   15 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_SalesSegmentName.qbl                                                                                             |    6 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                                |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Price.qbl                                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnUserSelectionChanged.def |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Method_OpenScheme.def                                                                            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def                                                      |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listActionBarPageFillingCapacityOrder.def                                               |   10 
 _Main/BL/Type_FillingCapacityOrder/Attribute_IsFilling.qbl                                                                                                       |    7 
 _Main/BL/Type_WorkOrderType/Attribute_ID.qbl                                                                                                                     |    8 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ForecastDemandDate.qbl                                                                                    |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_SalesAmount.qbl                                                                                           |    7 
 _Main/BL/Type_PanelMaterialAll/_ROOT_Type_PanelMaterialAll.qbl                                                                                                   |    9 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_Customer.qbl                                                                                                        |    6 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_PanelBigSheetQuantity.qbl                                                                                       |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                  |    7 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_ReceivingPanelMaterials.qbl                                                                                            |   13 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsFirmed.qbl                                                                                             |    7 
 _Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl                                                                                      |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuDelete_OnClick.def                                                           |   18 
 _Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl                                                                                                     |    5 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_ProductID.qbl                                                                                                    |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_OrderDate.qbl                                                                                                       |    7 
 _Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_SynchronizeInventoryTargets.qbl                                                                     |   41 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_CurrencyID.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/_ROOT_Component_DialogFillingOrderScheme.def                                                      |   32 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlActions.def                                                                                |   40 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnOk_OnClick.def                                                  |   35 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SalesSegmentName.qbl                                                                                         |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                                |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_OrderLineID.qbl                                                                                                     |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_StockingPointID.qbl                                                                                    |    6 
 _Main/BL/Type_PanelMaterialTM18/Attribute_Customer.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_OrderID.qbl                                                                                                         |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderID.qbl                                                                                                      |    6 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_BusinessType.qbl                                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlContent.def                                                                       |  109 
 _Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl                                                                                                           |    2 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_Price.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_StockingPointID.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_StockingPointID.qbl                                                                                            |    7 
 _Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl                                                                                                                 |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnCancel_OnClick.def                                                               |   15 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_DemandDate.qbl                                                                                                  |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_PriorityName.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuEdit_OnClick.def                                                             |   20 
 _Main/BL/Type_PanelMaterial/Attribute_PanelModel.qbl                                                                                                             |    8 
 _Main/BL/Type_FillingCapacityOrder/Attribute_UnitOfMeasureName.qbl                                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuCreate_OnClick.def                                                           |   22 
 _Main/BL/Relations/Relation_PanelMaterialSpecializedDisplay_PanelMaterialAll_PanelMaterialAll_P.qbl                                                              |   23 
 _Main/BL/Type_PanelMaterial/Attribute_DemandQuantity.qbl                                                                                                         |    8 
 _Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl                                                                                              |   34 
 _Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl                                                                                                       |    2 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CustomerID.qbl                                                                                           |    7 
 _Main/BL/Relations/Relation_WorkOrderType_GlobalOTDTable_GlobalOTDTable_WorkOrderType.qbl                                                                        |   23 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_ProductID.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_Customer.qbl                                                                                                             |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_OrderID.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_PriorityName.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_Price.qbl                                                                                                              |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_ProductID.qbl                                                                                                    |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_SalesSegmentName.qbl                                                                                        |    6 
 _Main/BL/Type_PanelMaterialTM18/Attribute_SalesSegmentName.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_Quantity.qbl                                                                                                             |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID0.qbl                                                                                         |    6 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_StockingPointID.qbl                                                                                                 |    7 
 _Main/UI/MacroPlanner/Component_FormProducts/Component_SplitterWnd8.def                                                                                          |   14 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderID.qbl                                                                                                         |    6 
 _Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl                                                                                              |   23 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_Customer.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_ID.qbl                                                                                                                |    6 
 _Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl                                                                                                      |   22 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Component_ListBusinessType.def                                                                                     |   59 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_ProductID.qbl                                                                                                       |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Customer.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def                                                            |   60 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonSend_OnClick.def                                               |   24 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_IsEligibleForNetting.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuEdit_OnClick.def                                                                     |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_ClickBtnOk.def                                                                          |   25 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_PriorityName.qbl                                                                                                    |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_PriorityName.qbl                                                                                                 |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Customer.qbl                                                                                                |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/_ROOT_Component_DialogFillingCustomerAndForecast.def                                      |   42 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_ID.qbl                                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnOk_OnClick.def                                                                   |   15 
 _Main/BL/Type_FillingCapacityOrder/Attribute_Customer.qbl                                                                                                        |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_ProductID.qbl                                                                                                |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_BusinessType.qbl                                                                                       |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_ProductID.qbl                                                                                                  |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_SalesSegmentName.qbl                                                                                                     |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_FillingType.qbl                                                                                           |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_IsEligibleForNetting.qbl                                                                                            |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_IsRelease.qbl                                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuSaveScheme_OnClick.def                                      |   19 
 _Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_Customer.qbl                                                                                              |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnCancel_OnClick.def                                                    |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listActionBarPageHistoricalFillingCapacityOrder.def                           |   10 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderDate.qbl                                                                                            |    7 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetStockingPointString.qbl                                                                                       |   25 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl                                                                                         |   23 
 _Main/BL/Type_PanelMaterialIT/Attribute_StockingPointID.qbl                                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlActions.def                                                                     |   40 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_UnitOfMeasureName.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Quantity.qbl                                                                                          |    6 
 _Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl                                                                                        |   65 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_ClickBtnOk.def                                                                           |   25 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnCancel_OnClick.def                                                 |   15 
 _Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuDelete_OnClick.def                                                                   |   19 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderLineID.qbl                                                                                       |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_UnitOfMeasureName.qbl                                                                              |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_BusinessType.qbl                                                                                                 |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_VerNo.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_SalesSegmentName.qbl                                                                                     |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_CurrencyID.qbl                                                                                                      |    7 
 _Main/BL/Type_Product_MP/Attribute_IsPanelMaterial.qbl                                                                                                           |    8 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsFirmed.qbl                                                                                                |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SalesSegmentName.qbl                                                                                      |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_StockPointID.qbl                                                                                                    |    8 
 _Main/BL/Type_PanelMaterialVehicle/_ROOT_Type_PanelMaterialVehicle.qbl                                                                                           |   10 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderID.qbl                                                                                                    |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_Price.qbl                                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def                                                                    |   22 
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl                                                                                            |    2 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_IsEligibleForNetting.qbl                                                                                            |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderDate.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form367/_ROOT_Component_FormBusinessType#367.def                                                                           |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listActionBarPageFillingSchemeDetail.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def                                                 |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuNew_OnClick.def                                             |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport#136.def                                     |   16 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_UnitOfMeasureName.qbl                                                                                 |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_UnitOfMeasureName.qbl                                                                                       |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_ProductID.qbl                                                                                                       |    6 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                                        |    1 
 _Main/BL/Relations/Relation_PanelMaterialTM17_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl                                                              |   23 
 _Main/BL/Relations/Relation_PanelMaterial_MacroPlan_MacroPlan_PanelMaterial.qbl                                                                                  |   23 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderID.qbl                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_listActionBarPageFillingScheme.def                                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlActions.def                                                                  |   40 
 _Main/BL/Type_PanelMaterialIT/Attribute_OrderLineID.qbl                                                                                                          |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_IsFirmed.qbl                                                                                                             |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_IsEligibleForNetting.qbl                                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def                                                    |   16 
 _Main/BL/Type_BusinessType/Attribute_BusinessTypeName.qbl                                                                                                        |    7 
 _Main/BL/Type_WorkOrderType/Attribute_TypeName.qbl                                                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/_ROOT_Component_DialogCreateEditWorkOrderType.def                                            |   41 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/_ROOT_Component_DialogCreateEditPanelPullPlanReport.def                                |   31 
 _Main/BL/Type_PanelMaterialTM17/Attribute_ProductID.qbl                                                                                                          |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_VerNo.qbl                                                                                                           |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID0.qbl                                                                                            |    7 
 _Main/BL/Type_PanelMaterial/_ROOT_Type_PanelMaterial.qbl                                                                                                         |    9 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_IsEligibleForNetting.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_SalesSegmentName.qbl                                                                                                |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderID.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_StockingPointID.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_StockingPointID.qbl                                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def                                            |    9 
 _Main/BL/Type_FillingCapacityOrder/_ROOT_Type_FillingCapacityOrder.qbl                                                                                           |    9 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderID.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_IsFirmed.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_CustomerID.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterial/Attribute_StartDate.qbl                                                                                                              |    8 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_UnitOfMeasureName.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_SalesSegmentName.qbl                                                                                                |    6 
 _Main/Sys/Integration/Structure/PanelMaterialResponseResult_from.xml                                                                                             |    0 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def                                                      |   36 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_CustomerID.qbl                                                                                                      |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_NewWorkOrderType.def                                                                  |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_MenuRelease_OnClick.def                                                       |   24 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_IsFirmed.qbl                                                                                                        |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_DemandDate.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderID.qbl                                                                                                         |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_CustomerID.qbl                                                                                         |    6 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_CustomerID.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CurrencyID.qbl                                                                                        |    7 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerString.qbl                                                                                            |   28 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_SalesSegmentName.qbl                                                                                                  |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listContextMenuFillingCapacityOrder.def                                                 |   57 
 _Main/BL/Type_PanelMaterialIT/Attribute_PriorityName.qbl                                                                                                         |    7 
 _Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl                                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuDelete_OnClick.def                                        |   19 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_Customer.qbl                                                                                                     |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Customer.qbl                                                                                          |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/_ROOT_Type_PanelMaterialSportsHealth.qbl                                                                                 |   10 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeName.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_OrderLineID.qbl                                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/_ROOT_Component_DialogBusinessType.def                                                                  |   41 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_UnitOfMeasureName.qbl                                                                                  |    6 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_ProductID.qbl                                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail#802.def                                                |   41 
 _Main/BL/Type_PanelMaterialTM18/Attribute_UnitOfMeasureName.qbl                                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp                                                                                                  |    2 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_StockingPointID.qbl                                                                                      |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_VerNo.qbl                                                                                              |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_Customer.qbl                                                                                                        |    8 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_IsFirmed.qbl                                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlActions.def                                                               |   40 
 _Main/BL/Type_PanelMaterialTM17/Attribute_PriorityName.qbl                                                                                                       |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsEligibleForNetting.qbl                                                                                         |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsFirmed.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def                                                                        |  125 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_ProductID.qbl                                                                                                       |    6 
 _Main/BL/Type_FillingCapacityOrder/Attribute_ForecastDemandDate.qbl                                                                                              |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/_ROOT_Type_FilllingCapacityOrderScheme.qbl                                                                             |    9 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_StockingPointID.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_ListWorkOrderType.def                                                                          |   59 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlActions.def                                                                        |   40 
 _Main/BL/Type_BusinessType/_ROOT_Type_BusinessType.qbl                                                                                                           |   10 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_OrderDate.qbl                                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def                                        |   41 
 _Main/BL/Type_BusinessType/StaticMethod_CreateData.qbl                                                                                                           |   25 
 _Main/BL/Type_GlobalDTOTable/Method_RefreshPanelMaterialData.qbl                                                                                                 |   23 
 _Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl                                                                                                               |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CurrencyID.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl                                                                                   |   65 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                  |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CustomerID.qbl                                                                                        |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_OrderID.qbl                                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlContent.def                                                               |   58 
 _Main/BL/Relations/Relation_BusinessType_GlobalOTDTable_GlobalOTDTable_BusinessType.qbl                                                                          |   23 
 _Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl                                                                                                      |    4 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsFirmed.qbl                                                                                          |    7 
 _Main/BL/Relations/Relation_FilllingCapacityOrderScheme_MacroPlan_MacroPlan_FilllingCapacityOrd.qbl                                                              |   23 
 _Main/BL/Type_CustomerAndForecastOrder/_ROOT_Type_CustomerAndForecastOrder.qbl                                                                                   |    9 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_SalesSegmentName.qbl                                                                                                |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Quantity.qbl                                                                                                |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CustomerID.qbl                                                                                     |    6 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_CurrencyID.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_Price.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ID.qbl                                                                                                |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_IsEligibleForNetting.qbl                                                                                               |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_OrderDate.qbl                                                                                                       |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_BusinessType.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonPullData_OnClick.def               |   16 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_New.def                                                                                          |   15 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_CustomerID.qbl                                                                                                   |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def                        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/_ROOT_Component_FormWorkOrderType.def                                                                    |   17 
 _Main/BL/Type_PanelMaterialTM17/Attribute_ID.qbl                                                                                                                 |    7 
 _Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl                                                                                                   |   28 
 _Main/BL/Type_PanelMaterialIT/Attribute_Price.qbl                                                                                                                |    7 
 _Main/BL/Type_WorkOrderType/_ROOT_Type_WorkOrderType.qbl                                                                                                         |    9 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CustomerID.qbl                                                                                        |    6 
 _Main/BL/Relations/Relation_FilllingCapacityOrderScheme_FillingCapacityOrder_FillingCapacityOrd.qbl                                                              |   23 
 _Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_GetFillingSchemeDetails.qbl                                                                               |   16 
 _Main/BL/Type_PanelMaterialIT/Attribute_ID.qbl                                                                                                                   |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_OrderLineID.qbl                                                                                                     |    8 
 _Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl                                                                                                      |    2 
 _Main/BL/Type_FillingCapacityOrder/Attribute_CustomerID.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_SalesSegmentName.qbl                                                                               |    6 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_IsFirmed.qbl                                                                                                        |    7 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_VerNo.qbl                                                                                                       |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_SalesAmount.qbl                                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def                   |   19 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsFirmed.qbl                                                                                                     |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Quantity.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_OrderLineID.qbl                                                                                                       |    6 
 _Main/BL/Type_PanelMaterialAll/Attribute_ScenarioName.qbl                                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_Edit.def                                                                                         |   17 
 _Main/BL/Type_PanelMaterialAll/Attribute_BusinessType.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_Quantity.qbl                                                                                                           |    7 
 _Main/BL/Relations/Relation_FillingCapacityOrder_MacroPlan_MacroPlan_FillingCapacityOrder.qbl                                                                    |   23 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_OrderID.qbl                                                                                                         |    8 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_SalesSegmentName.qbl                                                                                                |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_Customer.qbl                                                                                                 |    6 
 _Main/BL/Type_PanelMaterialTM18/Attribute_StockingPointID.qbl                                                                                                    |    7 
 _Main/Sys/Integration/Structure/PanelMaterialResponseResult_to.xml                                                                                               |    0 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def                                                                          |   59 
 _Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl                                                                               |   89 
 _Main/BL/Type_PanelMaterialTM18/Attribute_ProductID.qbl                                                                                                          |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_BusinessType.qbl                                                                                             |    6 
 _Main/BL/Type_FillingCapacityOrder/Attribute_ProductID.qbl                                                                                                       |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_StockingPointID.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_OrderLineID.qbl                                                                                                        |    7 
 _Main/BL/Type_FillingCapacityOrder/DefaultValue_IsFilling.qbl                                                                                                    |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_ID.qbl                                                                                                              |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderID.qbl                                                                                                      |    6 
 _Main/BL/Relations/Relation_HistoricalSalesOrder_MacroPlan_MacroPlan_HistoricalSalesOrder.qbl                                                                    |   23 
 _Main/BL/Type_PanelMaterialTM18/Attribute_OrderDate.qbl                                                                                                          |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderLineID.qbl                                                                                                  |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listActionBarPageWorkOrderType.def                                                             |   10 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_Quantity.qbl                                                                                                          |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnCancel_OnClick.def                                                       |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def                                                                   |   32 
 _Main/BL/Type_FillingCapacityOrder/Attribute_PanelBigSheetQuantity.qbl                                                                                           |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_SalesSegmentName.qbl                                                                                                |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_OrderLineID.qbl                                                                                                     |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_PriorityName.qbl                                                                                                    |    7 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderType.qbl                                                                                                    |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_PriorityName.qbl                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listActionBarPageData.def                                                                |   10 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerID.qbl                                                                                                |   19 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_ID.qbl                                                                                                              |    6 
 _Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl                                                                                  |    2 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CurrencyID.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def                                                          |   41 
 _Main/BL/Type_PanelMaterialIT/Attribute_UnitOfMeasureName.qbl                                                                                                    |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_CurrencyID.qbl                                                                                                        |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_CurrencyID.qbl                                                                                                      |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_UnitOfMeasureName.qbl                                                                                        |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuSelectAll_OnClick.def                                                        |   17 
 _Main/BL/Type_PanelMaterialTM18/Attribute_CurrencyID.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CustomerID.qbl                                                                                              |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CurrencyID.qbl                                                                                        |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsEligibleForNetting.qbl                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/_ROOT_Component_DialogHistoricalSalesOrders.def                                                |   42 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/填产方案列表.vw                                                                                                       |   11 
 _Main/BL/Type_PanelMaterialTM17/_ROOT_Type_PanelMaterialTM17.qbl                                                                                                 |   10 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_StockPointID.qbl                                                                                                 |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuCreate_OnClick.def                                                        |   18 
 _Main/BL/Type_HistoricalSalesOrder/Method_GetProductIdString.qbl                                                                                                 |   26 
 _Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_BusinessType.qbl                                                                                          |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_OrderType.qbl                                                                                          |    6 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_ID.qbl                                                                                                              |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_Edit.def                                                                                |   16 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_CustomerID.qbl                                                                                                   |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_SalesAmount.qbl                                                                                                     |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_StockingPointID.qbl                                                                                                 |    7 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_OrderID.qbl                                                                                                  |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_BusinessType.qbl                                                                                          |    7 
 _Main/Sys/Integration/Brokers/PanelMaterialResponseResult.xml                                                                                                    |    0 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperRequest.qbl                                              |    8 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_OrderDate.qbl                                                                                                       |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_CustomerID.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_Customer.qbl                                                                                                          |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_StockingPointID.qbl                                                                                   |    7 
 _Main/BL/Type_PanelMaterialTM18/Attribute_OrderID.qbl                                                                                                            |    7 
 _Main/BL/Type_HistoricalSalesOrder/_ROOT_Type_HistoricalSalesOrder.qbl                                                                                           |    9 
 _var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties                                                                                    |   46 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def   |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listContextMenuFillingSchemeDetail.def                                               |   10 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderType.qbl                                                                                             |    7 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetSalesSegmentString.qbl                                                                                        |   28 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                     |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ID.qbl                                                                                             |    6 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_UnitOfMeasureName.qbl                                                                                            |    7 
 _Main/UI/MacroPlanner/Component_FormProducts/_ROOT_Component_FormProducts.def                                                                                    |   10 
 _Main/BL/Type_BusinessType/Method_UpdateData.qbl                                                                                                                 |   13 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/_ROOT_IntegratorConfig_PanelMaterialRestServer.qbl                                           |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_PriorityName.qbl                                                                                                    |    8 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_IsAvailable.qbl                                                                                                  |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_SalesSegmentName.qbl                                                                                  |    6 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsEligibleForNetting.qbl                                                                                         |    7 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_ID.qbl                                                                                                              |    7 
 _Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl                                                                                                  |   92 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Quantity.qbl                                                                                       |    6 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_UnitOfMeasureName.qbl                                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_ClickBtnOk.def                                                                     |   28 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnOk_OnClick.def                                                          |   15 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Quantity.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnCreated.def              |   26 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl                                                                          |   65 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ID.qbl                                                                                                      |    6 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_StockingPointID.qbl                                                                                              |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_CurrencyID.qbl                                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuSelectAll_OnClick.def                                                     |   17 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_PriorityName.qbl                                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnOk_OnClick.def                                                             |   21 
 _Main/BL/Relations/Relation_CustomerAndForecastOrder_MacroPlan_MacroPlan_CustomerAndForecastOrd.qbl                                                              |   23 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_Quantity.qbl                                                                                                        |    8 
 _Main/BL/Type_PanelMaterialTM17/Attribute_CustomerID.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_StockingPointID.qbl                                                                                         |    7 
 _Main/BL/Type_FillingCapacityOrder/Attribute_SchemeName.qbl                                                                                                      |    7 
 _var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties                                                                                              |  532 +++
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnCancel_OnClick.def                                                         |   15 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_CustomerID.qbl                                                                                                        |    6 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_CustomerID.qbl                                                                                            |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_Price.qbl                                                                                                           |    7 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetHistoricalSalesOrders.qbl                                                                                     |   64 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Price.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_ListData.def                                                                             |   59 
 _Main/BL/Type_FillingCapacityOrder/Attribute_OrderType.qbl                                                                                                       |    7 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlContent.def                                                                     |   36 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsFirmed.qbl                                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuFilling_OnClick.def                             |   20 
 _Main/BL/Type_PanelMaterialTianHua/Attribute_UnitOfMeasureName.qbl                                                                                               |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/_ROOT_Type_PanelMaterialSpecializedDisplay.qbl                                                                     |   10 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_SalesSegmentName.qbl                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl                                                                                |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_CurrencyID.qbl                                                                                                      |    8 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_Customer.qbl                                                                                           |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_BusinessType.qbl                                                                                                    |    8 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderLineID.qbl                                                                                             |    6 
 _Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl                                                                                                          |   19 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeDate.qbl                                                                                               |    7 
 _Main/BL/Relations/Relation_PanelMaterialTianHua_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl                                                              |   23 
 _Main/BL/Type_PanelMaterialTM17/Attribute_Quantity.qbl                                                                                                           |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID.qbl                                                                                          |    6 
 _Main/BL/Type_HistoricalSalesOrder/DefaultValue_CurrencyID.qbl                                                                                                   |    6 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderLineID.qbl                                                                                                     |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_StockingPointID.qbl                                                                                   |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_SalesSegmentName.qbl                                                                                             |    6 
 _Main/UI/MacroPlanner/Component_FormProducts/Response_TIANMA_JITUAN_ListProduct_MenuConvertToPanelMaterial_OnClick.def                                           |   14 
 _Main/BL/Type_PanelMaterialIT/Attribute_IsEligibleForNetting.qbl                                                                                                 |    7 
 _Main/BL/Relations/Relation_PanelMaterialAutomotiveElectronics_PanelMaterialAll_PanelMaterialAl.qbl                                                              |   23 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ProductID.qbl                                                                                            |    7 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderLineID.qbl                                                                                                     |    6 
 _Main/BL/Type_PanelMaterialTM18/_ROOT_Type_PanelMaterialTM18.qbl                                                                                                 |   10 
 _Main/BL/Type_HistoricalFillingCapacityOrder/_ROOT_Type_HistoricalFillingCapacityOrder.qbl                                                                       |    9 
 _Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl                                                                                           |   65 
 _Main/BL/Type_PanelMaterialTM17/Attribute_IsExcludedFromFulfillmentKPIUser.qbl                                                                                   |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_OrderDate.qbl                                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def                                  |   12 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID.qbl                                                                                             |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderID.qbl                                                                                           |    6 
 _Main/BL/Type_PanelMaterialVehicle/Attribute_Price.qbl                                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnOk_OnClick.def                                                        |   48 
 _Main/BL/Type_PanelMaterialTM17/Attribute_Price.qbl                                                                                                              |    7 
 _Main/BL/Type_PanelMaterial/Attribute_MaterialDescription.qbl                                                                                                    |    8 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Price.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Method_OpenScheme.def                                                                             |   10 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/MessageEnhancerProcessor_MessageHeaderEnhancerProcessor.qbl                                  |   25 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def                                       |   22 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Price.qbl                                                                                             |    7 
 _Main/BL/Type_PanelMaterialIT/Attribute_OrderDate.qbl                                                                                                            |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_IsFirmed.qbl                                                                                                           |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_Price.qbl                                                                                                        |    7 
 _Main/BL/Relations/Relation_PanelMaterialAll_GlobalOTDTable_GlobalOTDTable_PanelMaterialAll.qbl                                                                  |   23 
 _Main/BL/Type_PanelMaterialIT/DefaultValue_OrderID.qbl                                                                                                           |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ProductID.qbl                                                                                      |    6 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_CurrencyID.qbl                                                                                                 |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsEligibleForNetting.qbl                                                                                       |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Quantity.qbl                                                                                          |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_VerNo.qbl                                                                                                           |    7 
 _Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SchemeName.qbl                                                                                            |    6 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_OrderType.qbl                                                                                                       |    8 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_Quantity.qbl                                                                                                     |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_PriorityName.qbl                                                                                      |    7 
 _Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderLineID.qbl                                                                                                  |    6 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsFirmed.qbl                                                                                       |    7 
 _Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerificationData.qbl                                                                                 |   25 
 _Main/Sys/Integration/Mapping/PanelMaterialResponseResult.xml                                                                                                    |    0 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_Quantity.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_CustomerID.qbl                                                                                                      |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_New.def                                                                                 |   15 
 _Main/BL/Relations/Relation_PanelMaterialSportsHealth_PanelMaterialAll_PanelMaterialAll_PanelMa.qbl                                                              |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuEdit_OnClick.def                                            |   20 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_StockingPointID.qbl                                                                                       |    7 
 _Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_UnitOfMeasureName.qbl                                                                                     |    7 
 _Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerID.qbl                                                                                                  |    7 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ID.qbl                                                                                                |    6 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl                                                                             |   65 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_UnitOfMeasureName.qbl                                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuDelete_OnClick.def                                                        |   18 
 _Main/BL/Type_BusinessType/Method_DeleteData.qbl                                                                                                                 |   11 
 _Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl                                                                                                   |    2 
 _Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl                                                                                           |   65 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Price.qbl                                                                                                   |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Customer.qbl                                                                                       |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def                                                          |   59 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listContextMenuHistoricalFillingCapacityOrder.def                             |   10 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_ProductID.qbl                                                                                                       |    8 
 _Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl                                                                                             |   65 
 _Main/BL/Type_CustomerAndForecastOrder/DefaultValue_CustomerID.qbl                                                                                               |    6 
 _Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetProductIdString.qbl                                                                                           |   27 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ProductID.qbl                                                                                         |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlActions.def                                                                       |   40 
 _Main/BL/Type_FillingCapacityOrder/Attribute_BusinessType.qbl                                                                                                    |    7 
 _Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperReponse#1.qbl                                            |    9 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_IsAvailable.qbl                                                                                                     |    8 
 _Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ID.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def                                                |   59 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelFunctionButtons.def                                                                 |   60 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_CustomerID.qbl                                                                                                      |    7 
 _Main/BL/Type_PanelMaterialTM18/DefaultValue_Quantity.qbl                                                                                                        |    6 
 _Main/BL/Type_PanelMaterialVehicle/DefaultValue_UnitOfMeasureName.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_New.def                                                                         |   14 
 _Main/BL/Type_PanelMaterialTM17/DefaultValue_PriorityName.qbl                                                                                                    |    7 
 _Main/BL/Type_PanelMaterialTM17/Attribute_CurrencyID.qbl                                                                                                         |    7 
 _Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ProductID.qbl                                                                                         |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderDate.qbl                                                                                                  |    7 
 _Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_PriorityName.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlContent.def                                                                                |   25 
 _Main/BL/Type_FilllingCapacityOrderScheme/Attribute_Customer.qbl                                                                                                 |    7 
 _Main/BL/Type_HistoricalSalesOrder/Attribute_SalesSegmentName.qbl                                                                                                |    8 
 _Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl                                                                                                                |   37 
 _Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnCancel_OnClick.def                                                      |   15 
 613 files changed, 8,958 insertions(+), 104 deletions(-)

diff --git a/_Main/BL/ConfigTemplates.properties b/_Main/BL/ConfigTemplates.properties
index aeac723..5ff9151 100644
--- a/_Main/BL/ConfigTemplates.properties
+++ b/_Main/BL/ConfigTemplates.properties
@@ -115,7 +115,11 @@
 domainmodel.historicaltransactioncontrol=template:domainmodel.historicaltransactioncontrol
 domainmodel.httphandlergroupdefinition.quantus=template:domainmodel.httphandlergroupdefinition
 domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint=template:domainmodel.integratorconfig.dsendpoint
+domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
 domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
+domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
+domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
 domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
 domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients=template:domainmodel.soapclientinterfacedefinition
 domainmodel.soapclientinterfacedefinition.interface.sopdsscclientinterfaces=template:domainmodel.soapclientinterfacedefinition
diff --git a/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl b/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
index 3da4e20..15ca8ab 100644
--- a/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
+++ b/_Main/BL/EDI/Broker_Broker_OTD_Product.qbl
@@ -38,6 +38,7 @@
       OthersMayFlushTable: true
       OthersMayInsertRow: true
       Parameters: '/owner="TIANMA"'
+      PrimaryKeyColumns: BUSINESSTYPE
       PrimaryKeyColumns: ID
       RecordModificationHintStrategy: 'None'
       EDIODBCLinkColumn BUSINESSTYPE
diff --git "a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperReponse\0431.qbl" "b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperReponse\0431.qbl"
new file mode 100644
index 0000000..3692157
--- /dev/null
+++ "b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperReponse\0431.qbl"
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+ContentMapperProcessor ContentMapperReponse
+{
+  DefaultMappingName: 'PanelMaterialResponseResult'
+  PosX: 330
+  PosY: 450
+  ReplyChannelOutputs: QuintiqEndpoint
+}
diff --git a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperRequest.qbl b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperRequest.qbl
new file mode 100644
index 0000000..959d606
--- /dev/null
+++ b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/ContentMapperProcessor_ContentMapperRequest.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+ContentMapperProcessor ContentMapperRequest
+{
+  PosX: 430
+  PosY: 200
+  RequestChannelInputs: QuintiqEndpoint
+}
diff --git a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/MessageEnhancerProcessor_MessageHeaderEnhancerProcessor.qbl b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/MessageEnhancerProcessor_MessageHeaderEnhancerProcessor.qbl
new file mode 100644
index 0000000..28845d0
--- /dev/null
+++ b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/MessageEnhancerProcessor_MessageHeaderEnhancerProcessor.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+MessageEnhancerProcessor MessageHeaderEnhancerProcessor
+{
+  PosX: 205
+  PosY: 200
+  RequestChannelInputs: ContentMapperRequest
+  MessageEnhancerSet
+  {
+    Property: '_QI.IsRequest'
+    Type: 'String'
+  }
+  MessageEnhancerSet
+  {
+    Property: '_QI.Method'
+    Type: 'String'
+    Value: 'ReceivingPanelMaterials'
+  }
+  MessageEnhancerSet
+  {
+    Property: '_QI.Type'
+    Type: 'String'
+    Value: 'GlobalOTDTable'
+  }
+}
diff --git a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/QuintiqEndpoint_QuintiqEndpoint.qbl b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/QuintiqEndpoint_QuintiqEndpoint.qbl
new file mode 100644
index 0000000..3c79c51
--- /dev/null
+++ b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/QuintiqEndpoint_QuintiqEndpoint.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+QuintiqEndpoint QuintiqEndpoint
+{
+  PosX: 605
+  PosY: 325
+  SettingsEngineLink: 'domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint'
+}
diff --git a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/RestEndpoint_RestEndpointPanelMaterial.qbl b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/RestEndpoint_RestEndpointPanelMaterial.qbl
new file mode 100644
index 0000000..de114e4
--- /dev/null
+++ b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/RestEndpoint_RestEndpointPanelMaterial.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+RestEndpoint RestEndpointPanelMaterial
+{
+  PosX: 30
+  PosY: 325
+  ReplyChannelOutputs: ContentMapperReponse
+  RequestChannelInputs: MessageHeaderEnhancerProcessor
+  SettingsEngineLink: 'domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial'
+}
diff --git a/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/_ROOT_IntegratorConfig_PanelMaterialRestServer.qbl b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/_ROOT_IntegratorConfig_PanelMaterialRestServer.qbl
new file mode 100644
index 0000000..b91eb27
--- /dev/null
+++ b/_Main/BL/IntegratorConfigs/IntegratorConfig_PanelMaterialRestServer/_ROOT_IntegratorConfig_PanelMaterialRestServer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #root
+IntegratorConfig PanelMaterialRestServer
+{
+}
diff --git a/_Main/BL/Relations/Relation_BusinessType_GlobalOTDTable_GlobalOTDTable_BusinessType.qbl b/_Main/BL/Relations/Relation_BusinessType_GlobalOTDTable_GlobalOTDTable_BusinessType.qbl
new file mode 100644
index 0000000..be40076
--- /dev/null
+++ b/_Main/BL/Relations/Relation_BusinessType_GlobalOTDTable_GlobalOTDTable_BusinessType.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation BusinessType_GlobalOTDTable_GlobalOTDTable_BusinessType
+{
+  #keys: '1[414382.0.362030054]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414382.0.362030056][414382.0.362030055][414382.0.362030057]'
+    Cardinality: '0to1'
+    ObjectDefinition: BusinessType
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide BusinessType
+  {
+    #keys: '3[414382.0.362030059][414382.0.362030058][414382.0.362030060]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CustomerAndForecastOrder_MacroPlan_MacroPlan_CustomerAndForecastOrd.qbl b/_Main/BL/Relations/Relation_CustomerAndForecastOrder_MacroPlan_MacroPlan_CustomerAndForecastOrd.qbl
new file mode 100644
index 0000000..dc73c2b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerAndForecastOrder_MacroPlan_MacroPlan_CustomerAndForecastOrd.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerAndForecastOrder_MacroPlan_MacroPlan_CustomerAndForecastOrder
+{
+  #keys: '1[414382.0.412354687]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414382.0.412354689][414382.0.412354688][414382.0.412354690]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerAndForecastOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CustomerAndForecastOrder
+  {
+    #keys: '3[414382.0.412354692][414382.0.412354691][414382.0.412354693]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_FillingCapacityOrder_MacroPlan_MacroPlan_FillingCapacityOrder.qbl b/_Main/BL/Relations/Relation_FillingCapacityOrder_MacroPlan_MacroPlan_FillingCapacityOrder.qbl
new file mode 100644
index 0000000..2b0f0bc
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FillingCapacityOrder_MacroPlan_MacroPlan_FillingCapacityOrder.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FillingCapacityOrder_MacroPlan_MacroPlan_FillingCapacityOrder
+{
+  #keys: '1[414382.0.394820063]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414382.0.394820065][414382.0.394820064][414382.0.394820066]'
+    Cardinality: '0to1'
+    ObjectDefinition: FillingCapacityOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide FillingCapacityOrder
+  {
+    #keys: '3[414382.0.394820068][414382.0.394820067][414382.0.394820069]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_FillingCapacityOrder_FillingCapacityOrd.qbl b/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_FillingCapacityOrder_FillingCapacityOrd.qbl
new file mode 100644
index 0000000..037c40a
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_FillingCapacityOrder_FillingCapacityOrd.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FilllingCapacityOrderScheme_FillingCapacityOrder_FillingCapacityOrder_FilllingCapacityOrderScheme
+{
+  #keys: '1[414382.0.424779922]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide FillingCapacityOrder
+  {
+    #keys: '3[414382.0.424779924][414382.0.424779923][414382.0.424779925]'
+    Cardinality: '1toN'
+    ObjectDefinition: FilllingCapacityOrderScheme
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide FilllingCapacityOrderScheme
+  {
+    #keys: '3[414382.0.424779927][414382.0.424779926][414382.0.424779928]'
+    Cardinality: '0to1'
+    ObjectDefinition: FillingCapacityOrder
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_MacroPlan_MacroPlan_FilllingCapacityOrd.qbl b/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_MacroPlan_MacroPlan_FilllingCapacityOrd.qbl
new file mode 100644
index 0000000..ed28adb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FilllingCapacityOrderScheme_MacroPlan_MacroPlan_FilllingCapacityOrd.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FilllingCapacityOrderScheme_MacroPlan_MacroPlan_FilllingCapacityOrderScheme
+{
+  #keys: '1[414382.0.424779906]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414382.0.424779908][414382.0.424779907][414382.0.424779909]'
+    Cardinality: '0to1'
+    ObjectDefinition: FilllingCapacityOrderScheme
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide FilllingCapacityOrderScheme
+  {
+    #keys: '3[414382.0.424779911][414382.0.424779910][414382.0.424779912]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_HistoricalFillingCapacityOrder_MacroPlan_MacroPlan_HistoricalFillin.qbl b/_Main/BL/Relations/Relation_HistoricalFillingCapacityOrder_MacroPlan_MacroPlan_HistoricalFillin.qbl
new file mode 100644
index 0000000..c894832
--- /dev/null
+++ b/_Main/BL/Relations/Relation_HistoricalFillingCapacityOrder_MacroPlan_MacroPlan_HistoricalFillin.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation HistoricalFillingCapacityOrder_MacroPlan_MacroPlan_HistoricalFillingCapacityOrder
+{
+  #keys: '1[414382.0.440654894]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414382.0.440654896][414382.0.440654895][414382.0.440654897]'
+    Cardinality: '0to1'
+    ObjectDefinition: HistoricalFillingCapacityOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide HistoricalFillingCapacityOrder
+  {
+    #keys: '3[414382.0.440654899][414382.0.440654898][414382.0.440654900]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_HistoricalSalesOrder_MacroPlan_MacroPlan_HistoricalSalesOrder.qbl b/_Main/BL/Relations/Relation_HistoricalSalesOrder_MacroPlan_MacroPlan_HistoricalSalesOrder.qbl
new file mode 100644
index 0000000..3a7a8c1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_HistoricalSalesOrder_MacroPlan_MacroPlan_HistoricalSalesOrder.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation HistoricalSalesOrder_MacroPlan_MacroPlan_HistoricalSalesOrder
+{
+  #keys: '1[414382.0.385610086]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414382.0.385610088][414382.0.385610087][414382.0.385610089]'
+    Cardinality: '0to1'
+    ObjectDefinition: HistoricalSalesOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide HistoricalSalesOrder
+  {
+    #keys: '3[414382.0.385610091][414382.0.385610090][414382.0.385610092]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialAll_GlobalOTDTable_GlobalOTDTable_PanelMaterialAll.qbl b/_Main/BL/Relations/Relation_PanelMaterialAll_GlobalOTDTable_GlobalOTDTable_PanelMaterialAll.qbl
new file mode 100644
index 0000000..f2cc83e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialAll_GlobalOTDTable_GlobalOTDTable_PanelMaterialAll.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialAll_GlobalOTDTable_GlobalOTDTable_PanelMaterialAll
+{
+  #keys: '1[414702.0.196798981]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.196798983][414702.0.196798982][414702.0.196798984]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.196798986][414702.0.196798985][414702.0.196798987]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialAutomotiveElectronics_PanelMaterialAll_PanelMaterialAl.qbl b/_Main/BL/Relations/Relation_PanelMaterialAutomotiveElectronics_PanelMaterialAll_PanelMaterialAl.qbl
new file mode 100644
index 0000000..dfdd092
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialAutomotiveElectronics_PanelMaterialAll_PanelMaterialAl.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialAutomotiveElectronics_PanelMaterialAll_PanelMaterialAll_PanelMaterialAutomotiveElectronics
+{
+  #keys: '1[414702.0.203680165]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203680167][414702.0.203680166][414702.0.203680168]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialAutomotiveElectronics
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialAutomotiveElectronics
+  {
+    #keys: '3[414702.0.203680170][414702.0.203680169][414702.0.203680171]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialIT_PanelMaterialAll_PanelMaterialAll_PanelMaterialIT.qbl b/_Main/BL/Relations/Relation_PanelMaterialIT_PanelMaterialAll_PanelMaterialAll_PanelMaterialIT.qbl
new file mode 100644
index 0000000..40a8aba
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialIT_PanelMaterialAll_PanelMaterialAll_PanelMaterialIT.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialIT_PanelMaterialAll_PanelMaterialAll_PanelMaterialIT
+{
+  #keys: '1[414702.0.203680281]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203680283][414702.0.203680282][414702.0.203680284]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialIT
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialIT
+  {
+    #keys: '3[414702.0.203680286][414702.0.203680285][414702.0.203680287]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialSpecializedDisplay_PanelMaterialAll_PanelMaterialAll_P.qbl b/_Main/BL/Relations/Relation_PanelMaterialSpecializedDisplay_PanelMaterialAll_PanelMaterialAll_P.qbl
new file mode 100644
index 0000000..630692f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialSpecializedDisplay_PanelMaterialAll_PanelMaterialAll_P.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialSpecializedDisplay_PanelMaterialAll_PanelMaterialAll_PanelMaterialSpecializedDisplay
+{
+  #keys: '1[414702.0.203671496]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203671498][414702.0.203671497][414702.0.203671499]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialSpecializedDisplay
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialSpecializedDisplay
+  {
+    #keys: '3[414702.0.203671501][414702.0.203671500][414702.0.203671502]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialSportsHealth_PanelMaterialAll_PanelMaterialAll_PanelMa.qbl b/_Main/BL/Relations/Relation_PanelMaterialSportsHealth_PanelMaterialAll_PanelMaterialAll_PanelMa.qbl
new file mode 100644
index 0000000..08521bd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialSportsHealth_PanelMaterialAll_PanelMaterialAll_PanelMa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialSportsHealth_PanelMaterialAll_PanelMaterialAll_PanelMaterialSportsHealth
+{
+  #keys: '1[414702.0.203680203]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203680205][414702.0.203680204][414702.0.203680206]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialSportsHealth
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialSportsHealth
+  {
+    #keys: '3[414702.0.203680208][414702.0.203680207][414702.0.203680209]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialTM17_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl b/_Main/BL/Relations/Relation_PanelMaterialTM17_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl
new file mode 100644
index 0000000..611fa89
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialTM17_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialTM17_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM17
+{
+  #keys: '1[414702.0.203671572]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203671574][414702.0.203671573][414702.0.203671575]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialTM17
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialTM17
+  {
+    #keys: '3[414702.0.203671577][414702.0.203671576][414702.0.203671578]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialTM18_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl b/_Main/BL/Relations/Relation_PanelMaterialTM18_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl
new file mode 100644
index 0000000..88f9dbc
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialTM18_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialTM18_PanelMaterialAll_PanelMaterialAll_PanelMaterialTM18
+{
+  #keys: '1[414702.0.203680361]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203680363][414702.0.203680362][414702.0.203680364]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialTM18
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialTM18
+  {
+    #keys: '3[414702.0.203680366][414702.0.203680365][414702.0.203680367]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialTianHua_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl b/_Main/BL/Relations/Relation_PanelMaterialTianHua_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl
new file mode 100644
index 0000000..cb988d9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialTianHua_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialTianHua_PanelMaterialAll_PanelMaterialAll_PanelMaterialTianHua
+{
+  #keys: '1[414702.0.203671469]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.203671471][414702.0.203671470][414702.0.203671472]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialTianHua
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialTianHua
+  {
+    #keys: '3[414702.0.203671474][414702.0.203671473][414702.0.203671475]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterialVehicle_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl b/_Main/BL/Relations/Relation_PanelMaterialVehicle_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl
new file mode 100644
index 0000000..97ca6e2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterialVehicle_PanelMaterialAll_PanelMaterialAll_PanelMateria.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterialVehicle_PanelMaterialAll_PanelMaterialAll_PanelMaterialVehicle
+{
+  #keys: '1[414702.0.196801391]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PanelMaterialAll
+  {
+    #keys: '3[414702.0.196801393][414702.0.196801392][414702.0.196801394]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterialVehicle
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterialVehicle
+  {
+    #keys: '3[414702.0.196801396][414702.0.196801395][414702.0.196801397]'
+    Cardinality: '1toN'
+    ObjectDefinition: PanelMaterialAll
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PanelMaterial_MacroPlan_MacroPlan_PanelMaterial.qbl b/_Main/BL/Relations/Relation_PanelMaterial_MacroPlan_MacroPlan_PanelMaterial.qbl
new file mode 100644
index 0000000..fd1e173
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PanelMaterial_MacroPlan_MacroPlan_PanelMaterial.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PanelMaterial_MacroPlan_MacroPlan_PanelMaterial
+{
+  #keys: '1[414702.0.162969760]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414702.0.162969762][414702.0.162969761][414702.0.162969763]'
+    Cardinality: '0to1'
+    ObjectDefinition: PanelMaterial
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PanelMaterial
+  {
+    #keys: '3[414702.0.162969765][414702.0.162969764][414702.0.162969766]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_WorkOrderType_GlobalOTDTable_GlobalOTDTable_WorkOrderType.qbl b/_Main/BL/Relations/Relation_WorkOrderType_GlobalOTDTable_GlobalOTDTable_WorkOrderType.qbl
new file mode 100644
index 0000000..2a94ff2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_WorkOrderType_GlobalOTDTable_GlobalOTDTable_WorkOrderType.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation WorkOrderType_GlobalOTDTable_GlobalOTDTable_WorkOrderType
+{
+  #keys: '1[414702.0.144781477]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414702.0.144781479][414702.0.144781478][414702.0.144781480]'
+    Cardinality: '0to1'
+    ObjectDefinition: WorkOrderType
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide WorkOrderType
+  {
+    #keys: '3[414702.0.144781482][414702.0.144781481][414702.0.144781483]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl
index 0c2492f..95d364e 100644
--- a/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl
@@ -12,7 +12,7 @@
   TextBody:
   [*
     // Administrator Sep-6-2023 (created)
-    date := Date :: Today();
+    date := owner.StartOfPlanning().Date()-1;
     actualpispip := ActualProductInStockingPointInPeriod::FindActualProductInStockingPointInPeriodTypeIndex( productid, stockingpointid, date, manufactureddate );
     
     if( isnull( actualpispip ) ){
@@ -25,7 +25,7 @@
                                                     manufactureddate,
                                                     true);
       }else{
-        actualpispip.Update( actualinventorylevelend, description, true );
+        actualpispip.Update(  actualinventorylevelend+actualpispip.ActualInventoryLevelEnd(), description, true );
         }
   *]
 }
diff --git a/_Main/BL/Type_BusinessType/Attribute_BusinessTypeName.qbl b/_Main/BL/Type_BusinessType/Attribute_BusinessTypeName.qbl
new file mode 100644
index 0000000..f2fb6a3
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/Attribute_BusinessTypeName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessTypeName
+{
+  #keys: '3[414382.0.361554811][414382.0.361554810][414382.0.361554812]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_BusinessType/Method_DeleteData.qbl b/_Main/BL/Type_BusinessType/Method_DeleteData.qbl
new file mode 100644
index 0000000..3bc2d98
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/Method_DeleteData.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+Method DeleteData
+{
+  TextBody:
+  [*
+    // NBoTk Sep-7-2023 (created)
+    
+    this.Delete();
+  *]
+}
diff --git a/_Main/BL/Type_BusinessType/Method_UpdateData.qbl b/_Main/BL/Type_BusinessType/Method_UpdateData.qbl
new file mode 100644
index 0000000..6a63c02
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/Method_UpdateData.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method UpdateData (
+  String businessTypeName
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-7-2023 (created)
+    
+    this.BusinessTypeName(businessTypeName);
+  *]
+}
diff --git a/_Main/BL/Type_BusinessType/StaticMethod_CreateData.qbl b/_Main/BL/Type_BusinessType/StaticMethod_CreateData.qbl
new file mode 100644
index 0000000..0606111
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/StaticMethod_CreateData.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateData (
+  GlobalOTDTable owner,
+  String businessName
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-7-2023 (created)
+    // 鍒涘缓businessType
+    
+    // 鍒ゆ柇鍚嶇О鏄惁瀛樺湪
+    
+    checkExist := exists( owner,BusinessType,b,
+                          true,
+                          b.BusinessTypeName() = businessName
+                          );
+    
+    // 濡傛灉涓嶅瓨鍦ㄥ垯娣诲姞
+    if( not checkExist ){
+      owner.BusinessType(relnew,BusinessTypeName := businessName);
+    }
+  *]
+}
diff --git a/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl b/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
new file mode 100644
index 0000000..02ecd32
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetBusinessNameStr (
+  GlobalOTDTable owner
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-7-2023 (created)
+    
+    // 鑾峰彇businessType 闆嗗悎
+    result := "";
+    businessTypeList := construct( structured[String]);
+    
+    traverse( owner,BusinessType,b)
+    {
+        businessTypeList.Add( b.BusinessTypeName()); 
+    }
+    
+    // 濡傛灉瀛樺湪businessType鏁版嵁 鍒欒繑鍥� : a,b,c
+    
+    if( not isnull( businessTypeList ) )
+    {
+        result := businessTypeList.Concatenate( ";" );
+    }
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_BusinessType/_ROOT_Type_BusinessType.qbl b/_Main/BL/Type_BusinessType/_ROOT_Type_BusinessType.qbl
new file mode 100644
index 0000000..3074c70
--- /dev/null
+++ b/_Main/BL/Type_BusinessType/_ROOT_Type_BusinessType.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type BusinessType
+{
+  #keys: '5[414382.0.361591349][414382.0.361591347][0.0.0][414382.0.361591348][414382.0.361591350]'
+  BaseType: Object
+  Description: 'business type'
+  StructuredName: 'BusinessTypes'
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..40608d9
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.412354709][414382.0.412354708][414382.0.412354710]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Customer.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Customer.qbl
new file mode 100644
index 0000000..b2e8166
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414382.0.412354716][414382.0.412354715][414382.0.412354717]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..23b41c4
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414382.0.412354719][414382.0.412354718][414382.0.412354720]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_DemandDate.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_DemandDate.qbl
new file mode 100644
index 0000000..17582b0
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_DemandDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandDate
+{
+  #keys: '3[414382.0.412354743][414382.0.412354742][414382.0.412354744]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastDemandDate.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastDemandDate.qbl
new file mode 100644
index 0000000..eeecbc3
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastDemandDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastDemandDate
+{
+  #keys: '3[414382.0.412354746][414382.0.412354745][414382.0.412354747]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_OrderID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_OrderID.qbl
new file mode 100644
index 0000000..4cc6f85
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_OrderID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414382.0.412354701][414382.0.412354700][414382.0.412354702]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_PanelBigSheetQuantity.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_PanelBigSheetQuantity.qbl
new file mode 100644
index 0000000..a18cc58
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_PanelBigSheetQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelBigSheetQuantity
+{
+  #keys: '3[414382.0.412354739][414382.0.412354738][414382.0.412354740]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ProductID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..28586d6
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414382.0.412354712][414382.0.412354711][414382.0.412354713]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Quantity.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..d6f3095
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414382.0.412354736][414382.0.412354735][414382.0.412354737]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_SalesAmount.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_SalesAmount.qbl
new file mode 100644
index 0000000..8fcddce
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_SalesAmount.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmount
+{
+  #keys: '3[414382.0.412354749][414382.0.412354748][414382.0.412354750]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ServiceType.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ServiceType.qbl
new file mode 100644
index 0000000..5aa25d1
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ServiceType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ServiceType
+{
+  #keys: '3[414382.0.412354723][414382.0.412354722][414382.0.412354724]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..c7034c3
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414382.0.412354733][414382.0.412354732][414382.0.412354734]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_VerNo.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_VerNo.qbl
new file mode 100644
index 0000000..7baf45d
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_VerNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VerNo
+{
+  #keys: '3[414382.0.412354705][414382.0.412354704][414382.0.412354706]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_BusinessType.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_Customer.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_CustomerID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_OrderID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_ProductID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..b2012de
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_VerNo.qbl b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_VerNo.qbl
new file mode 100644
index 0000000..0edfadc
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/DefaultValue_VerNo.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: VerNo
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
new file mode 100644
index 0000000..720a7bb
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateFillingCapacityOrder (
+  MacroPlan owner,
+  CustomerAndForecastOrder data
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    owner.FillingCapacityOrder(relnew,ProductID := data.ProductID(),BusinessType := data.BusinessType(),Customer := data.Customer(),CustomerID := data.CustomerID(),
+                                    Quantity := data.Quantity(),UnitOfMeasureName := data.UnitOfMeasureName(),PanelBigSheetQuantity := data.PanelBigSheetQuantity(),SalesAmount := data.SalesAmount(),
+                                    ForecastDemandDate := data.ForecastDemandDate(),DemandDate := data.DemandDate(),VerNo := data.VerNo()
+                                    );
+  *]
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateTestData.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateTestData.qbl
new file mode 100644
index 0000000..94354eb
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateTestData.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateTestData (
+  MacroPlan owner
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    stringdate := '20230901';
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyyMMdd' );
+    date := cnv2.Convert( stringdate );
+    
+    owner.CustomerAndForecastOrder(relnew,OrderID := "001",ProductID := "001",BusinessType := "浜嬩笟涓�閮�",Customer := "瀹㈡埛",CustomerID := "001",
+                                    Quantity := 100,UnitOfMeasureName := "PCS",PanelBigSheetQuantity := 200,SalesAmount := 1000,ForecastDemandDate := date,DemandDate := date
+                                    );
+  *]
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/_ROOT_Type_CustomerAndForecastOrder.qbl b/_Main/BL/Type_CustomerAndForecastOrder/_ROOT_Type_CustomerAndForecastOrder.qbl
new file mode 100644
index 0000000..1239f5b
--- /dev/null
+++ b/_Main/BL/Type_CustomerAndForecastOrder/_ROOT_Type_CustomerAndForecastOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CustomerAndForecastOrder
+{
+  #keys: '5[414382.0.412354684][414382.0.412354682][0.0.0][414382.0.412354683][414382.0.412354685]'
+  BaseType: Object
+  StructuredName: 'CustomerAndForecastOrders'
+}
diff --git a/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
index d1d98d9..e885859 100644
--- a/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
@@ -27,7 +27,7 @@
     product := Product_MP::FindById( macroPlan, productId );
     salesSegment := SalesSegment_MP::FindByName( macroPlan, salesSegmentName );
     stockingPoint := StockingPoint_MP::FindById(  macroPlan, stockingPointId );
-    currency := Currency_MP::FindById( macroPlan, currencyId );
+    //currency := Currency_MP::FindById( macroPlan, currencyId );
     unitOfMeasure := null( UnitOfMeasure_MP )
     priority := null( Priority );
     if( unitOfMeasureName <> "" ) {
@@ -38,32 +38,32 @@
     }
     // 妫�鏌ヤ緷璧栭」
     if( isnull( product) ) {
-        error( "product not found" );  
+        info( "product not found" );  
     }
     if( isnull( salesSegment) ) {
-        error( "sales segment not found" );  
+        info( "sales segment not found" );  
     }
     if( isnull( stockingPoint) ) {
-        error( "stock point not found" );  
+        info( "stock point not found" );  
     }
-    if( isnull( currency) ) {
-        error( "currency not found" );  
-    }
+    //if( isnull( currency) ) {
+    //    error( "currency not found" );  
+    //}
     if( unitOfMeasureName <> "" and isnull( unitOfMeasure) ) {
-        error( "unit of measure not found" );  
+        info( "unit of measure not found" );  
     }
     if( priorityName <> "" and isnull( stockingPoint) ) {
-        error( "priority not found" );  
+        info( "priority not found" );  
     }
     // 鏂板/鏇存柊
     result := CustomerOrder::FindById( macroPlan, id );
     if( isnull( result ) ) {
         CustomerOrder::Create( product, stockingPoint, id, orderDate, quantity, price, 
-                               priorityName, salesSegmentName, currency.Name(), unitOfMeasureName, 
+                               priorityName, salesSegmentName, currencyId, unitOfMeasureName, 
                                false, customerName, customerId, orderId, orderLineId, true, true, true );
     } else {
         result.Update( product, stockingPoint, orderDate, quantity, price, 
-                       priorityName, salesSegmentName, currency.Name(), unitOfMeasureName, 
+                       priorityName, salesSegmentName, currencyId, unitOfMeasureName, 
                        false, customerName, customerId, orderId, orderLineId, true, true, true );
     }
     return result;
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..20f4d01
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.394820097][414382.0.394820096][414382.0.394820098]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_Customer.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_Customer.qbl
new file mode 100644
index 0000000..75ac73a
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414382.0.394820200][414382.0.394820199][414382.0.394820201]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_CustomerID.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..1809787
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414382.0.394820210][414382.0.394820209][414382.0.394820211]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_DemandDate.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_DemandDate.qbl
new file mode 100644
index 0000000..b347899
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_DemandDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandDate
+{
+  #keys: '3[414382.0.394820180][414382.0.394820179][414382.0.394820181]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_ForecastDemandDate.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_ForecastDemandDate.qbl
new file mode 100644
index 0000000..8bfc0f9
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_ForecastDemandDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastDemandDate
+{
+  #keys: '3[414382.0.394820170][414382.0.394820169][414382.0.394820171]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_IsFilling.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_IsFilling.qbl
new file mode 100644
index 0000000..71fc4b0
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_IsFilling.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFilling
+{
+  #keys: '3[414382.0.419264586][414382.0.419264585][414382.0.419264587]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderDate.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..6f4e9b4
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414382.0.394815955][414382.0.394815954][414382.0.394815956]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderType.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderType.qbl
new file mode 100644
index 0000000..da22dcc
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_OrderType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderType
+{
+  #keys: '3[414382.0.394820190][414382.0.394820189][414382.0.394820191]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_PanelBigSheetQuantity.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_PanelBigSheetQuantity.qbl
new file mode 100644
index 0000000..107f871
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_PanelBigSheetQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelBigSheetQuantity
+{
+  #keys: '3[414382.0.394820150][414382.0.394820149][414382.0.394820151]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_ProductID.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..e1d2f3e
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414382.0.394820087][414382.0.394820086][414382.0.394820088]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_Quantity.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..335de16
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414382.0.394820127][414382.0.394820126][414382.0.394820128]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesAmount.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesAmount.qbl
new file mode 100644
index 0000000..246ad4b
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesAmount.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmount
+{
+  #keys: '3[414382.0.394820160][414382.0.394820159][414382.0.394820161]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..b51495f
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414382.0.394820107][414382.0.394820106][414382.0.394820108]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_SchemeName.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_SchemeName.qbl
new file mode 100644
index 0000000..ff6d517
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_SchemeName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SchemeName
+{
+  #keys: '3[414382.0.424779892][414382.0.424779891][414382.0.424779893]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_StockingPointID.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..2e85dae
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414382.0.394820117][414382.0.394820116][414382.0.394820118]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..fc5f64b
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414382.0.394820137][414382.0.394820136][414382.0.394820138]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/Attribute_VerNo.qbl b/_Main/BL/Type_FillingCapacityOrder/Attribute_VerNo.qbl
new file mode 100644
index 0000000..be3aead
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/Attribute_VerNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VerNo
+{
+  #keys: '3[414382.0.394820077][414382.0.394820076][414382.0.394820078]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/DefaultValue_IsFilling.qbl b/_Main/BL/Type_FillingCapacityOrder/DefaultValue_IsFilling.qbl
new file mode 100644
index 0000000..aa634ef
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/DefaultValue_IsFilling.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsFilling
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/_ROOT_Type_FillingCapacityOrder.qbl b/_Main/BL/Type_FillingCapacityOrder/_ROOT_Type_FillingCapacityOrder.qbl
new file mode 100644
index 0000000..4158fc2
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/_ROOT_Type_FillingCapacityOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FillingCapacityOrder
+{
+  #keys: '5[414382.0.394820060][414382.0.394820058][0.0.0][414382.0.394820059][414382.0.394820061]'
+  BaseType: Object
+  StructuredName: 'FillingCapacityOrders'
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_BusinessType.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..f3ff6a3
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.424779940][414382.0.424779939][414382.0.424779941]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_Customer.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_Customer.qbl
new file mode 100644
index 0000000..a8ac1aa
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414382.0.424779948][414382.0.424779947][414382.0.424779949]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_CustomerID.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..75c43a9
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414382.0.424779952][414382.0.424779951][414382.0.424779953]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_IsRelease.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_IsRelease.qbl
new file mode 100644
index 0000000..37a6c75
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_IsRelease.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsRelease
+{
+  #keys: '3[414382.0.428376803][414382.0.428376802][414382.0.428376804]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..0beee5a
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414382.0.424779944][414382.0.424779943][414382.0.424779945]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeDate.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeDate.qbl
new file mode 100644
index 0000000..f6d81ba
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SchemeDate
+{
+  #keys: '3[414382.0.424779957][414382.0.424779956][414382.0.424779958]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeName.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeName.qbl
new file mode 100644
index 0000000..eae286a
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/Attribute_SchemeName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SchemeName
+{
+  #keys: '3[414382.0.424779936][414382.0.424779935][414382.0.424779937]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_BusinessType.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_Customer.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_CustomerID.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SchemeName.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SchemeName.qbl
new file mode 100644
index 0000000..d8220c4
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/DefaultValue_SchemeName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SchemeName
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl
new file mode 100644
index 0000000..48ac995
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateFillingCapacityOrderScheme (
+  MacroPlan owner,
+  String schemeName
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-14-2023 (created)
+    
+    fillingCapacityOrders := selectset( owner,FillingCapacityOrder,fillingOrder,
+                                        not fillingOrder.IsFilling()
+                                        );
+    
+    // customer
+    customerList := selectvalues( fillingCapacityOrders,Elements,e,
+                                  e.Customer());
+    customer := customerList.Concatenate( ",")
+    
+    // customerID
+    customerIDList := selectvalues( fillingCapacityOrders,Elements,e,
+                                   e.CustomerID());
+    customerID := customerIDList.Concatenate( ",")
+    
+    // businessType
+    businessTypeList := selectvalues( fillingCapacityOrders,Elements,e,
+                                      e.BusinessType());
+    businessType := businessTypeList.Concatenate( ",")
+    
+    // salesSegmentName
+    salesSegmentNameList := selectvalues( fillingCapacityOrders,Elements,e,
+                                          e.SalesSegmentName());
+    salesSegmentName := salesSegmentNameList.Concatenate( ",")
+    
+    schemeDate := Date::Today();
+    
+    filllingCapacityOrderScheme := owner.FilllingCapacityOrderScheme(relnew,SchemeName := schemeName,SchemeDate := schemeDate,BusinessType := businessType,Customer := customer,CustomerID := customerID,
+                                                                      SalesSegmentName := salesSegmentName);
+    
+    traverse( fillingCapacityOrders,Elements,e)
+    {
+      e.SchemeName(schemeName);
+      e.IsFilling(true);
+      filllingCapacityOrderScheme.FillingCapacityOrder(relinsert, e);
+    }
+  *]
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_GetFillingSchemeDetails.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_GetFillingSchemeDetails.qbl
new file mode 100644
index 0000000..f5de5fb
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_GetFillingSchemeDetails.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetFillingSchemeDetails (
+  MacroPlan owner,
+  String schemeName
+) as owning FillingCapacityOrders
+{
+  TextBody:
+  [*
+    // NBoTk Sep-14-2023 (created)
+    
+    
+    return selectset( owner,FillingCapacityOrder,order,
+                      order.SchemeName() = schemeName);
+  *]
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_ReleaseFillingScheme.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_ReleaseFillingScheme.qbl
new file mode 100644
index 0000000..1cb3797
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_ReleaseFillingScheme.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReleaseFillingScheme (
+  MacroPlan owner,
+  FilllingCapacityOrderScheme scheme
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-14-2023 (created)
+    
+    traverse( scheme,FillingCapacityOrder,order)
+    {
+        owner.HistoricalFillingCapacityOrder(relnew,BusinessType := order.BusinessType(),Customer := order.Customer(),CustomerID := order.CustomerID(),
+                                     OrderDate := order.OrderDate(),OrderID := "",OrderType := "",
+                                    ProductID := order.ProductID(),Quantity := order.Quantity(),SalesAmount := order.SalesAmount(),
+                                    StockingPointID := order.StockingPointID(),UnitOfMeasureName := order.UnitOfMeasureName(),
+                                    VerNo := order.VerNo()
+                                    );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/_ROOT_Type_FilllingCapacityOrderScheme.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/_ROOT_Type_FilllingCapacityOrderScheme.qbl
new file mode 100644
index 0000000..f6cd8ba
--- /dev/null
+++ b/_Main/BL/Type_FilllingCapacityOrderScheme/_ROOT_Type_FilllingCapacityOrderScheme.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FilllingCapacityOrderScheme
+{
+  #keys: '5[414382.0.424779903][414382.0.424779901][0.0.0][414382.0.424779902][414382.0.424779904]'
+  BaseType: Object
+  StructuredName: 'FilllingCapacityOrderSchemes'
+}
diff --git a/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
index 3c09ae6..a5c8eb8 100644
--- a/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
@@ -55,7 +55,7 @@
     if( isnull( result) ) {
         result := Forecast::Create( product, stockingPoint, id, 
                                     startDate, endDate, quantity, price, 
-                                    priorityName, salesSegmentName, guard( currency.Name(), "" ), unitOfMeasureName, 
+                                    priorityName, salesSegmentName, currencyId, unitOfMeasureName, 
                                     0.0, false, true );
     } else {
         result.Update( product, stockingPoint, 
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl b/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl
new file mode 100644
index 0000000..7a92a12
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_ReceivingPanelMaterials.qbl
@@ -0,0 +1,92 @@
+Quintiq file version 2.0
+#parent: #root
+Method ReceivingPanelMaterials (
+  NamedValueTree requestnvt
+) as stream[NamedValueTree]
+{
+  TextBody:
+  [*
+    logfile( "--------------------------------------1------------------------------------------------" );
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    
+    businessType := businessTypeNameValue.GetValueAsString();
+    
+    if ( businessType = "杞﹁浇" ) {
+      PanelMaterialVehicle::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "姹借溅鐢靛瓙" ) {
+      PanelMaterialAutomotiveElectronics::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "澶╁崕" ) {
+      PanelMaterialTianHua::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "杩愬姩鍋ュ悍" ) {
+      PanelMaterialSportsHealth::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "涓撴樉" ) {
+      PanelMaterialSpecializedDisplay::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "IT" ) {
+      PanelMaterialIT::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "TM17" ) {
+      PanelMaterialTM17::ReceiveDataGeneration( this, requestnvt );
+    } else if ( businessType = "TM18" ) {
+      PanelMaterialTM18::ReceiveDataGeneration( this, requestnvt );
+    }
+    
+    
+    info( "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" );
+    
+    
+    replynvt := LibInt_MessageAccessor::CreateEmptyMessage();
+    LibInt_MessageAccessor::SetHeaderProperty( replynvt, "Content-Type", "application/json" );
+    
+    rootNamedValue := replynvt.Root();
+    bodyHandle := replynvt.GetHandle( "Body" );
+    petHandle := replynvt.GetHandle( "Pet" );
+    bodyNamedValue := rootNamedValue.Child( bodyHandle );
+    petNamedValue := bodyNamedValue.AddChild( petHandle );
+    categoryHandle := replynvt.GetHandle( "Category" );
+    categoryNamedValue := petNamedValue.AddChild( categoryHandle );
+    categoryIDHandle := replynvt.GetHandle( "Id" );
+    categoryIDNamedValue := categoryNamedValue.AddChild( categoryIDHandle );
+    categoryIDNamedValue.SetValue( 3 );
+    categoryNameHandle := replynvt.GetHandle( "Name" );
+    categoryNameNamedValue := categoryNamedValue.AddChild( categoryNameHandle );
+    categoryNameNamedValue.SetValue( "Cat" );
+    petNameHandle := replynvt.GetHandle( "Name" );
+    petNameValue := petNamedValue.AddChild( petNameHandle );
+    petNameValue.SetValue( "Pet1" );
+    petIdHandle := replynvt.GetHandle( "PetId" );
+    petIdNameValue := petNamedValue.AddChild( petIdHandle );
+    petIdNameValue.SetValue( 1 );
+    
+    photoUrlHandle := replynvt.GetHandle( "PhotoUrl" );
+    photoUrlNameValue := petNamedValue.AddChild( photoUrlHandle );
+    urlHandle := replynvt.GetHandle( "Url" );
+    photoUrlNameValue.AddChild( urlHandle, "url1" );
+    
+    statusHandle := replynvt.GetHandle( "Status" );
+    statusNameValue := petNamedValue.AddChild( statusHandle );
+    statusNameValue.SetValue( "available" );
+    
+    tagHandle := replynvt.GetHandle( "Tag" );
+    tagNameValue := petNamedValue.AddChild( tagHandle );
+    tagIdHandle := replynvt.GetHandle( "Id" );
+    tagNameValue.AddChild( tagIdHandle, 123 );
+    tagNameHandle := replynvt.GetHandle( "Name" );
+    tagNameValue.AddChild( tagNameHandle, "tag1" );
+    
+    
+    info( replynvt.ToString() );
+    
+    
+    return emit( replynvt );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_RefreshPanelMaterialData.qbl b/_Main/BL/Type_GlobalDTOTable/Method_RefreshPanelMaterialData.qbl
new file mode 100644
index 0000000..6c98026
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_RefreshPanelMaterialData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method RefreshPanelMaterialData (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    traverse ( macroPlan, Unit.Operation.PeriodTaskOperation, pto, true ) {
+      traverse ( pto, DependentDemand, dd, true ) {
+        product_MP := dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Product_MP();
+        if ( product_MP.IsPanelMaterial() ) {
+          macroPlan.PanelMaterial( relnew,
+                                   PanelModel          := product_MP.ID(),
+                                   MaterialDescription := product_MP.ID(),
+                                   StartDate           := dd.Start().Date(),
+                                   DemandQuantity      := dd.Quantity()
+                                  );
+        }                   
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_ReceivingPanelMaterials.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_ReceivingPanelMaterials.qbl
new file mode 100644
index 0000000..ad3eacc
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_ReceivingPanelMaterials.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceivingPanelMaterials (
+  NamedValueTree requestnvt
+) as stream[NamedValueTree]
+{
+  TextBody:
+  [*
+    MDSGlobalOTDTable::Find( DatasetFindOptions::Construct("GlobalOTDTable")) -> ( c ) {
+      return c.ReceivingPanelMaterials( requestnvt );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..b115460
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.440654932][414382.0.440654931][414382.0.440654933]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Customer.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Customer.qbl
new file mode 100644
index 0000000..93c7c88
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414382.0.440654949][414382.0.440654948][414382.0.440654950]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_CustomerID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..d19bfe9
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414382.0.440654952][414382.0.440654951][414382.0.440654953]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_FillingType.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_FillingType.qbl
new file mode 100644
index 0000000..ed1f80b
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_FillingType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FillingType
+{
+  #keys: '3[414382.0.440654936][414382.0.440654935][414382.0.440654937]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ForecastDemandDate.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ForecastDemandDate.qbl
new file mode 100644
index 0000000..af79bdf
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ForecastDemandDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastDemandDate
+{
+  #keys: '3[414382.0.440654980][414382.0.440654979][414382.0.440654981]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderDate.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..f308319
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414382.0.440654925][414382.0.440654924][414382.0.440654926]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderID.qbl
new file mode 100644
index 0000000..d60f646
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414382.0.440654912][414382.0.440654911][414382.0.440654913]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderType.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderType.qbl
new file mode 100644
index 0000000..96c9741
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_OrderType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderType
+{
+  #keys: '3[414382.0.440654922][414382.0.440654921][414382.0.440654923]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..924a48b
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414382.0.440654928][414382.0.440654927][414382.0.440654929]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID0.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID0.qbl
new file mode 100644
index 0000000..a2af94e
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProductID0.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID0
+{
+  #keys: '3[414382.0.440654946][414382.0.440654945][414382.0.440654947]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProfitabilityLevel.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProfitabilityLevel.qbl
new file mode 100644
index 0000000..ce076d7
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_ProfitabilityLevel.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProfitabilityLevel
+{
+  #keys: '3[414382.0.440654985][414382.0.440654984][414382.0.440654986]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Quantity.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..bcb4ab9
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414382.0.440654966][414382.0.440654965][414382.0.440654967]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_RewindsQuantityToReduced.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_RewindsQuantityToReduced.qbl
new file mode 100644
index 0000000..80f06ab
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_RewindsQuantityToReduced.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RewindsQuantityToReduced
+{
+  #keys: '3[414382.0.440654956][414382.0.440654955][414382.0.440654957]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_SalesAmount.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_SalesAmount.qbl
new file mode 100644
index 0000000..1b25f3d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_SalesAmount.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmount
+{
+  #keys: '3[414382.0.440654976][414382.0.440654975][414382.0.440654977]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_StockingPointID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..b5cbcb8
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414382.0.440730114][414382.0.440730113][414382.0.440730115]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..568e244
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414382.0.440654973][414382.0.440654972][414382.0.440654974]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_VerNo.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_VerNo.qbl
new file mode 100644
index 0000000..a951c14
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/Attribute_VerNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VerNo
+{
+  #keys: '3[414382.0.440654908][414382.0.440654907][414382.0.440654909]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_BusinessType.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_Customer.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_CustomerID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_OrderType.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_OrderType.qbl
new file mode 100644
index 0000000..36871b8
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_OrderType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderType
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID0.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID0.qbl
new file mode 100644
index 0000000..fcdd0b0
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_ProductID0.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID0
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..fbb83fc
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..b2012de
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_VerNo.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_VerNo.qbl
new file mode 100644
index 0000000..0edfadc
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/DefaultValue_VerNo.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: VerNo
+}
diff --git a/_Main/BL/Type_HistoricalFillingCapacityOrder/_ROOT_Type_HistoricalFillingCapacityOrder.qbl b/_Main/BL/Type_HistoricalFillingCapacityOrder/_ROOT_Type_HistoricalFillingCapacityOrder.qbl
new file mode 100644
index 0000000..23855ad
--- /dev/null
+++ b/_Main/BL/Type_HistoricalFillingCapacityOrder/_ROOT_Type_HistoricalFillingCapacityOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type HistoricalFillingCapacityOrder
+{
+  #keys: '5[414382.0.440654891][414382.0.440654889][0.0.0][414382.0.440654890][414382.0.440654892]'
+  BaseType: Object
+  StructuredName: 'HistoricalFillingCapacityOrders'
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..c91ccf2
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.385610070][414382.0.385610069][414382.0.385610071]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_CurrencyID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..6e3ea82
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_CurrencyID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414382.0.385610058][414382.0.385610057][414382.0.385610059]'
+  Description: '璐у竵'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_Customer.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Customer.qbl
new file mode 100644
index 0000000..de33204
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Customer.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414382.0.385610043][414382.0.385610042][414382.0.385610044]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_CustomerID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..5236115
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414382.0.385610052][414382.0.385610051][414382.0.385610053]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_ID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_ID.qbl
new file mode 100644
index 0000000..ab18ec7
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414382.0.385610061][414382.0.385610060][414382.0.385610062]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_IsAvailable.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_IsAvailable.qbl
new file mode 100644
index 0000000..7b79b6c
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_IsAvailable.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsAvailable
+{
+  #keys: '3[414382.0.385610046][414382.0.385610045][414382.0.385610047]'
+  Description: '璁㈠崟鏄惁鍙備笌璁″垝'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderDate.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..c8eca1a
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414382.0.385610082][414382.0.385610081][414382.0.385610083]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderID.qbl
new file mode 100644
index 0000000..993c964
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414382.0.385610049][414382.0.385610048][414382.0.385610050]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderLineID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..33b2a30
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderLineID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414382.0.385610040][414382.0.385610039][414382.0.385610041]'
+  Description: '璁㈠崟琛屽彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderType.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderType.qbl
new file mode 100644
index 0000000..f539ba0
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_OrderType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderType
+{
+  #keys: '3[414382.0.385610034][414382.0.385610033][414382.0.385610035]'
+  Description: '璁㈠崟绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_Price.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Price.qbl
new file mode 100644
index 0000000..50d7084
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Price.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414382.0.385610055][414382.0.385610054][414382.0.385610056]'
+  Description: '鍗曚环'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_PriorityName.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..38db16d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_PriorityName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414382.0.385610079][414382.0.385610078][414382.0.385610080]'
+  Description: '浼樺厛绾�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_ProductID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..018fc15
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414382.0.385610067][414382.0.385610066][414382.0.385610068]'
+  Description: '浜у搧缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_Quantity.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..06b7d7d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414382.0.385610076][414382.0.385610075][414382.0.385610077]'
+  Description: '鏁伴噺'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesAmount.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesAmount.qbl
new file mode 100644
index 0000000..b5fe9ed
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesAmount.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmount
+{
+  #keys: '3[414382.0.394810026][414382.0.394810025][414382.0.394810027]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..5c59143
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414382.0.385610064][414382.0.385610063][414382.0.385610065]'
+  Description: '閿�鍞儴闂ㄥ悕绉�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_StockPointID.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_StockPointID.qbl
new file mode 100644
index 0000000..ae7cbb1
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_StockPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockPointID
+{
+  #keys: '3[414382.0.385610073][414382.0.385610072][414382.0.385610074]'
+  Description: '搴撳瓨鐐瑰敮涓�鏍囪瘑'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..d6b4ecf
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414382.0.385610037][414382.0.385610036][414382.0.385610038]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Attribute_VerNo.qbl b/_Main/BL/Type_HistoricalSalesOrder/Attribute_VerNo.qbl
new file mode 100644
index 0000000..fdb397d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Attribute_VerNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VerNo
+{
+  #keys: '3[414382.0.385610106][414382.0.385610105][414382.0.385610107]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_BusinessType.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..cae9679
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_Customer.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CustomerID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_IsAvailable.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_IsAvailable.qbl
new file mode 100644
index 0000000..efaa00d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_IsAvailable.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsAvailable
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderType.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderType.qbl
new file mode 100644
index 0000000..36871b8
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_OrderType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderType
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_PriorityName.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..59ad087
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_PriorityName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_ProductID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_StockPointID.qbl b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_StockPointID.qbl
new file mode 100644
index 0000000..7c0c612
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/DefaultValue_StockPointID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: StockPointID
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/Method_GetProductIdString.qbl b/_Main/BL/Type_HistoricalSalesOrder/Method_GetProductIdString.qbl
new file mode 100644
index 0000000..25fd342
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/Method_GetProductIdString.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetProductIdString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    productIDs := selectuniquevalues( owner,MappingProduct,product,
+                                      product.BusinessType() = businessType,
+                                      product.ID()
+                                      );
+    
+    value := "TC067FYMM05-00;B26700040";
+    
+    if( not isnull( productIDs) )
+    { 
+         value := productIDs.Concatenate( ";");
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerID.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerID.qbl
new file mode 100644
index 0000000..d7d5927
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerID.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetCustomerID (
+  MacroPlan owner,
+  String customer
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    
+    cunstomer :=  select( owner,MappingCustomerOrder,order,
+                         order.Customer() = customer
+                         );
+    
+    return cunstomer.CustomerID();
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerString.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerString.qbl
new file mode 100644
index 0000000..c039119
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetCustomerString.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetCustomerString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    customers := selectuniquevalues( owner,MappingCustomerOrder,order,
+                                      order.BusinessType() = businessType,
+                                      order.Customer()
+                                      );
+    
+    
+    
+    value := customers.Concatenate( ";");
+    
+    if( value = "" )
+    {
+      value := "灏忕背閫氳鎶�鏈湁闄愬叕鍙�";
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetHistoricalSalesOrders.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetHistoricalSalesOrders.qbl
new file mode 100644
index 0000000..2a8fe90
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetHistoricalSalesOrders.qbl
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetHistoricalSalesOrders (
+  String businessType,
+  String customer,
+  String sheetProfitability,
+  String productID,
+  Date end,
+  MacroPlan owner,
+  Date start
+) as owning HistoricalSalesOrders
+{
+  Description: 'Get historical sales orders of deleiveryCells'
+  TextBody:
+  [*
+    // NBoTk Sep-11-2023 (created)
+    
+    // filter businessType start end 
+    // start default 3 years, end is today
+    value := selectset( owner,HistoricalSalesOrder,order,
+                        true,
+                        order.BusinessType() = businessType
+                        and order.OrderDate() >= start
+                        and order.OrderDate() <= end
+                        );
+    
+    // filter customer
+    if(customer <> '' )
+    {
+        value := selectset( value,Elements,orer,
+                            true,
+                            orer.Customer() = customer
+                            );
+    }
+    
+    // filter sheetProfitability
+    //if(sheetProfitability <> '' )
+    //{
+    //    value := selectset( value,Elements,orer,
+    //                        true,
+    //                        orer.S() = sheetProfitability
+    //                        );
+    //}
+    
+    // filter productID
+    if(productID <> '' )
+    {
+        value := selectset( value,Elements,orer,
+                            true,
+                            orer.ProductID() = productID
+                            );
+    }
+    
+    // order by 鐩堝埄姘村钩 闇�姹傛椂闂�
+    
+    value := selectsortedset( value,Elements,order,
+                              true,
+                              //order.SheetProfitability(),
+                              order.OrderDate()
+                              );
+    
+    return &value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetProductIdString.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetProductIdString.qbl
new file mode 100644
index 0000000..faa36c9
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetProductIdString.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetProductIdString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    productIDs := selectuniquevalues( owner,MappingProduct,product,
+                                      product.BusinessType() = businessType,
+                                      product.ID()
+                                      );
+    
+    value := productIDs.Concatenate( ";");
+    
+    
+    if( value = "" )
+    {
+      value := "TC067FYMM05-00;B26700040";
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetSalesSegmentString.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetSalesSegmentString.qbl
new file mode 100644
index 0000000..e76aaec
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetSalesSegmentString.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    salesSegments := selectuniquevalues( owner,MappingSalesSegment,salesSegment,
+                                        salesSegment.BusinessType() = businessType,
+                                        salesSegment.ParentName()
+                                        );
+    
+    
+    
+    value := salesSegments.Concatenate( ";");
+    
+    
+    if( value = "" )
+    {
+      value := "娑堣垂鍝佽惀閿�涓績;閿�鍞竴绉�";
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetStockingPointString.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetStockingPointString.qbl
new file mode 100644
index 0000000..d7ce897
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetStockingPointString.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    stockingPointIDs := selectuniquevalues( owner,StockingPoint_MP,stock,
+                                      stock.ID()
+                                      );
+    
+     value := stockingPointIDs.Concatenate( ";");
+    
+    if( value = "" )
+    {
+         value := "I13_P;I13_SA";
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetUnitOfMeasuresString.qbl b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetUnitOfMeasuresString.qbl
new file mode 100644
index 0000000..58570ab
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/StaticMethod_GetUnitOfMeasuresString.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetUnitOfMeasuresString (
+  MacroPlan owner,
+  String businessType
+) as String
+{
+  TextBody:
+  [*
+    // NBoTk Sep-13-2023 (created)
+    
+    units := selectuniquevalues( owner,MappingUnitOfMeasure,unit,
+                                      unit.Name()
+                                      );
+    
+    
+    value := units.Concatenate( ";");
+    
+    if( value = "" )
+    {
+       value := "PCS;MPC";
+    }
+    
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_HistoricalSalesOrder/_ROOT_Type_HistoricalSalesOrder.qbl b/_Main/BL/Type_HistoricalSalesOrder/_ROOT_Type_HistoricalSalesOrder.qbl
new file mode 100644
index 0000000..3e9f0af
--- /dev/null
+++ b/_Main/BL/Type_HistoricalSalesOrder/_ROOT_Type_HistoricalSalesOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type HistoricalSalesOrder
+{
+  #keys: '5[414382.0.385610030][414382.0.385610028][0.0.0][414382.0.385610029][414382.0.385610031]'
+  BaseType: Object
+  StructuredName: 'HistoricalSalesOrders'
+}
diff --git a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
index 4c0470e..4116cce 100644
--- a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
@@ -23,23 +23,27 @@
     product := Product_MP::FindById( macroPlan, productId );
     stockingPoint := StockingPoint_MP::FindById( macroPlan, stockingPointId );
     account := Account_MP::FindByName( macroPlan, accountName );
-    if( isnull( product ) ) {
-        error( "product not found" );  
-    }
-    if( isnull( stockingPoint ) ) {
-        error( "stocking point not found" );  
-    }
-    if( isnull( account ) ) {
-        error( "account not found" );  
-    }
-    result := InventoryValueAndCost::FindById( macroPlan, id );
-    if( isnull( result ) ) {
+    //if( isnull( product ) ) {
+    //    error( "product not found" );  
+    //}
+    //if( isnull( stockingPoint ) ) {
+    //    error( "stocking point not found" );  
+    //}
+    //if( isnull( account ) ) {
+    //    error( "account not found" );  
+    //}
+    result := InventoryValueAndCost::FindById( macroPlan, stockingPointId,productId,start,id );
+    if( not isnull( product) and not isnull( stockingPoint) and not isnull( account)){
+      if( isnull( result ) ) {
         result := InventoryValueAndCost::Create( id, product, stockingPoint, account, costDriver, start, cost, true ).astype( InventoryValueAndCost );
-    } else if( result.ProductID() <> productId ) {
-        error( "cannot change product of inventory value and cost" )
-    } else {
-        result.Update( account, costDriver, start, account.DefaultTimeUnit(), account.DefaultLengthOfTime(), cost, true );
+      } else if( result.ProductID() <> productId ) {
+        info( "cannot change product of inventory value and cost" )
+      } 
+    //  else {
+    //    result.Update( account, costDriver, start, account.DefaultTimeUnit(), account.DefaultLengthOfTime(), cost, true );
+    //  }
     }
+    
     return result;
   *]
 }
diff --git a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
index b0dc53e..133145d 100644
--- a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
+++ b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
@@ -2,13 +2,16 @@
 #parent: #root
 StaticMethod FindById (
   MacroPlan macroPlan,
+  String productId,
+  String stockPointId,
+  Date start,
   String id
 ) as InventoryValueAndCost
 {
   TextBody:
   [*
     // yypsybs Aug-16-2023 (created)
-    value := select( macroPlan, Product_MP.InventoryValueAndCost, item, true, item.ID() = id );
+    value := select( macroPlan, Product_MP.InventoryValueAndCost, item, true, item.ProductID()=productId and item.StockingPointID() = stockPointId and item.Start() = start );
     return value;
   *]
 }
diff --git a/_Main/BL/Type_Lane/StaticMethod_CreateLane.qbl b/_Main/BL/Type_Lane/StaticMethod_CreateLane.qbl
index d78931a..64c72eb 100644
--- a/_Main/BL/Type_Lane/StaticMethod_CreateLane.qbl
+++ b/_Main/BL/Type_Lane/StaticMethod_CreateLane.qbl
@@ -12,7 +12,7 @@
   [*
     // Administrator Jul-12-2023 (created)
     //Set default value
-    isenabled := false;
+    isenabled := true;
     datestart := Date::Construct(1900, 1, 1) ;
     dateend := Date::Construct(9999, 12, 31);
     standardleadtime := Duration::Zero();
diff --git a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
index b8b0705..d030255 100644
--- a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
@@ -11,7 +11,7 @@
     currencyid := "CNY";
     startdate := Date::Date( 1900, 1, 1 );
     enddate := Date::Date( 9999, 12, 31 );
-    capacitytype := "Infinite";
+    capacitytype := "Transport quantity";
     
     if( isnull( Unit::FindById( this, "绌鸿繍" ) ) ){
       this.Unit( relnew, 
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
index 87cbdf3..f9cd042 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
@@ -9,7 +9,7 @@
   [*
     // renhao Aug-14-2023 (created)
     date := Date :: Today();
-    listtodeal := selectset( this,MappingActualPISPIP,actual,not isnull( Product_MP::FindById( this, actual.ProductID() ) ) );
+    listtodeal := selectset( this,MappingActualPISPIP,actual,true );
     totalcount := listtodeal.Size();
     info( "ActualPISPIP has " + totalcount.AsQUILL() + " rows in total" );
     
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
index 7295bad..ea2ad61 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
@@ -9,15 +9,14 @@
   [*
     // renhao Aug-14-2023 (created)
     
-    listtodeal := selectset( this,MappingExternalSupply,externalSupply, 
-                             not isnull( StockingPoint_MP::FindById( this, externalSupply.StockingPointID() ) ) and not isnull( Product_MP::FindById( this, externalSupply.ProductID() ) ) );
+    listtodeal := selectset( this,MappingExternalSupply,externalSupply, true );
     totalcount := listtodeal.Size();
     info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
     traverse( listtodeal,Elements,externalSupply){
       count := count + 1;
-      if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
+      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);
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
index 2138aae..0789263 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
@@ -5,23 +5,26 @@
   TextBody:
   [*
     // yypsybs Aug-15-2023 (created)
-    listtodeal := selectset( this,MappingInventoryValueAndCost,item,not isnull( Product_MP::FindById( this, item.ProductID() ) ), not isnull( StockingPoint_MP::FindById( this, item.StockingPointID() ) ) );
+    listtodeal := selectset( this,MappingInventoryValueAndCost,item,true );
     totalcount := listtodeal.Size();
+    
     info( "InventoryCost has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
     traverse( listtodeal, Elements, item ) {
-      count := count + 1;
-      if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
-        info( "Now is dealing with the " + count.AsQUILL() + "InventoryCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
+        count := count + 1;
+        if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
+          info( "Now is dealing with the " + count.AsQUILL() + "InventoryCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
         }
-      if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
-          InventoryValueAndCost::CreateOrUpdate( this, item.ID(), item.ProductID(), 
+        
+        InventoryValueAndCost::CreateOrUpdate( this, item.ID(), item.ProductID(), 
                                                  item.StockingPointID(), 
-                                                 item.AccountName(), item.CostDriver(), item.Start(), item.Cost() );
-      }else{
-        info( "invaild product: " + item.ProductID().AsQUILL() );
-        }
+                                                 item.AccountName(), item.CostDriver(), item.Start(), item.Cost());
+    //  if( not isnull( Product_MP::FindProductTypeIndex( item.ProductID() ) )  and not isnull( StockingPoint_MP :: FindStockingPointTypeIndex( item.StockingPointID()))){
+    //      
+    //  }else{
+    //    info( "invaild product: " + item.ProductID().AsQUILL() );
+    //    }
     }
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
index 93b5707..892f5ef 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
@@ -17,7 +17,8 @@
     bomList := selectsortedset(  this, MappingBOM, item,
                                  ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, 
                                          true, 
-                                         businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 )
+    //                                     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 ),
@@ -28,19 +29,19 @@
         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";
             // ========妫�鏌�========
-            product := Product_MP::FindById( this, firstRow.ProductCode() );
+            product := Product_MP::FindProductTypeIndex( firstRow.ProductCode() );
             if( not isnull( product ) ) {
     //              error( "product : " + firstRow.ProductCode() + " not found" );
-              stockingPoint := StockingPoint_MP::FindById( this, stockingPointId );
-              inputStockingPoint := StockingPoint_MP::FindById( this, inputStockingPointId );
+              stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( stockingPointId );
+              inputStockingPoint := StockingPoint_MP::FindStockingPointTypeIndex(  inputStockingPointId );
     //          info( stockingPointId.AsQUILL() );
       //        if( isnull( stockingPoint ) ) {
       //            error( "stockingPoint : " + stockingPointId + " not found" );
       //        }
-              routing := Routing::FindById( this, routingId );
+              routing := Routing::FindRoutingTypeIndex(  routingId );
               if( not isnull( routing ) ) {
     //              error( "routing : " + routingId + " not found" );
                 // ========澶勭悊杈撳嚭========
diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index 03a3858..059c6c9 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -67,7 +67,7 @@
                         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.ProductType() + "_Stock";
                           stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
                           if( isnull( stockingPointAlter ) ) {
                               error( "stockingPoint : " + stockingPointIdAlter + " not found" );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
index ab499a8..6a24698 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataSupplyPurchase.qbl
@@ -18,28 +18,35 @@
     routingStep := RoutingStep::Create( routing, routingStepName, "", true );
     product := Product_MP::FindById( this, productId );
     if( isnull( product ) ) {
-        error( "product : " + productId + " not found" );
+        info(  "product : " + productId + " not found" );
     }
     stockingPointId := orgCode + "_" + productType + "_Stock";
     stockingPoint := StockingPoint_MP::FindById( this, stockingPointId );
     if( isnull( stockingPoint ) ) {
-        error( "stockingPoint : " + stockingPointId + " not found" );
+        info( "stockingPoint : " + stockingPointId + " not found" );
     }
-    unit := Unit::FindById( this, unitId );
-    if( isnull( unit ) ) {
+    
+    if( not isnull( product) and not isnull( stockingPoint)){
+      unit := Unit::FindById( this, unitId );
+      if( isnull( unit ) ) {
         unit := this.Unit( relnew, 
                           ID := unitId, Name := unitId, CapacityType := "Infinite",
                           DefaultGridX := 0, DefaultGridY := 0,
                           IsManuallyConfigured := false,
                           Currency_MP := this.BaseCurrency(), UnitOfMeasure_MP := this.DefaultUnitOfMeasure() );
-    }
+      }
     // Operation
-    operation := Operation::Create( operationId, unit, operationId, routingStep, 
+      operation := Operation::FindOperationTypeIndex( operationId);
+      if( isnull( operation)){
+        operation := Operation::Create( operationId, unit, operationId, routingStep, 
                                     Duration::Zero(), Duration::Zero(), 1.0, false, 
                                     Real::MinReal(), false, Real::MaxReal(), 
                                     0.0, 0.0, false, true );
     // OperaionBom
-    operation.CreateOperationBOM( product, stockingPoint, false, true );
-    operation.GetOperationBOM( product.ID(), stockingPoint.ID(), false ).Quantity( 1 );
+        operation.CreateOperationBOM( product, stockingPoint, false, true );
+        operation.GetOperationBOM( product.ID(), stockingPoint.ID(), false ).Quantity( 1 );
+      }
+      
+    }
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
index 3a315d0..98be129 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
@@ -38,7 +38,7 @@
     // Get the operation cost data
     traverse( listtodealwithmaxsn, Elements, item ){
       count := count + 1;
-      if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
+      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
         info( "Now is dealing with the " + count.AsQUILL() + "OperationCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
         }
       id := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection() + "_" + item.Line();
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
index a3a19ed..07e9838 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
@@ -11,8 +11,8 @@
     toDealList := construct( MappingOperations );
     if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) {
         toDealList := selectsortedset( this, MappingOperation, item, 
-    //                                   businessTypes.Find( item.BusinessType() ) >= 0, 
-                                       businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0, 
+                                       businessTypes.Find( item.BusinessType() ) >= 0, 
+    //                                   businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0, 
                                        item.SequenceNumber() );
     } else {
         toDealList := selectsortedset( this, MappingOperation, item, 
@@ -26,7 +26,7 @@
         routingId := item.OrganCode() + "_" + item.ProductID();
         unitId := item.OrganCode() + "_" + item.PlantName() + "_" + item.ProcessSection();
         routingStepName := item.ProcessSection() + "_" + [String]item.SequenceNumber();
-        operationId := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection();
+        operationId := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection()+"_" + [String]item.SequenceNumber();
     //    info( "========" )
     //    info( "routingId:" + routingId );
     //    info( "unitId:" + unitId );
@@ -51,15 +51,16 @@
         if( isnull( routingStep ) ) {
             routingStep := RoutingStep::Create( routing, routingStepName, "", true );
         }
-        // UnitOfMeasure
-        unitOfMeasure := UnitOfMeasure_MP::FindByName( this, item.UnitOfMeasureName() );
-        if( isnull( unitOfMeasure ) ) {
-            error( "unit of measure [" + item.UnitOfMeasureName() + "] not found for routing [" + routingId + "]" );
-        }
+        
         // Unit
         unit := Unit::FindById( this, unitId );
         if( isnull( unit ) ) {
-            unit := this.Unit( relnew, 
+          // UnitOfMeasure
+        unitOfMeasure := UnitOfMeasure_MP::FindByName( this, item.UnitOfMeasureName() );
+          if( isnull( unitOfMeasure ) ) {
+              info( "unit of measure [" + item.UnitOfMeasureName() + "] not found for routing [" + routingId + "]" );
+          }
+           unit := this.Unit( relnew, 
                               ID := unitId, Name := unitId, CapacityType := "Infinite",
                               DefaultGridX := 0, DefaultGridY := 0,
                               IsManuallyConfigured := false,
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
index cb6a99d..fa5aa3b 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
@@ -22,10 +22,10 @@
           }
     } else {
         if( iskeyproduct = true ){
-          listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true, businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 );
+          listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true,  businesstypes.Find(  item.BusinessType()) > 0 );
           }
         else{
-        listToDeal := selectset( this, MappingProduct, item, businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 );
+        listToDeal := selectset( this, MappingProduct, item, businesstypes.Find(  item.BusinessType()) > 0 );
         }
     }
     totalcount := listToDeal.Size();
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
index 2bd20a4..2d63310 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
@@ -7,7 +7,7 @@
   [*
     // Administrator Aug-17-2023 (created)
     // list to deal
-    listtodeal := selectset( this, MappingProductInLane, item, not isnull( Product_MP::FindById( this, item.ProductID() ) ), not isnull( Lane::FindLaneTypeIndex( item.LineID() ) ) );
+    listtodeal := selectset( this, MappingProductInLane, item ,true );
     totalcount := listtodeal.Size();
     info( "ProductInLane has " + totalcount.AsQUILL() + " rows in total" );
     
@@ -15,7 +15,7 @@
     // Create ProductInLane
     traverse( listtodeal, Elements, item ){
       count := count + 1;
-      if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
+      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
         info( "Now is dealing with the " + count.AsQUILL() + "ProductInLane " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
         }
       ProductInLane::CreateOrUpdate( this, item.ProductID(), item.LineID() );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index fa613b6..b5618c6 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -15,13 +15,14 @@
         listtodeal := selectset( this, MappingOperation, item, true );
     } else {
         listtodeal := selectset( this, MappingOperation, item, 
-                                 businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0
-                                  );
+    //                             businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0
+                                 businesstypes.Find( item.BusinessType() ) >= 0
+                                );
     }
     
     //Set the Default values
     unitofmeasurename := "PCS";
-    capacitytype := "Infinite";
+    capacitytype := "Transport quantity";
     
     // Get the root data
     Unit::CreateOrUpdate( this, 
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
index dc5d8d6..fe4e7a1 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
@@ -67,7 +67,7 @@
     macroPlan.Broker_OTD_Product().Execute();
     info( "Product Data Broker Finished, Start Product Mapping" );
     //testproduct := construct( Strings );
-    macroPlan.MappingProductData( businessTypes, false );
+    macroPlan.MappingProductData( businessTypes, isKeyProduct );
     
     //鍗曚綅杞崲-7
     BaseConversionFactor::DoSync( macroPlan );
@@ -107,31 +107,31 @@
     data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
     macroPlan.ApiLaneLegsData( data );
     
-    //// 渚涘簲缃戠粶锛堣溅閬擄級-12
-    //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
-    //macroPlan.Broker_OTD_ProductInLane().Execute();
-    //info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
-    //macroPlan.MappingProductInLaneData();
+    // 渚涘簲缃戠粶锛堣溅閬擄級-12
+    info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
+    macroPlan.Broker_OTD_ProductInLane().Execute();
+    info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
+    macroPlan.MappingProductInLaneData();
     
     // 鍦ㄥ簱搴撳瓨鏁版嵁-13
     info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
     macroPlan.Broker_OTD_ActualPISPIP().Execute();
     info( "ActualPISPIP Data Broker Finished, Start ActualPISPIP Mapping" );
     //macroPlan.MappingActualPISPIPData( businessTypes, true );
-    macroPlan.MappingActualPISPIPData( businessTypes, false );
+    macroPlan.MappingActualPISPIPData( businessTypes, isKeyProduct );
     
     // 鍦ㄩ�斿簱瀛�-14
     info( "ActualPISPIP Finished, Start ExternalSupply Data Broker" );
     macroPlan.Broker_OTD_ExternalSupply().Execute();
     //macroPlan.MappingExternalSupplyData( businessTypes, true );
     info( "ExternalSupply Data Broker Finished, Start ExternalSupply Mapping" );
-    macroPlan.MappingExternalSupplyData( businessTypes, false );
+    macroPlan.MappingExternalSupplyData( businessTypes, isKeyProduct );
     
     // 搴撳瓨鎴愭湰-15
     InventoryValueAndCost::DoSync( macroPlan );
     
-    //// todo 鍒堕�犳垚鏈�-16
-    //info( "InventoryCost Finished, Start OperationCost Mapping" );
+    // todo 鍒堕�犳垚鏈�-16
+    info( "InventoryCost Finished, Start OperationCost Mapping" );
     //macroPlan.MappingOperationCostData( businessTypes );
     
     // 璁㈠崟棰勬祴-17
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl
index 6d76f0a..15d22df 100644
--- a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl
@@ -30,10 +30,97 @@
     //    finishedProductDeliveryMinLTDays  := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "鎴愬搧浜や粯Min-LT锛堝ぉ锛�" ).value();
         longAndShortCycleLabels           := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "闀跨煭鍛ㄦ湡鏍囩" ).value();
         genericSpecialLabels              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "閫氱敤涓撶敤鏍囩" ).value();
-    //    automaticMaterialPlanningPolicies := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "鑷姩鐗╂枡璁″垝绛栫暐" ).value();
+        automaticMaterialPlanningPolicies := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "鑷姩鐗╂枡璁″垝绛栫暐" ).value();
         usersManuallySchedulePolicies     := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "鐢ㄦ埛鎵嬪姩璁″垝绛栫暐" ).value();
         minimumNumberOfDaysInStock        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "搴撳瓨鏈�灏忓ぉ鏁�" ).value();
         maximumNumberOfDaysInInventory    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "搴撳瓨鏈�澶уぉ鏁�" ).value();
+        if ( businessType = "闆嗗洟闈㈡澘" ) {
+          if ( createItemCode.StartsWith( "103" ) ) {
+            if( longAndShortCycleLabels = "闀垮懆鏈�" ) {
+              if ( genericSpecialLabels = "涓撶敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else if ( genericSpecialLabels = "閫氱敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "瀹夊叏搴撳瓨" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else {
+                error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+              }
+            } else if ( longAndShortCycleLabels = "鐭懆鏈�" ) {
+              if ( genericSpecialLabels = "涓撶敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else if ( genericSpecialLabels = "閫氱敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "瀹夊叏搴撳瓨" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else {
+                error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+              }
+            } else {
+              error( "闀跨煭鍛ㄦ湡鐨勫�煎嚭閿欙細", createItemCode );
+            }
+          } else {
+            if( longAndShortCycleLabels = "闀垮懆鏈�" ) {
+              if ( genericSpecialLabels = "涓撶敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else if ( genericSpecialLabels = "閫氱敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else {
+                error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+              }
+            } else if ( longAndShortCycleLabels = "鐭懆鏈�" ) {
+              if ( genericSpecialLabels = "涓撶敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else if ( genericSpecialLabels = "閫氱敤" ) {
+                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                  error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+                }
+              } else {
+                error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+              }
+            } else {
+              error( "闀跨煭鍛ㄦ湡鐨勫�煎嚭閿欙細", createItemCode );
+            }
+          }
+        } else {
+          if( longAndShortCycleLabels = "闀垮懆鏈�" ) {
+            if ( genericSpecialLabels = "涓撶敤" ) {
+              if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+              }
+            } else if ( genericSpecialLabels = "閫氱敤" ) {
+              if ( automaticMaterialPlanningPolicies <> "瀹夊叏搴撳瓨" ) {
+                error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+              }
+            } else {
+              error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+            }
+          } else if ( longAndShortCycleLabels = "鐭懆鏈�" ) {
+            if ( genericSpecialLabels = "涓撶敤" ) {
+              if ( automaticMaterialPlanningPolicies <> "JIT" ) {
+                error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+              }
+            } else if ( genericSpecialLabels = "閫氱敤" ) {
+              if ( automaticMaterialPlanningPolicies <> "VMI" ) {
+                error( "瀵煎叆鐨勮嚜鍔ㄨ鍒掔瓥鐣ュ�煎嚭閿欙細", createItemCode );
+              }
+            } else {
+              error( "涓撻�氱敤鏍囩鐨勫�煎嚭閿欙細", createItemCode );
+            }
+          } else {
+            error( "闀跨煭鍛ㄦ湡鐨勫�煎嚭閿欙細", createItemCode );
+          }
+        }
         try {
           matAttrSettingAndPlanStrategy := globalOTDTable.MatAttrSettingAndPlanStrategy( relnew,
                                                                                          BusinessType := businessType,
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl
index c88a29b..624f54f 100644
--- a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl
@@ -11,5 +11,7 @@
     this.CheckThePrecedingColumn( globalOTDTable );
     
     this.CreateOrUpdateData( globalOTDTable );
+    
+    this.VerificationData( globalOTDTable );
   *]
 }
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerificationData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerificationData.qbl
new file mode 100644
index 0000000..d09c337
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerificationData.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Method VerificationData (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    info( "绛栫暐涓暟锛�", globalOTDTable.MatAttrSettingAndPlanStrategy( relsize ) );
+    traverse ( globalOTDTable, MatAttrSettingAndPlanStrategy, masaps ) {
+      if ( masaps.PlanningStrategyCustom() <> "瀹夊叏搴撳瓨" and masaps.PlanningStrategyCustom() <> "JIT" and masaps.PlanningStrategyCustom() <> "M/A" and
+           masaps.PlanningStrategyCustom() <> "PO鎷夋枡" and masaps.PlanningStrategyCustom() <> "VMI" ) {
+        error( "鎵嬪姩璁剧疆绛栫暐閿欒锛�", masaps.MatCode() );     
+      }
+      
+      if ( ( masaps.PlanningStrategyAuto() <> ""   and masaps.PlanningStrategyAuto() = "JIT" )  or 
+           ( masaps.PlanningStrategyCustom() <> "" and masaps.PlanningStrategyCustom() = "JIT" ) 
+          ) {
+        if ( masaps.MinimumNumberOfDaysInStock() > 0 or masaps.MaximumNumberOfDaysInInventory() > 0 ) {
+          error( "JIT绛栫暐瀛樺湪鏈�灏忓拰鏈�澶у簱瀛樺ぉ鏁帮細", masaps.MatCode() );
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_SynchronizeInventoryTargets.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_SynchronizeInventoryTargets.qbl
new file mode 100644
index 0000000..17e144a
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_SynchronizeInventoryTargets.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInventoryTargets (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    traverse ( globalOTDTable, MatAttrSettingAndPlanStrategy, masaps ) {
+      hasMaxLevel := masaps.MaximumNumberOfDaysInInventory() <> 0;
+      product_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = masaps.MatCode() );
+      if ( not isnull( product_MP ) ) {
+        traverse ( product_MP, ProductInStockingPoint_MP, pispmp ) {
+          targetInventorySpecification := select( product_MP, InventorySpecification, tempIS, tempIS.ProductID() = product_MP.ID() and 
+                                                              tempIS.StockingPointID() = pispmp.StockingPointID() and
+                                                              tempIS.Start()           = macroPlan.StartOfPlanning().Date() );
+          if ( not isnull( targetInventorySpecification ) ) {
+            targetInventorySpecification.Delete();
+          }
+          InventorySpecification::Create( product_MP,
+                                          pispmp.StockingPoint_MP(),
+                                          macroPlan.StartOfPlanning().Date(),
+                                          false,
+                                          0.0,
+                                          0.0,
+                                          true,
+                                          [Real]masaps.MinimumNumberOfDaysInStock(),
+                                          0.0,
+                                          hasMaxLevel,
+                                          true,
+                                          [Real]masaps.MaximumNumberOfDaysInInventory(),
+                                          0.0,
+                                          false,
+                                          false
+                                         );
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterial/Attribute_DemandQuantity.qbl b/_Main/BL/Type_PanelMaterial/Attribute_DemandQuantity.qbl
new file mode 100644
index 0000000..50633e7
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/Attribute_DemandQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandQuantity
+{
+  #keys: '3[414702.0.155922013][414702.0.155922012][414702.0.155922014]'
+  Description: '闇�姹傛暟閲�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterial/Attribute_MaterialDescription.qbl b/_Main/BL/Type_PanelMaterial/Attribute_MaterialDescription.qbl
new file mode 100644
index 0000000..1acc53a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/Attribute_MaterialDescription.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialDescription
+{
+  #keys: '3[414702.0.155921990][414702.0.155921989][414702.0.155921991]'
+  Description: '鐗╂枡鎻忚堪'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterial/Attribute_PanelModel.qbl b/_Main/BL/Type_PanelMaterial/Attribute_PanelModel.qbl
new file mode 100644
index 0000000..68fdbb0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/Attribute_PanelModel.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelModel
+{
+  #keys: '3[414702.0.155921977][414702.0.155921976][414702.0.155921978]'
+  Description: '闈㈡澘鍨嬪彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterial/Attribute_StartDate.qbl b/_Main/BL/Type_PanelMaterial/Attribute_StartDate.qbl
new file mode 100644
index 0000000..faaa2a9
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414702.0.155922000][414702.0.155921999][414702.0.155922001]'
+  Description: '寮�濮嬫椂闂�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl b/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl
new file mode 100644
index 0000000..d1dcf3b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/StaticMethod_Send.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Send (
+  MacroPlan macroPlan,
+  Scenario scenario,
+  String businessType,
+  String address
+)
+{
+  TextBody:
+  [*
+    info( "鐗堟湰鍙凤細", scenario.Name(), "    浜嬩笟閮細", businessType );
+    
+    jsonBuilder := JSON::Object();
+    
+    jsonBuilder.Add( "releaseDate", Date::ActualDate().Format( "Y-M2-D2" ) );
+    jsonBuilder.Add( "businessType", businessType );
+    jsonBuilder.Add( "scenarioName", scenario.Name() );
+    
+    jsonBuilderPanelMaterials := JSON::Array();
+    traverse ( macroPlan, PanelMaterial, pm, true ) {
+      jsonBuilderPanelMaterial := JSON::Object();
+      
+      jsonBuilderPanelMaterial.Add( "productID", pm.PanelModel() );
+      jsonBuilderPanelMaterial.Add( "productDescription", pm.MaterialDescription() );
+      jsonBuilderPanelMaterial.Add( "startDate", pm.StartDate().Format( "Y-M2-D2" ) );
+      jsonBuilderPanelMaterial.Add( "quantity", pm.DemandQuantity() );
+      
+      jsonBuilderPanelMaterials.Add( jsonBuilderPanelMaterial );
+    }
+    jsonBuilder.Add( "panelMaterials", jsonBuilderPanelMaterials );
+    
+    json := jsonBuilder.Build();
+    
+    info( json.AsPrettyString() );
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterial/_ROOT_Type_PanelMaterial.qbl b/_Main/BL/Type_PanelMaterial/_ROOT_Type_PanelMaterial.qbl
new file mode 100644
index 0000000..8fdb774
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterial/_ROOT_Type_PanelMaterial.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterial
+{
+  #keys: '5[414702.0.155354979][414702.0.155354977][0.0.0][414702.0.155354978][414702.0.155354980]'
+  BaseType: Object
+  StructuredName: 'PanelMaterials'
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/Attribute_BusinessType.qbl b/_Main/BL/Type_PanelMaterialAll/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..f22c4f3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.0.196801424][414702.0.196801423][414702.0.196801425]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/Attribute_ScenarioName.qbl b/_Main/BL/Type_PanelMaterialAll/Attribute_ScenarioName.qbl
new file mode 100644
index 0000000..e737a6c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/Attribute_ScenarioName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ScenarioName
+{
+  #keys: '3[414702.0.196801434][414702.0.196801433][414702.0.196801435]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/Attribute_releaseDate.qbl b/_Main/BL/Type_PanelMaterialAll/Attribute_releaseDate.qbl
new file mode 100644
index 0000000..2e6a274
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/Attribute_releaseDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReleaseDate
+{
+  #keys: '3[414702.0.196801411][414702.0.196801410][414702.0.196801412]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAll/_ROOT_Type_PanelMaterialAll.qbl b/_Main/BL/Type_PanelMaterialAll/_ROOT_Type_PanelMaterialAll.qbl
new file mode 100644
index 0000000..b1b5b06
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAll/_ROOT_Type_PanelMaterialAll.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialAll
+{
+  #keys: '5[414702.0.196801373][414702.0.196801371][0.0.0][414702.0.196801372][414702.0.196801374]'
+  BaseType: Object
+  StructuredName: 'PanelMaterialAlls'
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..fc74b78
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203680160][414702.0.203680159][414702.0.203680161]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Customer.qbl
new file mode 100644
index 0000000..d9269fa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203680121][414702.0.203680120][414702.0.203680122]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..13c1686
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203680130][414702.0.203680129][414702.0.203680131]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ID.qbl
new file mode 100644
index 0000000..58841e2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203680118][414702.0.203680117][414702.0.203680119]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..5f38c00
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203680148][414702.0.203680147][414702.0.203680149]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..a2238f1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203680157][414702.0.203680156][414702.0.203680158]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..26ca570
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203680127][414702.0.203680126][414702.0.203680128]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..85de69d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203680136][414702.0.203680135][414702.0.203680137]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderID.qbl
new file mode 100644
index 0000000..a0e0c47
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203680142][414702.0.203680141][414702.0.203680143]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..8d3d87b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203680151][414702.0.203680150][414702.0.203680152]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Price.qbl
new file mode 100644
index 0000000..7bf7192
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203680133][414702.0.203680132][414702.0.203680134]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..daed52a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203680154][414702.0.203680153][414702.0.203680155]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ce2771f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203680112][414702.0.203680111][414702.0.203680113]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Quantity.qbl
new file mode 100644
index 0000000..6496814
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203680115][414702.0.203680114][414702.0.203680116]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..561bb1c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203680145][414702.0.203680144][414702.0.203680146]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..e980d9b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203680139][414702.0.203680138][414702.0.203680140]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..313af13
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203680124][414702.0.203680123][414702.0.203680125]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..2d21864
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialAutomotiveElectronics( relnew,
+                                                           Customer         := businessTypeNameValue.GetValueAsString(),
+                                                           ID               := OS::GenerateGUIDAsString(),
+                                                           OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                                           ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                                           Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                                           SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                                          );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialAutomotiveElectronics/_ROOT_Type_PanelMaterialAutomotiveElectronics.qbl b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/_ROOT_Type_PanelMaterialAutomotiveElectronics.qbl
new file mode 100644
index 0000000..c63be50
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialAutomotiveElectronics/_ROOT_Type_PanelMaterialAutomotiveElectronics.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialAutomotiveElectronics
+{
+  #keys: '5[414702.0.203680106][414702.0.203680104][0.0.0][414702.0.203680105][414702.0.203680107]'
+  BaseType: Object
+  Description: '姹借溅鐢靛瓙'
+  StructuredName: 'PanelMaterialAutomotiveElectronicss'
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..e3c8994
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203680339][414702.0.203680338][414702.0.203680340]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_Customer.qbl
new file mode 100644
index 0000000..555bae6
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203680306][414702.0.203680305][414702.0.203680307]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..3ba73d5
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203680330][414702.0.203680329][414702.0.203680331]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_ID.qbl
new file mode 100644
index 0000000..5653f06
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203680318][414702.0.203680317][414702.0.203680319]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..816b1ac
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203680309][414702.0.203680308][414702.0.203680310]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..149a11e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203680342][414702.0.203680341][414702.0.203680343]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..03c684f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203680333][414702.0.203680332][414702.0.203680334]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..4ffafb0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203680297][414702.0.203680296][414702.0.203680298]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderID.qbl
new file mode 100644
index 0000000..2bf9636
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203680303][414702.0.203680302][414702.0.203680304]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..138cf52
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203680327][414702.0.203680326][414702.0.203680328]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_Price.qbl
new file mode 100644
index 0000000..3a5f704
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203680300][414702.0.203680299][414702.0.203680301]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..4779ec2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203680345][414702.0.203680344][414702.0.203680346]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_ProductID.qbl
new file mode 100644
index 0000000..2699c22
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203680312][414702.0.203680311][414702.0.203680313]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_Quantity.qbl
new file mode 100644
index 0000000..497c494
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203680321][414702.0.203680320][414702.0.203680322]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..5fce212
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203680324][414702.0.203680323][414702.0.203680325]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..dacd3b8
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203680336][414702.0.203680335][414702.0.203680337]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialIT/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..036c2b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203680315][414702.0.203680314][414702.0.203680316]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialIT/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..195adab
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialIT( relnew,
+                                        Customer         := businessTypeNameValue.GetValueAsString(),
+                                        ID               := OS::GenerateGUIDAsString(),
+                                        OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                        ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                        Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                        SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                       );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialIT/_ROOT_Type_PanelMaterialIT.qbl b/_Main/BL/Type_PanelMaterialIT/_ROOT_Type_PanelMaterialIT.qbl
new file mode 100644
index 0000000..9e43a52
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialIT/_ROOT_Type_PanelMaterialIT.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialIT
+{
+  #keys: '5[414702.0.203680278][414702.0.203680276][0.0.0][414702.0.203680277][414702.0.203680279]'
+  BaseType: Object
+  Description: 'IT'
+  StructuredName: 'PanelMaterialITs'
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..8dd0c12
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203671554][414702.0.203671553][414702.0.203671555]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Customer.qbl
new file mode 100644
index 0000000..4feca35
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203671521][414702.0.203671520][414702.0.203671522]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..f3ff58f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203671545][414702.0.203671544][414702.0.203671546]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ID.qbl
new file mode 100644
index 0000000..243d94b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203671533][414702.0.203671532][414702.0.203671534]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..192c647
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203671524][414702.0.203671523][414702.0.203671525]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..0ec007c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203671557][414702.0.203671556][414702.0.203671558]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..a7b488f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203671548][414702.0.203671547][414702.0.203671549]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..385b4cd
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203671512][414702.0.203671511][414702.0.203671513]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderID.qbl
new file mode 100644
index 0000000..70937cf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203671518][414702.0.203671517][414702.0.203671519]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..6d6f80a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203671542][414702.0.203671541][414702.0.203671543]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Price.qbl
new file mode 100644
index 0000000..06ea926
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203671515][414702.0.203671514][414702.0.203671516]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..65441bd
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203671560][414702.0.203671559][414702.0.203671561]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ProductID.qbl
new file mode 100644
index 0000000..a0b2ab2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203671527][414702.0.203671526][414702.0.203671528]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Quantity.qbl
new file mode 100644
index 0000000..65e10f2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203671536][414702.0.203671535][414702.0.203671537]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..fba40f3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203671539][414702.0.203671538][414702.0.203671540]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..f2917a8
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203671551][414702.0.203671550][414702.0.203671552]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..9b9e6ed
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203671530][414702.0.203671529][414702.0.203671531]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..ddb0119
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialSpecializedDisplay( relnew,
+                                                        Customer         := businessTypeNameValue.GetValueAsString(),
+                                                        ID               := OS::GenerateGUIDAsString(),
+                                                        OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                                        ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                                        Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                                        SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                                       );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialSpecializedDisplay/_ROOT_Type_PanelMaterialSpecializedDisplay.qbl b/_Main/BL/Type_PanelMaterialSpecializedDisplay/_ROOT_Type_PanelMaterialSpecializedDisplay.qbl
new file mode 100644
index 0000000..483a567
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSpecializedDisplay/_ROOT_Type_PanelMaterialSpecializedDisplay.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialSpecializedDisplay
+{
+  #keys: '5[414702.0.203671493][414702.0.203671491][0.0.0][414702.0.203671492][414702.0.203671494]'
+  BaseType: Object
+  Description: '涓撴樉'
+  StructuredName: 'PanelMaterialSpecializedDisplays'
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..c6ac9c1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203680261][414702.0.203680260][414702.0.203680262]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Customer.qbl
new file mode 100644
index 0000000..16ba69e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203680228][414702.0.203680227][414702.0.203680229]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..b8c149a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203680252][414702.0.203680251][414702.0.203680253]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ID.qbl
new file mode 100644
index 0000000..3ad1519
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203680240][414702.0.203680239][414702.0.203680241]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..c1f2e29
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203680231][414702.0.203680230][414702.0.203680232]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..eae8b92
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203680264][414702.0.203680263][414702.0.203680265]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..d9180af
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203680255][414702.0.203680254][414702.0.203680256]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..b67fd64
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203680219][414702.0.203680218][414702.0.203680220]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderID.qbl
new file mode 100644
index 0000000..917dbd5
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203680225][414702.0.203680224][414702.0.203680226]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..ba6e8fa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203680249][414702.0.203680248][414702.0.203680250]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Price.qbl
new file mode 100644
index 0000000..8952ea0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203680222][414702.0.203680221][414702.0.203680223]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..6142149
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203680267][414702.0.203680266][414702.0.203680268]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ef4fa53
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203680234][414702.0.203680233][414702.0.203680235]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Quantity.qbl
new file mode 100644
index 0000000..b5c0fe2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203680243][414702.0.203680242][414702.0.203680244]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..a2b09be
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203680246][414702.0.203680245][414702.0.203680247]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..423aada
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203680258][414702.0.203680257][414702.0.203680259]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..b2fd490
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203680237][414702.0.203680236][414702.0.203680238]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..4ccf91b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialSportsHealth( relnew,
+                                                  Customer         := businessTypeNameValue.GetValueAsString(),
+                                                  ID               := OS::GenerateGUIDAsString(),
+                                                  OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                                  ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                                  Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                                  SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                                 );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialSportsHealth/_ROOT_Type_PanelMaterialSportsHealth.qbl b/_Main/BL/Type_PanelMaterialSportsHealth/_ROOT_Type_PanelMaterialSportsHealth.qbl
new file mode 100644
index 0000000..1ac291b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialSportsHealth/_ROOT_Type_PanelMaterialSportsHealth.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialSportsHealth
+{
+  #keys: '5[414702.0.203680200][414702.0.203680198][0.0.0][414702.0.203680199][414702.0.203680201]'
+  BaseType: Object
+  Description: '杩愬姩鍋ュ悍'
+  StructuredName: 'PanelMaterialSportsHealths'
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..20cd108
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203671609][414702.0.203671608][414702.0.203671610]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_Customer.qbl
new file mode 100644
index 0000000..bee172b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203671594][414702.0.203671593][414702.0.203671595]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..e689c52
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203671621][414702.0.203671620][414702.0.203671622]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_ID.qbl
new file mode 100644
index 0000000..63b5c99
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203671615][414702.0.203671614][414702.0.203671616]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..5b15de6
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203671612][414702.0.203671611][414702.0.203671613]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..63575af
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203671603][414702.0.203671602][414702.0.203671604]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..f311335
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203671591][414702.0.203671590][414702.0.203671592]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..f83a64f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203671630][414702.0.203671629][414702.0.203671631]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderID.qbl
new file mode 100644
index 0000000..3fe99f4
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203671606][414702.0.203671605][414702.0.203671607]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..f20d582
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203671636][414702.0.203671635][414702.0.203671637]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_Price.qbl
new file mode 100644
index 0000000..3234d7d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203671588][414702.0.203671587][414702.0.203671589]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..3ecd304
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203671627][414702.0.203671626][414702.0.203671628]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_ProductID.qbl
new file mode 100644
index 0000000..a2edc37
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203671600][414702.0.203671599][414702.0.203671601]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_Quantity.qbl
new file mode 100644
index 0000000..3f43e48
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203671624][414702.0.203671623][414702.0.203671625]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..e4979c4
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203671633][414702.0.203671632][414702.0.203671634]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..0c70a04
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203671618][414702.0.203671617][414702.0.203671619]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTM17/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..f2df14f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203671597][414702.0.203671596][414702.0.203671598]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..9f7f71a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialTM17( relnew,
+                                          Customer         := businessTypeNameValue.GetValueAsString(),
+                                          ID               := OS::GenerateGUIDAsString(),
+                                          OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                          ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                          Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                          SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                         );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialTM17/_ROOT_Type_PanelMaterialTM17.qbl b/_Main/BL/Type_PanelMaterialTM17/_ROOT_Type_PanelMaterialTM17.qbl
new file mode 100644
index 0000000..54c85a7
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM17/_ROOT_Type_PanelMaterialTM17.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialTM17
+{
+  #keys: '5[414702.0.203671569][414702.0.203671567][0.0.0][414702.0.203671568][414702.0.203671570]'
+  BaseType: Object
+  Description: 'TM17'
+  StructuredName: 'PanelMaterialTM17s'
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..9fa6c69
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203680386][414702.0.203680385][414702.0.203680387]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_Customer.qbl
new file mode 100644
index 0000000..afffc3c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203680395][414702.0.203680394][414702.0.203680396]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..05564f1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203680413][414702.0.203680412][414702.0.203680414]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_ID.qbl
new file mode 100644
index 0000000..37d4aed
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203680401][414702.0.203680400][414702.0.203680402]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..d994032
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203680416][414702.0.203680415][414702.0.203680417]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..0868269
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203680419][414702.0.203680418][414702.0.203680420]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..157903f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203680380][414702.0.203680379][414702.0.203680381]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..fcd19b6
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203680407][414702.0.203680406][414702.0.203680408]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderID.qbl
new file mode 100644
index 0000000..867df94
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203680392][414702.0.203680391][414702.0.203680393]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..61afc1f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203680398][414702.0.203680397][414702.0.203680399]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_Price.qbl
new file mode 100644
index 0000000..2446765
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203680389][414702.0.203680388][414702.0.203680390]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..57ab630
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203680422][414702.0.203680421][414702.0.203680423]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_ProductID.qbl
new file mode 100644
index 0000000..976c946
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203680377][414702.0.203680376][414702.0.203680378]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_Quantity.qbl
new file mode 100644
index 0000000..f7d8717
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203680425][414702.0.203680424][414702.0.203680426]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..deeb9c2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203680404][414702.0.203680403][414702.0.203680405]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..b98b82a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203680383][414702.0.203680382][414702.0.203680384]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTM18/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..4c162ed
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203680410][414702.0.203680409][414702.0.203680411]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..9145c77
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialTM18( relnew,
+                                          Customer         := businessTypeNameValue.GetValueAsString(),
+                                          ID               := OS::GenerateGUIDAsString(),
+                                          OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                          ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                          Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                          SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                         );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialTM18/_ROOT_Type_PanelMaterialTM18.qbl b/_Main/BL/Type_PanelMaterialTM18/_ROOT_Type_PanelMaterialTM18.qbl
new file mode 100644
index 0000000..75ea3ae
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTM18/_ROOT_Type_PanelMaterialTM18.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialTM18
+{
+  #keys: '5[414702.0.203680356][414702.0.203680354][0.0.0][414702.0.203680355][414702.0.203680357]'
+  BaseType: Object
+  Description: 'TM18'
+  StructuredName: 'PanelMaterialTM18s'
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..3733f5b
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.203671460][414702.0.203671459][414702.0.203671461]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Customer.qbl
new file mode 100644
index 0000000..9f58ae5
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.203671427][414702.0.203671426][414702.0.203671428]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..c563be0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.203671451][414702.0.203671450][414702.0.203671452]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_ID.qbl
new file mode 100644
index 0000000..1cebdcf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.203671439][414702.0.203671438][414702.0.203671440]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..99eb60c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.203671430][414702.0.203671429][414702.0.203671431]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..4efa43a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.203671463][414702.0.203671462][414702.0.203671464]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..0603138
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.203671454][414702.0.203671453][414702.0.203671455]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..87acd44
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.203671418][414702.0.203671417][414702.0.203671419]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderID.qbl
new file mode 100644
index 0000000..ecf37e0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.203671424][414702.0.203671423][414702.0.203671425]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..c0a4a24
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.203671448][414702.0.203671447][414702.0.203671449]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Price.qbl
new file mode 100644
index 0000000..05e48bd
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.203671421][414702.0.203671420][414702.0.203671422]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..a11a6ca
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.203671466][414702.0.203671465][414702.0.203671467]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_ProductID.qbl
new file mode 100644
index 0000000..1148598
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.203671433][414702.0.203671432][414702.0.203671434]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Quantity.qbl
new file mode 100644
index 0000000..458dd84
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.203671442][414702.0.203671441][414702.0.203671443]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..748894c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.203671445][414702.0.203671444][414702.0.203671446]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..8c31b00
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.203671457][414702.0.203671456][414702.0.203671458]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTianHua/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..f3ecefc
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.203671436][414702.0.203671435][414702.0.203671437]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Customer.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Customer.qbl
new file mode 100644
index 0000000..e02a336
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Customer.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Customer
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CustomerID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CustomerID.qbl
new file mode 100644
index 0000000..66ae438
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_CustomerID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderID.qbl
new file mode 100644
index 0000000..05c5cf1
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderLineID.qbl
new file mode 100644
index 0000000..01ff2bf
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_OrderLineID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OrderLineID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ProductID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Quantity.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Quantity.qbl
new file mode 100644
index 0000000..9e759b3
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_Quantity.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Quantity
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_SalesSegmentName.qbl
new file mode 100644
index 0000000..521966d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_SalesSegmentName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SalesSegmentName
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..042dc4a
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialTianHua( relnew,
+                                             Customer         := businessTypeNameValue.GetValueAsString(),
+                                             ID               := OS::GenerateGUIDAsString(),
+                                             OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                             ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                             Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                             SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                            );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl b/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl
new file mode 100644
index 0000000..d2d2fa2
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialTianHua/_ROOT_Type_PanelMaterialTianHua.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialTianHua
+{
+  #keys: '5[414702.0.203671414][414702.0.203671412][0.0.0][414702.0.203671413][414702.0.203671415]'
+  BaseType: Object
+  Description: '澶╄姳'
+  StructuredName: 'PanelMaterialTianHuas'
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..8f3b50c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414702.0.185221293][414702.0.185221292][414702.0.185221294]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_Customer.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Customer.qbl
new file mode 100644
index 0000000..e6bc6a9
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Customer.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+  #keys: '3[414702.0.185221308][414702.0.185221307][414702.0.185221309]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_CustomerID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_CustomerID.qbl
new file mode 100644
index 0000000..6395618
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_CustomerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerID
+{
+  #keys: '3[414702.0.185221318][414702.0.185221317][414702.0.185221319]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_ID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_ID.qbl
new file mode 100644
index 0000000..6156649
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.185221328][414702.0.185221327][414702.0.185221329]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..5641056
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsEligibleForNetting
+{
+  #keys: '3[414702.0.185221338][414702.0.185221337][414702.0.185221339]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..146d5c0
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsExcludedFromFulfillmentKPIUser
+{
+  #keys: '3[414702.0.185221353][414702.0.185221352][414702.0.185221354]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsFirmed.qbl
new file mode 100644
index 0000000..9c8c56e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsFirmed
+{
+  #keys: '3[414702.0.185221448][414702.0.185221447][414702.0.185221449]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderDate.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderDate.qbl
new file mode 100644
index 0000000..e903396
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDate
+{
+  #keys: '3[414702.0.185221371][414702.0.185221370][414702.0.185221372]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderID.qbl
new file mode 100644
index 0000000..c204400
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.0.185221381][414702.0.185221380][414702.0.185221382]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderLineID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderLineID.qbl
new file mode 100644
index 0000000..3821ce7
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_OrderLineID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderLineID
+{
+  #keys: '3[414702.0.185221391][414702.0.185221390][414702.0.185221392]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_Price.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Price.qbl
new file mode 100644
index 0000000..463684f
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.0.185221401][414702.0.185221400][414702.0.185221402]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_PriorityName.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..7d354ca
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414702.0.185221422][414702.0.185221421][414702.0.185221423]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_ProductID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_ProductID.qbl
new file mode 100644
index 0000000..647a657
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.0.196801332][414702.0.196801331][414702.0.196801333]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_Quantity.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Quantity.qbl
new file mode 100644
index 0000000..1a67884
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.0.196801342][414702.0.196801341][414702.0.196801343]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..d10a137
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414702.0.185221438][414702.0.185221437][414702.0.185221439]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..cb09362
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.0.185221463][414702.0.185221462][414702.0.185221464]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialVehicle/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..e8dbcc8
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414702.0.185221478][414702.0.185221477][414702.0.185221479]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_CurrencyID.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_CurrencyID.qbl
new file mode 100644
index 0000000..9a0e812
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'CNY'
+  TargetAttribute: CurrencyID
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsEligibleForNetting.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsEligibleForNetting.qbl
new file mode 100644
index 0000000..8b36496
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsEligibleForNetting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsEligibleForNetting
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
new file mode 100644
index 0000000..d0e348d
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsExcludedFromFulfillmentKPIUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'false'
+  TargetAttribute: IsExcludedFromFulfillmentKPIUser
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsFirmed.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsFirmed.qbl
new file mode 100644
index 0000000..0f7ae4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_IsFirmed.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'true'
+  TargetAttribute: IsFirmed
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_Price.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_Price.qbl
new file mode 100644
index 0000000..577db4c
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '0'
+  TargetAttribute: Price
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_PriorityName.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_PriorityName.qbl
new file mode 100644
index 0000000..7c6efaa
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'Normal'
+  TargetAttribute: PriorityName
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..6110bce
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: '鎴愬搧浠�'
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_UnitOfMeasureName.qbl b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..7f9ab5e
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/DefaultValue_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'SHT'
+  TargetAttribute: UnitOfMeasureName
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl b/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl
new file mode 100644
index 0000000..3174738
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/StaticMethod_ReceiveDataGeneration.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReceiveDataGeneration (
+  GlobalOTDTable globalOTDTable,
+  NamedValueTree requestnvt
+)
+{
+  TextBody:
+  [*
+    nameValue := requestnvt.Root();
+    
+    bodyHandle := requestnvt.GetHandle( "Body" );
+    restHandle := requestnvt.GetHandle( "Rest" );
+    restPayloadHandle := requestnvt.GetHandle( "RestPayload" );
+    
+    bodyNameValue := nameValue.Child( bodyHandle );
+    restNameValue := bodyNameValue.Child( restHandle );
+    restPayloadNameValue := restNameValue.Child( restPayloadHandle );
+    
+    releaseDateHandle := requestnvt.GetHandle( "releaseDate" );
+    businessTypeHandle := requestnvt.GetHandle( "businessType" );
+    scenarioNameHandle := requestnvt.GetHandle( "scenarioName" );
+    
+    releaseDateNameValue := restPayloadNameValue.Child( releaseDateHandle );
+    businessTypeNameValue := restPayloadNameValue.Child( businessTypeHandle );
+    scenarioNameNameValue := restPayloadNameValue.Child( scenarioNameHandle );
+    
+    panelMaterialAll := select( globalOTDTable, PanelMaterialAll, tempPMA, tempPMA.ScenarioName() = scenarioNameNameValue.GetValueAsString() );
+    if ( not isnull( panelMaterialAll ) ) {
+      panelMaterialAll.Delete();
+    }
+    panelMaterialAll := globalOTDTable.PanelMaterialAll( relnew, 
+                                                         ReleaseDate  := releaseDateNameValue.GetValueAsString(),
+                                                         BusinessType := businessTypeNameValue.GetValueAsString(),
+                                                         ScenarioName := scenarioNameNameValue.GetValueAsString()
+                                                        );
+    
+    panelMaterialsHandle := requestnvt.GetHandle( "panelMaterials" );
+    panelMaterialsNameValue := restPayloadNameValue.Child( panelMaterialsHandle );
+    childPanelMaterialsNameValue := panelMaterialsNameValue.Children();
+    productIDHandle := requestnvt.GetHandle( "productID" );
+    productDescriptionHandle := requestnvt.GetHandle( "productDescription" );
+    startDateHandle := requestnvt.GetHandle( "startDate" );
+    quantityHandle := requestnvt.GetHandle( "quantity" );
+    
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( 'yyyy-MM-dd' );
+    
+    traverse ( childPanelMaterialsNameValue, Elements, cpmnv ) {
+      info( "浜у搧锛�", cpmnv.Child( productIDHandle ).GetValueAsString() );
+      info( "浜у搧鎻忚堪锛�", cpmnv.Child( productDescriptionHandle ).GetValueAsString() );
+      info( "寮�濮嬫椂闂达細", cpmnv.Child( startDateHandle ).GetValueAsString() );
+      info( "鏁伴噺锛�", cpmnv.Child( quantityHandle ).GetValueAsString() );
+      panelMaterialAll.PanelMaterialVehicle( relnew,
+                                             Customer         := businessTypeNameValue.GetValueAsString(),
+                                             ID               := OS::GenerateGUIDAsString(),
+                                             OrderDate        := cnv2.Convert( cpmnv.Child( startDateHandle ).GetValueAsString() ),
+                                             ProductID        := cpmnv.Child( productIDHandle ).GetValueAsString(),
+                                             Quantity         := cpmnv.Child( quantityHandle ).GetValueAsString(),
+                                             SalesSegmentName := businessTypeNameValue.GetValueAsString()
+                                            );                                   
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PanelMaterialVehicle/_ROOT_Type_PanelMaterialVehicle.qbl b/_Main/BL/Type_PanelMaterialVehicle/_ROOT_Type_PanelMaterialVehicle.qbl
new file mode 100644
index 0000000..345f7a9
--- /dev/null
+++ b/_Main/BL/Type_PanelMaterialVehicle/_ROOT_Type_PanelMaterialVehicle.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PanelMaterialVehicle
+{
+  #keys: '5[414702.0.185221272][414702.0.185221270][0.0.0][414702.0.185221271][414702.0.185221273]'
+  BaseType: Object
+  Description: '杞﹁浇'
+  StructuredName: 'PanelMaterialVehicles'
+}
diff --git a/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl
index 0db749e..0359b3f 100644
--- a/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl
@@ -17,12 +17,14 @@
     product :=  Product_MP::FindById( owner, productid );
     line :=  Lane::FindLaneTypeIndex( lineid );
     
-    productinline := ProductInLane::FindProductInLaneTypeIndex( lineid, productid );
+    if( not isnull( product) and not isnull( line)){
+      productinline := ProductInLane::FindProductInLaneTypeIndex( lineid, productid );
     
-    if( isnull( productinline ) ){
+      if( isnull( productinline ) ){
       ProductInLane::Create( product, line, isexcluded, isfromdb );
       }else{
-        productinline.Update( productid, lineid, isexcluded, isfromdb );
+       productinline.Update( productid, lineid, isexcluded, isfromdb );
         }
+    }
   *]
 }
diff --git a/_Main/BL/Type_Product_MP/Attribute_IsPanelMaterial.qbl b/_Main/BL/Type_Product_MP/Attribute_IsPanelMaterial.qbl
new file mode 100644
index 0000000..461f519
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/Attribute_IsPanelMaterial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsPanelMaterial
+{
+  #keys: '3[414702.0.155922090][414702.0.155922089][414702.0.155922091]'
+  Description: '鏄惁涓洪潰鏉跨墿鏂�'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
index 1859d28..e4dae0e 100644
--- a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
+++ b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
@@ -9,7 +9,7 @@
   TextBody:
   [*
     // Administrator Jul-7-2023 (created)
-    id := datarow.Get( "id" ).GetString()+"_STOCK";
+    id := datarow.Get( "id" ).GetString();
     unitid := datarow.Get( "unitid" ).GetString();
     name := datarow.Get( "name" ).GetString();
     
diff --git a/_Main/BL/Type_WorkOrderType/Attribute_ID.qbl b/_Main/BL/Type_WorkOrderType/Attribute_ID.qbl
new file mode 100644
index 0000000..9a6c41f
--- /dev/null
+++ b/_Main/BL/Type_WorkOrderType/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.0.144781493][414702.0.144781492][414702.0.144781494]'
+  Description: '宸ュ崟ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_WorkOrderType/Attribute_TypeName.qbl b/_Main/BL/Type_WorkOrderType/Attribute_TypeName.qbl
new file mode 100644
index 0000000..36bf622
--- /dev/null
+++ b/_Main/BL/Type_WorkOrderType/Attribute_TypeName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TypeName
+{
+  #keys: '3[414702.0.144781503][414702.0.144781502][414702.0.144781504]'
+  Description: '宸ュ崟绫诲瀷鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_WorkOrderType/_ROOT_Type_WorkOrderType.qbl b/_Main/BL/Type_WorkOrderType/_ROOT_Type_WorkOrderType.qbl
new file mode 100644
index 0000000..866ac32
--- /dev/null
+++ b/_Main/BL/Type_WorkOrderType/_ROOT_Type_WorkOrderType.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type WorkOrderType
+{
+  #keys: '5[414702.0.144781471][414702.0.144781469][0.0.0][414702.0.144781470][414702.0.144781472]'
+  BaseType: Object
+  StructuredName: 'WorkOrderTypes'
+}
diff --git a/_Main/Sys/Integration/Brokers/PanelMaterialResponseResult.xml b/_Main/Sys/Integration/Brokers/PanelMaterialResponseResult.xml
new file mode 100644
index 0000000..78d17af
--- /dev/null
+++ b/_Main/Sys/Integration/Brokers/PanelMaterialResponseResult.xml
Binary files differ
diff --git a/_Main/Sys/Integration/Mapping/PanelMaterialResponseResult.xml b/_Main/Sys/Integration/Mapping/PanelMaterialResponseResult.xml
new file mode 100644
index 0000000..a2b6fc7
--- /dev/null
+++ b/_Main/Sys/Integration/Mapping/PanelMaterialResponseResult.xml
Binary files differ
diff --git a/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_from.xml b/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_from.xml
new file mode 100644
index 0000000..54bd566
--- /dev/null
+++ b/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_from.xml
Binary files differ
diff --git a/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_to.xml b/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_to.xml
new file mode 100644
index 0000000..b381552
--- /dev/null
+++ b/_Main/Sys/Integration/Structure/PanelMaterialResponseResult_to.xml
Binary files differ
diff --git a/_Main/UI/MacroPlanner/Component_FormProducts/Component_ListProduct.def b/_Main/UI/MacroPlanner/Component_FormProducts/Component_ListProduct.def
new file mode 100644
index 0000000..f74c93c
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormProducts/Component_ListProduct.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListProduct #extension
+{
+  Children:
+  [
+    Component popupListProduct #extension
+    {
+      Children:
+      [
+        Component PopupParent #extension
+        {
+          Children:
+          [
+            Component menuSeparator631 { #keys: '[414702.0.157554503]' BaseType: 'Menu' Properties: [ Separator: true ] }
+            Component MenuConvertToPanelMaterial { #keys: '[414702.0.157554555]' BaseType: 'Menu' Properties: [ Image: 'PLASMA-TV' Text: '杞崲涓洪潰鏉跨墿鏂�' ] }
+          ]
+          Properties:
+          [
+            ModeledStringList ChildOrdering
+            {
+              c: MenuActions
+              c: MenuFilter
+              c: menuListQuintiqSetQuantor
+              c: MenuSeparator
+              c: MenuNewProduct
+              c: MenuEditProduct
+              c: MenuDeleteProduct
+              c: MenuCopyIncludingSP
+              c: Menu3
+              c: MenuSmartPlan1
+              c: Menu49
+              c: MenuEditDisplayIndex
+              c: MenuEditVisualization2
+              c: menuSeparator631
+              c: MenuConvertToPanelMaterial
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormProducts/Component_SplitterWnd8.def b/_Main/UI/MacroPlanner/Component_FormProducts/Component_SplitterWnd8.def
new file mode 100644
index 0000000..a925236
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormProducts/Component_SplitterWnd8.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component SplitterWnd8 #extension
+{
+  Children:
+  [
+    Component SplitterPane #extension
+    {
+      Children:
+      [
+        #child: ListProduct
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormProducts/Response_TIANMA_JITUAN_ListProduct_MenuConvertToPanelMaterial_OnClick.def b/_Main/UI/MacroPlanner/Component_FormProducts/Response_TIANMA_JITUAN_ListProduct_MenuConvertToPanelMaterial_OnClick.def
new file mode 100644
index 0000000..fc90953
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormProducts/Response_TIANMA_JITUAN_ListProduct_MenuConvertToPanelMaterial_OnClick.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: ListProduct
+Response OnClick (
+  Product_MP selection
+) id:Response_TIANMA_JITUAN_ListProduct_MenuConvertToPanelMaterial_OnClick
+{
+  #keys: '[414702.0.157554653]'
+  Body:
+  [*
+    selection.IsPanelMaterial( not selection.IsPanelMaterial() );
+  *]
+  DefinitionID => //ListProduct/Responsedef_ListProduct_Menu_OnClick
+  Initiator: 'MenuConvertToPanelMaterial'
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormProducts/_ROOT_Component_FormProducts.def b/_Main/UI/MacroPlanner/Component_FormProducts/_ROOT_Component_FormProducts.def
new file mode 100644
index 0000000..a83580c
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormProducts/_ROOT_Component_FormProducts.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: LibMacroPlannerTCUI
+OrphanComponent FormProducts #extension
+{
+  Children:
+  [
+    #child: SplitterWnd8
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
new file mode 100644
index 0000000..82df44f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+Component ActionBarGroupSalesViews #extension
+{
+  Children:
+  [
+    Component ButtonSalesFillingCapacity
+    {
+      #keys: '[414382.0.436830247]'
+      BaseType: 'WebButton'
+      Children:
+      [
+        #child: ContextMenuSalesFillingCapacity
+      ]
+      Properties:
+      [
+        Image: 'BLOT'
+        Label: '濉骇'
+        Taborder: 3
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageSales.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageSales.def
new file mode 100644
index 0000000..173d640
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageSales.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPageSales #extension
+{
+  Children:
+  [
+    #child: ActionBarGroupSalesViews
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
new file mode 100644
index 0000000..3dddc43
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+Component ContextMenuSalesFillingCapacity
+{
+  #keys: '[414382.0.437003283]'
+  BaseType: 'WebContextMenu'
+  Children:
+  [
+    Component MenuSalesFillingCapacity
+    {
+      #keys: '[414382.0.437003284]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ELEMENT_BLUE'
+        Taborder: 0
+        Title: 'Filling Capacity Scheme List'
+        Tooltip: 'Filling Capacity Scheme List'
+      ]
+    }
+    Component MenuSalesFillingSchemeDetail
+    {
+      #keys: '[414382.0.436840646]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ELEMENT_ORANGE'
+        Taborder: 1
+        Title: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
new file mode 100644
index 0000000..3aa17b6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingCapacity
+Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapacity_OnClick
+{
+  #keys: '[414382.0.437390498]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      //ApplicationMacroPlanner.OpenView( 'Filling Capacity Scheme List',ButtonSalesFillingCapacity);
+      ApplicationMacroPlanner.OpenView( 'View Sales Segments', ButtonSalesFillingCapacity );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
new file mode 100644
index 0000000..0fd125b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeDetail
+Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeDetail_OnClick
+{
+  #keys: '[414382.0.439022595]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      //ApplicationMacroPlanner.OpenView( "FillingCapacitySchemeList",ButtonSalesFillingCapacity);
+      ApplicationMacroPlanner.OpenViewAndFocusButton( "FillingCapacitySchemeList");
+      //Application.OpenForm( "FormFillingScheme");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 0b3ed2a..72e5ee3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -10,6 +10,7 @@
       Children:
       [
         #child: ActionBarPageData
+        #child: ActionBarPageSales
       ]
     }
     Component DataHolderCapacityAndSaleBudgeFilterItem
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlActions.def
new file mode 100644
index 0000000..53808c5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414382.0.375080433]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414382.0.375080437]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414382.0.375080439]'
+      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_DialogBusinessType/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlContent.def
new file mode 100644
index 0000000..b6cdcbb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Component_pnlContent.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414382.0.375080431]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component edtBusinessTypeName
+    {
+      #keys: '[414382.0.376790705]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderBusinessType.Data.BusinessTypeName'
+        Label: 'Business Type Name'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def
new file mode 100644
index 0000000..54a2fe2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Method ClickBtnOk () id:Method_DialogBusinessType_ClickBtnOk
+{
+  #keys: '[414382.0.377972914]'
+  Body:
+  [*
+    // Disabled button to prevent the possibility of multiple firing
+    
+    btnOk.Enabled(false,'');
+    
+    // OnOk
+    this.ApplyChanges();
+    
+    DataHolderBusinessType.Data().Commit();
+    
+    //if( not isnull( DataHolderForm.Data() ) )
+    //{
+    //  // Access the form, select the new assumption
+    //  DataHolderForm.Data().ListAssumptions().SelectByKey( DataHolderDialogData.Data().WrappedInstance().Key() );
+    //}
+    
+    this.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_Edit.def
new file mode 100644
index 0000000..25e0b31
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_Edit.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  BusinessType selection
+) id:Method_DialogBusinessType_Edit
+{
+  #keys: '[414382.0.377851336]'
+  Body:
+  [*
+    // Edits assumption
+    data := shadow( selection );
+    
+    DataHolderBusinessType.Data( &data );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_New.def
new file mode 100644
index 0000000..53d05de
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_New.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method New (
+  GlobalOTDTable owner
+) id:Method_DialogBusinessType_New
+{
+  #keys: '[414382.0.376712323]'
+  Body:
+  [*
+    data := owner.BusinessType(relshadow);
+    DataHolderBusinessType.Data( &data);
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..02f853a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/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: '[414382.0.375080443]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..b0478e7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414382.0.375080442]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ClickBtnOk()
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/_ROOT_Component_DialogBusinessType.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/_ROOT_Component_DialogBusinessType.def
new file mode 100644
index 0000000..c08a626
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/_ROOT_Component_DialogBusinessType.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogBusinessType
+{
+  #keys: '[414382.0.375080429]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderBusinessType
+    {
+      #keys: '[414382.0.375080516]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[BusinessType]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component DataHolderForm id:DataHolderForm_568
+    {
+      #keys: '[414382.0.376741089]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BusinessType'
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlActions.def
new file mode 100644
index 0000000..f0a3335
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414702.0.157903684]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414702.0.157903688]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414702.0.157903690]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlContent.def
new file mode 100644
index 0000000..d7beca4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Component_pnlContent.def
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414702.0.157903682]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dsStartDate
+    {
+      #keys: '[414702.0.158296102]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.StartDate'
+        Label: '寮�濮�'
+        Taborder: 2
+      ]
+    }
+    Component npDemandQuantity
+    {
+      #keys: '[414702.0.158296123]'
+      BaseType: 'WebNumberPicker'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.DemandQuantity'
+        Label: '闇�姹傛暟閲�'
+        Taborder: 3
+      ]
+    }
+    Component efMaterialDescription
+    {
+      #keys: '[414702.0.157412917]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.MaterialDescription'
+        Label: '鐗╂枡鎻忚堪'
+        Taborder: 1
+      ]
+    }
+    Component ddslPanelModel
+    {
+      #keys: '[414702.0.157757933]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.PanelModel'
+        Label: '闈㈡澘鍨嬪彿'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def
new file mode 100644
index 0000000..5a8abdf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_Edit.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  PanelMaterial selection
+) id:Method_DialogCreateEditPanelPullPlanReport_Edit
+{
+  #keys: '[414702.0.158677121]'
+  Body:
+  [*
+    data := shadow( selection );
+    
+    DataHolderDialogData.Data( &data );
+    info( "hello world" );
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_New.def
new file mode 100644
index 0000000..7832386
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Method_New.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method New () id:Method_DialogCreateEditPanelPullPlanReport_New
+{
+  #keys: '[414702.0.158084611]'
+  Body:
+  [*
+    panelMaterial := MacroPlan.PanelMaterial( relshadow );
+    
+    DataHolderDialogData.Data( &panelMaterial );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..a98c7de
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/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.157903694]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..555058d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414702.0.157903693]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      
+      //Form.OnOK();
+      Form.ApplyChanges();
+      
+      data := DataHolderDialogData.Data();
+      panelMaterial := data.WrappedInstance();
+      if ( isnull( panelMaterial ) ) {
+        MacroPlan.PanelMaterial( relnew, 
+                                 PanelModel          := ddslPanelModel.Text(), 
+                                 MaterialDescription := efMaterialDescription.Text(), 
+                                 StartDate           := dsStartDate.Date(),
+                                 DemandQuantity      := npDemandQuantity.Number() );
+      } else {
+        panelMaterial.PanelModel( ddslPanelModel.Text() );
+        panelMaterial.MaterialDescription( efMaterialDescription.Text() );
+        panelMaterial.StartDate( dsStartDate.Date() );
+        panelMaterial.DemandQuantity( npDemandQuantity.Number() );
+      }
+      
+      Form.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def
new file mode 100644
index 0000000..e8f83be
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/Response_pnlContent_ddslPanelModel_OnCreated.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pnlContent/ddslPanelModel
+Response OnCreated () id:Response_pnlContent_ddslPanelModel_OnCreated
+{
+  #keys: '[414702.0.158297623]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      ids := selectvalues( MacroPlan, Product_MP, tempPMP, tempPMP.IsPanelMaterial(), tempPMP.ID() );
+      info( ids.Concatenate( ";" ) );
+      this.Strings( ids.Concatenate( ";" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/_ROOT_Component_DialogCreateEditPanelPullPlanReport.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/_ROOT_Component_DialogCreateEditPanelPullPlanReport.def
new file mode 100644
index 0000000..53e5083
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPanelPullPlanReport/_ROOT_Component_DialogCreateEditPanelPullPlanReport.def
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogCreateEditPanelPullPlanReport
+{
+  #keys: '[414702.0.157903680]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderDialogData
+    {
+      #keys: '[414702.0.156384742]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[PanelMaterial]*'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlActions.def
new file mode 100644
index 0000000..b309d6f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414702.0.145521963]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414702.0.145521967]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414702.0.145521969]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlContent.def
new file mode 100644
index 0000000..8016c0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Component_pnlContent.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414702.0.145521961]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efID
+    {
+      #keys: '[414702.0.145552802]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.ID'
+        Label: 'ID'
+        Taborder: 0
+      ]
+    }
+    Component efTypeName
+    {
+      #keys: '[414702.0.145552821]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.TypeName'
+        Label: '宸ュ崟绫诲瀷'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_Edit.def
new file mode 100644
index 0000000..ae005f8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_Edit.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  WorkOrderType selection
+) id:Method_DialogCreateEditWorkOrderType_Edit
+{
+  #keys: '[414702.0.148405777]'
+  Body:
+  [*
+    // Edit
+    data := shadow( selection );
+    
+    DataHolderDialogData.Data( &data );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_NewWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_NewWorkOrderType.def
new file mode 100644
index 0000000..d805656
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Method_NewWorkOrderType.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method NewWorkOrderType (
+  FormWorkOrderType formWorkOrderType
+) id:Method_DialogCreateEditWorkOrderType_NewWorkOrderType
+{
+  #keys: '[414702.0.145493830]'
+  Body:
+  [*
+    workOrderType := GlobalOTDTable.WorkOrderType( relshadow );
+    
+    DataHolderForm.Data( formWorkOrderType );
+    
+    DataHolderDialogData.Data( &workOrderType );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..445c198
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/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.145521973]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..e5f4159
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414702.0.145521972]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    flag := true;
+    
+    data := DataHolderDialogData.Data();
+    id := efID.Text();
+    typeName := efTypeName.Text();
+    
+    idExists := exists( GlobalOTDTable, WorkOrderType, tempWOT, tempWOT.ID() = id and tempWOT.ID() <> data.ID() );
+    typeNameExists := exists( GlobalOTDTable, WorkOrderType, tempWOT, tempWOT.TypeName() = typeName and tempWOT.TypeName() <> data.TypeName() );
+    
+    if ( idExists or typeNameExists ) {
+      feedback := "ID鎴栫被鍨嬪悕绉伴噸澶�";
+      flag := false;
+    } else if ( id = "" or typeName = "" ) {
+      feedback := "ID鎴栫被鍨嬪悕绉颁笉鑳戒负绌�";
+      flag := false;
+    }
+    
+    return flag;
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      //Form.OnOK();
+      Form.ApplyChanges();
+      
+      data := DataHolderDialogData.Data();
+      workOrderType := data.WrappedInstance();
+      if ( isnull( workOrderType ) ) {
+        GlobalOTDTable.WorkOrderType( relnew, ID := data.ID(), TypeName := data.TypeName() );
+      } else {
+        workOrderType.ID( data.ID() );
+        workOrderType.TypeName( data.TypeName() );
+      }
+      
+      Form.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/_ROOT_Component_DialogCreateEditWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/_ROOT_Component_DialogCreateEditWorkOrderType.def
new file mode 100644
index 0000000..24d0a68
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditWorkOrderType/_ROOT_Component_DialogCreateEditWorkOrderType.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogCreateEditWorkOrderType
+{
+  #keys: '[414702.0.145521959]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderDialogData
+    {
+      #keys: '[414702.0.145552868]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[WorkOrderType]*'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    Component DataHolderForm
+    {
+      #keys: '[414702.0.147371367]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'FormWorkOrderType'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlActions.def
new file mode 100644
index 0000000..18c3540
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414382.0.400131325]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414382.0.400131329]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414382.0.400131331]'
+      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_DialogFillingCapacityOrder/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def
new file mode 100644
index 0000000..63e6384
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def
@@ -0,0 +1,125 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414382.0.400131323]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dropDownStringListProductID id:dropDownStringListProductID_387
+    {
+      #keys: '[414382.0.400311344]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.ProductID'
+        Label: 'ProductID'
+        Strings: 'productID'
+        Taborder: 0
+      ]
+    }
+    Component dropDownStringListSalesSegmentName id:dropDownStringListSalesSegmentName_325
+    {
+      #keys: '[414382.0.400731492]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.SalesSegmentName'
+        Label: 'SalesSegmentName'
+        Strings: 'SalesSagmentName'
+        Taborder: 1
+      ]
+    }
+    Component dropDownStringListStockPointID id:dropDownStringListStockPointID_801
+    {
+      #keys: '[414382.0.400731675]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.StockingPointID'
+        Label: 'StockPointID'
+        Strings: 'StockPointID'
+        Taborder: 2
+      ]
+    }
+    Component dropDownStringListCustomer id:dropDownStringListCustomer_957
+    {
+      #keys: '[414382.0.400703550]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.Customer'
+        Label: 'Customer'
+        Strings: 'Customer'
+        Taborder: 3
+      ]
+    }
+    Component edtQuantity id:edtQuantity_995
+    {
+      #keys: '[414382.0.400551344]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.Quantity'
+        Label: 'Quantity'
+        Mask: 'REAL'
+        Taborder: 4
+      ]
+    }
+    Component dropDownStringListUnitOfMeasureName id:dropDownStringListUnitOfMeasureName_750
+    {
+      #keys: '[414382.0.400892044]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.UnitOfMeasureName'
+        Label: 'UnitOfMeasureName'
+        Strings: 'UnitName'
+        Taborder: 5
+      ]
+    }
+    Component edtSalesAmount id:edtSalesAmount_608
+    {
+      #keys: '[414382.0.400892099]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.SalesAmount'
+        Label: 'SalesAmount'
+        Mask: 'NUMBER'
+        Taborder: 6
+      ]
+    }
+    Component dsDemandDate
+    {
+      #keys: '[414382.0.400892150]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.DemandDate'
+        Label: 'Demand Date'
+        Taborder: 8
+      ]
+    }
+    Component dsForecastDemandDate
+    {
+      #keys: '[414382.0.408660329]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.ForecastDemandDate'
+        Label: 'Forecast Demand Date'
+        Taborder: 7
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_ClickBtnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_ClickBtnOk.def
new file mode 100644
index 0000000..c345b5c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_ClickBtnOk.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Method ClickBtnOk () id:Method_DialogFillingCapacityOrder_ClickBtnOk
+{
+  #keys: '[414382.0.402531772]'
+  Body:
+  [*
+    // Disabled button to prevent the possibility of multiple firing
+    
+    btnOk.Enabled(false,'');
+    
+    // OnOk
+    this.ApplyChanges();
+    
+    DataHolderFillingCapacityOrder.Data().Commit();
+    
+    //if( not isnull( DataHolderForm.Data() ) )
+    //{
+    //  // Access the form, select the new assumption
+    //  DataHolderForm.Data().ListAssumptions().SelectByKey( DataHolderDialogData.Data().WrappedInstance().Key() );
+    //}
+    
+    this.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_Edit.def
new file mode 100644
index 0000000..2d5dc2d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_Edit.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  FillingCapacityOrder selection
+) id:Method_DialogFillingCapacityOrder_Edit
+{
+  #keys: '[414382.0.402531258]'
+  Body:
+  [*
+    // Edits assumption
+    data := shadow( selection );
+    
+    DataHolderFillingCapacityOrder.Data( &data );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_New.def
new file mode 100644
index 0000000..cd0fc2c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Method_New.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method New (
+  MacroPlan owner
+) id:Method_DialogFillingCapacityOrder_New
+{
+  #keys: '[414382.0.401211772]'
+  Body:
+  [*
+    
+    data := owner.FillingCapacityOrder(relshadow);
+    
+    DataHolderFillingCapacityOrder.Data(&data);
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..d18a682
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/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: '[414382.0.400131335]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..87cbc8c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414382.0.400131334]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ClickBtnOk()
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/_ROOT_Component_DialogFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/_ROOT_Component_DialogFillingCapacityOrder.def
new file mode 100644
index 0000000..3050a29
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/_ROOT_Component_DialogFillingCapacityOrder.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogFillingCapacityOrder
+{
+  #keys: '[414382.0.400131321]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderFillingCapacityOrder
+    {
+      #keys: '[414382.0.400311371]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[FillingCapacityOrder]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component DataHolderForm id:DataHolderForm_450
+    {
+      #keys: '[414382.0.400311390]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'FillingCapacityOrder'
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+    Title: 'Filling Capacity Order'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlActions.def
new file mode 100644
index 0000000..8a9f4fa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414382.0.415330994]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414382.0.415330998]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414382.0.415331000]'
+      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_DialogFillingCustomerAndForecast/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlContent.def
new file mode 100644
index 0000000..99073e6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Component_pnlContent.def
@@ -0,0 +1,86 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414382.0.415330992]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efVerNo
+    {
+      #keys: '[414382.0.415451216]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.VerNo'
+        Label: 'VerNo'
+        Taborder: 0
+      ]
+    }
+    Component efBusinessType
+    {
+      #keys: '[414382.0.413702519]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.BusinessType'
+        Enabled: false
+        Label: 'BusinessType'
+        ReadOnly: true
+        Taborder: 1
+      ]
+    }
+    Component efCustomer
+    {
+      #keys: '[414382.0.415542596]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.Customer'
+        Enabled: false
+        Label: 'Customer'
+        ReadOnly: true
+        Taborder: 2
+      ]
+    }
+    Component edtSalesAmount
+    {
+      #keys: '[414382.0.414851317]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.SalesAmount'
+        Label: 'SalesAmount'
+        Taborder: 3
+      ]
+    }
+    Component dsDemandDate id:dsDemandDate_768
+    {
+      #keys: '[414382.0.413703310]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.DemandDate'
+        Enabled: false
+        Label: 'Demand Date'
+        ReadOnly: true
+        Taborder: 4
+      ]
+    }
+    Component dsForecastDemandDate id:dsForecastDemandDate_515
+    {
+      #keys: '[414382.0.413703326]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderFilling.Data.ForecastDemandDate'
+        Label: 'Forecast Demand Date'
+        Taborder: 5
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_ClickBtnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_ClickBtnOk.def
new file mode 100644
index 0000000..6519f81
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_ClickBtnOk.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+Method ClickBtnOk () id:Method_DialogFillingCustomerAndForecast_ClickBtnOk
+{
+  #keys: '[414382.0.415784532]'
+  Body:
+  [*
+    // Disabled button to prevent the possibility of multiple firing
+    
+    btnOk.Enabled(false,'');
+    
+    // OnOk
+    this.ApplyChanges();
+    DataHolderFilling.Data().Commit();
+    
+    fillingData := DataHolderFilling.Data();
+    
+    CustomerAndForecastOrder::CreateFillingCapacityOrder( MacroPlan, fillingData.WrappedInstance());
+    
+    //if( not isnull( DataHolderForm.Data() ) )
+    //{
+    //  // Access the form, select the new assumption
+    //  DataHolderForm.Data().ListAssumptions().SelectByKey( DataHolderDialogData.Data().WrappedInstance().Key() );
+    //}
+    
+    this.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_Filling.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_Filling.def
new file mode 100644
index 0000000..81f41e9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Method_Filling.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filling (
+  CustomerAndForecastOrder selection
+) id:Method_DialogFillingCustomerAndForecast_Filling
+{
+  #keys: '[414382.0.415572412]'
+  Body:
+  [*
+    data := shadow( selection );
+    
+    DataHolderFilling.Data( &data);
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..405e6f4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/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: '[414382.0.415331004]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..ca39440
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414382.0.415331003]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ClickBtnOk();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/_ROOT_Component_DialogFillingCustomerAndForecast.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/_ROOT_Component_DialogFillingCustomerAndForecast.def
new file mode 100644
index 0000000..57c6988
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCustomerAndForecast/_ROOT_Component_DialogFillingCustomerAndForecast.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogFillingCustomerAndForecast
+{
+  #keys: '[414382.0.415330990]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderFilling
+    {
+      #keys: '[414382.0.415483316]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[CustomerAndForecastOrder]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component DataHolderFillingCapacityOrder
+    {
+      #keys: '[414382.0.416323029]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[FillingCapacityOrder]*'
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+    Title: 'Filling'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlActions.def
new file mode 100644
index 0000000..b759db3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414382.0.423200498]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414382.0.423200502]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Save'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414382.0.423200504]'
+      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_DialogFillingOrderScheme/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlContent.def
new file mode 100644
index 0000000..b5e0e86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Component_pnlContent.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414382.0.423200496]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efSchemeName
+    {
+      #keys: '[414382.0.424860819]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: 'Scheme Name'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Method_OpenScheme.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Method_OpenScheme.def
new file mode 100644
index 0000000..a48a494
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Method_OpenScheme.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method OpenScheme () id:Method_DialogFillingOrderScheme_OpenScheme
+{
+  #keys: '[414382.0.424440675]'
+  Body:
+  [*
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..dbe627b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/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: '[414382.0.423200508]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..855c43b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414382.0.423200507]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      
+      schemeName := DialogFillingOrderScheme.efSchemeName().Text();
+      
+      FilllingCapacityOrderScheme::CreateFillingCapacityOrderScheme( MacroPlan,schemeName);
+      
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/_ROOT_Component_DialogFillingOrderScheme.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/_ROOT_Component_DialogFillingOrderScheme.def
new file mode 100644
index 0000000..83e0bff
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingOrderScheme/_ROOT_Component_DialogFillingOrderScheme.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogFillingOrderScheme
+{
+  #keys: '[414382.0.423200494]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderFillingScheme
+    {
+      #keys: '[414382.0.424891357]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'FillingCapacityOrder'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+    Title: 'Save Scheme'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlActions.def
new file mode 100644
index 0000000..73be06b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414382.0.391970675]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414382.0.391970679]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414382.0.391970681]'
+      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_DialogHistoricalSalesOrders/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlContent.def
new file mode 100644
index 0000000..827d86f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Component_pnlContent.def
@@ -0,0 +1,109 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414382.0.391970673]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dropDownStringListProductID
+    {
+      #keys: '[414382.0.397670774]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.ProductID'
+        Label: 'ProductID'
+        Taborder: 0
+      ]
+    }
+    Component dropDownStringListSalesSegmentName
+    {
+      #keys: '[414382.0.397792089]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.SalesSegmentName'
+        Label: 'SalesSegmentName'
+        Taborder: 1
+      ]
+    }
+    Component dropDownStringListStockPointID
+    {
+      #keys: '[414382.0.397613350]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.StockingPointID'
+        Label: 'StockPointID'
+        Taborder: 2
+      ]
+    }
+    Component dropDownStringListCustomer
+    {
+      #keys: '[414382.0.396181827]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.Customer'
+        Label: 'Customer'
+        Taborder: 3
+      ]
+    }
+    Component dropDownStringListUnitOfMeasureName
+    {
+      #keys: '[414382.0.400160473]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        AllowEmpty: true
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.UnitOfMeasureName'
+        Label: 'UnitOfMeasureName'
+        Taborder: 5
+      ]
+    }
+    Component edtQuantity
+    {
+      #keys: '[414382.0.400120730]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.Quantity'
+        Label: 'Quantity'
+        Mask: 'REAL'
+        Taborder: 4
+      ]
+    }
+    Component dsOrderDate
+    {
+      #keys: '[414382.0.400121793]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.OrderDate'
+        Label: 'Demand Date'
+        Taborder: 7
+      ]
+    }
+    Component edtSalesAmount
+    {
+      #keys: '[414382.0.400160672]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'DataHolderHistoricalSalesOrder.Data.SalesAmount'
+        Label: 'SalesAmount'
+        Mask: 'NUMBER'
+        Taborder: 6
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_ClickBtnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_ClickBtnOk.def
new file mode 100644
index 0000000..9472a57
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_ClickBtnOk.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Method ClickBtnOk () id:Method_DialogHistoricalSalesOrders_ClickBtnOk
+{
+  #keys: '[414382.0.400401230]'
+  Body:
+  [*
+    // Disabled button to prevent the possibility of multiple firing
+    
+    btnOk.Enabled(false,'');
+    
+    // OnOk
+    this.ApplyChanges();
+    
+    DataHolderHistoricalSalesOrder.Data().Commit();
+    
+    //if( not isnull( DataHolderForm.Data() ) )
+    //{
+    //  // Access the form, select the new assumption
+    //  DataHolderForm.Data().ListAssumptions().SelectByKey( DataHolderDialogData.Data().WrappedInstance().Key() );
+    //}
+    
+    this.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_Edit.def
new file mode 100644
index 0000000..8db2d4e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_Edit.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+  FillingCapacityOrder selection
+) id:Method_DialogHistoricalSalesOrders_Edit
+{
+  #keys: '[414382.0.402531395]'
+  Body:
+  [*
+    // Edits assumption
+    data := shadow( selection );
+    
+    DataHolderHistoricalSalesOrder.Data( &data);
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_New.def
new file mode 100644
index 0000000..db4476b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Method_New.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method New (
+  MacroPlan owner
+) id:Method_DialogHistoricalSalesOrders_New
+{
+  #keys: '[414382.0.393020968]'
+  Body:
+  [*
+    data := owner.FillingCapacityOrder(relshadow);
+    DataHolderHistoricalSalesOrder.Data( &data);
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..33de4f2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/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: '[414382.0.391970685]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..009143e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414382.0.391970684]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ClickBtnOk()
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/_ROOT_Component_DialogHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/_ROOT_Component_DialogHistoricalSalesOrders.def
new file mode 100644
index 0000000..6ec8904
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogHistoricalSalesOrders/_ROOT_Component_DialogHistoricalSalesOrders.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogHistoricalSalesOrders
+{
+  #keys: '[414382.0.391970671]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component DataHolderHistoricalSalesOrder
+    {
+      #keys: '[414382.0.394331150]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'shadow[FillingCapacityOrder]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component DataHolderForm
+    {
+      #keys: '[414382.0.394362557]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'FillingCapacityOrder'
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+    Title: 'Historical Sales Order'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def
index 8f6e89a..f8d2a3d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def
@@ -4,13 +4,20 @@
 {
   #keys: '[414702.0.131771253]'
   DefinitionID: 'Responsedef_WebButton_OnClick'
-  GroupServerCalls: true
   QuillAction
   {
     Body:
     [*
       Form.ApplyChanges();
+      
+      data := DataHolderDialogData.Data();
+      if ( data.PlanningStrategyCustom() = "JIT" ) {
+        data.MinimumNumberOfDaysInStock( 0 );
+        data.MaximumNumberOfDaysInInventory( 0 );
+      }
+      
       Form.Close();
     *]
+    GroupServerCalls: false
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnCreated.def
new file mode 100644
index 0000000..215ed5c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnCreated.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pnlGeneral/ddslMaterialPlanningPolicyChanges
+Response OnCreated () id:Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnCreated
+{
+  #keys: '[414702.0.199501073]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      data := DataHolderDialogData.Data();
+      if ( data.PlanningStrategyCustom() <> "" and data.PlanningStrategyCustom() = "JIT" ) {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( false );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( false );
+      } else if ( data.PlanningStrategyAuto() <> "" and data.PlanningStrategyAuto() = "JIT" ) {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( false );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( false );
+      } else {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( true );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( true );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnUserSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnUserSelectionChanged.def
new file mode 100644
index 0000000..eaf8b6a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnUserSelectionChanged.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: pnlGeneral/ddslMaterialPlanningPolicyChanges
+Response OnUserSelectionChanged () id:Response_pnlGeneral_ddslMaterialPlanningPolicyChanges_OnUserSelectionChanged
+{
+  #keys: '[414702.0.198291344]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownStringList_OnUserSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      if ( selection <> "" and selection = "JIT" ) {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( false );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( false );
+      } else if ( selection <> "" and selection = "JIT" ) {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( false );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( false );
+      } else {
+        efTheMinimumNumberOfDaysForAnItemToBeInventoried.Visible( true );
+        efTheMaximumNumberOfDaysThatTheItemIsInStock.Visible( true );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_ListBusinessType.def b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_ListBusinessType.def
new file mode 100644
index 0000000..b0713d9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_ListBusinessType.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListBusinessType
+{
+  #keys: '[414382.0.373071310]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorBusinessType
+    {
+      #keys: '[414382.0.373071311]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'BusinessType'
+      ]
+    }
+    #child: listActionBarPageBusinessType
+    Component DataSetLevelBusinessType
+    {
+      #keys: '[414382.0.373071313]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuBusinessType655
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessTypeName","title":"BusinessTypeName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessTypeName"}}]'
+        ContextMenu: 'listContextMenuBusinessType655'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListBusinessType_WebMenu_OnClick
+    {
+      #keys: '[414382.0.377975283]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1051.0.24454044]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listActionBarPageBusinessType\043675.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listActionBarPageBusinessType\043675.def"
new file mode 100644
index 0000000..f8612f8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listActionBarPageBusinessType\043675.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageBusinessType
+{
+  #keys: '[414382.0.373071312]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listContextMenuBusinessType655.def b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listContextMenuBusinessType655.def
new file mode 100644
index 0000000..30edf41
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form367/Component_listContextMenuBusinessType655.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component listContextMenuBusinessType655
+{
+  #keys: '[414382.0.373071314]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuNew
+    {
+      #keys: '[414382.0.374151049]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 3
+        Title: 'New'
+      ]
+    }
+    Component MenuEdit
+    {
+      #keys: '[414382.0.373031364]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'PENCIL'
+        Taborder: 4
+        Title: 'Edit'
+      ]
+    }
+    Component MenuDelete
+    {
+      #keys: '[414382.0.374361100]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 5
+        Title: 'Delete'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuDelete_OnClick.def
new file mode 100644
index 0000000..c5aa30a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListBusinessType
+Response OnClick (
+  BusinessType selection
+) id:Response_ListBusinessType_MenuDelete_OnClick
+{
+  #keys: '[414382.0.378330518]'
+  CanBindMultiple: false
+  DefinitionID => /ListBusinessType/Responsedef_ListBusinessType_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuEdit_OnClick.def
new file mode 100644
index 0000000..aaecca8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListBusinessType
+Response OnClick (
+  BusinessType selection
+) id:Response_ListBusinessType_MenuEdit_OnClick
+{
+  #keys: '[414382.0.378121511]'
+  CanBindMultiple: false
+  DefinitionID => /ListBusinessType/Responsedef_ListBusinessType_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogBusinessType );
+      dlg.Edit(  selection );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def
new file mode 100644
index 0000000..f81f38b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListBusinessType
+Response OnClick () id:Response_ListBusinessType_MenuNew_OnClick
+{
+  #keys: '[414382.0.377975353]'
+  CanBindMultiple: false
+  DefinitionID => /ListBusinessType/Responsedef_ListBusinessType_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuNew'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogBusinessType );
+      dlg.New( GlobalOTDTable );
+    *]
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form367/_ROOT_Component_FormBusinessType\043367.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form367/_ROOT_Component_FormBusinessType\043367.def"
new file mode 100644
index 0000000..e23342a
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form367/_ROOT_Component_FormBusinessType\043367.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormBusinessType
+{
+  #keys: '[414382.0.367630242]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListBusinessType
+  ]
+  Properties:
+  [
+    Title: 'Business Type'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def
new file mode 100644
index 0000000..d951132
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component ListFillingCapacityOrder
+{
+  #keys: '[414382.0.397311976]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorFillingCapacityOrder
+    {
+      #keys: '[414382.0.397311977]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        FixedFilter: 'not object.IsFilling()'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'FillingCapacityOrder'
+      ]
+    }
+    #child: listActionBarPageFillingCapacityOrder
+    Component DataSetLevelFillingCapacityOrder
+    {
+      #keys: '[414382.0.397311982]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuFillingCapacityOrder
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"VerNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"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":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"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":"PanelBigSheetQuantity","title":"PanelBigSheetQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelBigSheetQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"SalesAmount","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"ForecastDemandDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandDate","title":"DemandDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderType","title":"OrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderType"}}]'
+        ContextMenu: 'listContextMenuFillingCapacityOrder'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListFillingCapacityOrder_WebMenu_OnClick
+    {
+      #keys: '[414382.0.401230580]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1099.0.7418521]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listActionBarPageFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listActionBarPageFillingCapacityOrder.def
new file mode 100644
index 0000000..ec644c5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listActionBarPageFillingCapacityOrder.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageFillingCapacityOrder
+{
+  #keys: '[414382.0.397311979]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listContextMenuFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listContextMenuFillingCapacityOrder.def
new file mode 100644
index 0000000..42e181a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_listContextMenuFillingCapacityOrder.def
@@ -0,0 +1,57 @@
+Quintiq file version 2.0
+Component listContextMenuFillingCapacityOrder
+{
+  #keys: '[414382.0.397311984]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuNew
+    {
+      #keys: '[414382.0.401230548]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 3
+        Title: 'New'
+      ]
+    }
+    Component MenuEdit id:MenuEdit_100
+    {
+      #keys: '[414382.0.402500725]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'PENCIL'
+        Taborder: 4
+        Title: 'Edit'
+      ]
+    }
+    Component MenuDelete id:MenuDelete_129
+    {
+      #keys: '[414382.0.402500768]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 5
+        Title: 'Delete'
+      ]
+    }
+    Component MenuSaveScheme
+    {
+      #keys: '[414382.0.409871758]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DISK_BLUE'
+        Taborder: 6
+        Title: 'Save Scheme'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuDelete_OnClick.def
new file mode 100644
index 0000000..243c7c1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListFillingCapacityOrder
+Response OnClick (
+  FillingCapacityOrder selection
+) id:Response_ListFillingCapacityOrder_MenuDelete_OnClick
+{
+  #keys: '[414382.0.402561135]'
+  CanBindMultiple: false
+  DefinitionID => /ListFillingCapacityOrder/Responsedef_ListFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuEdit_OnClick.def
new file mode 100644
index 0000000..de377cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListFillingCapacityOrder
+Response OnClick (
+  FillingCapacityOrder selection
+) id:Response_ListFillingCapacityOrder_MenuEdit_OnClick
+{
+  #keys: '[414382.0.404212572]'
+  CanBindMultiple: false
+  DefinitionID => /ListFillingCapacityOrder/Responsedef_ListFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogFillingCapacityOrder );;
+      dlg.Edit( selection);
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuNew_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuNew_OnClick.def
new file mode 100644
index 0000000..1d6970c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuNew_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListFillingCapacityOrder
+Response OnClick () id:Response_ListFillingCapacityOrder_MenuNew_OnClick
+{
+  #keys: '[414382.0.402410520]'
+  CanBindMultiple: false
+  DefinitionID => /ListFillingCapacityOrder/Responsedef_ListFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuNew'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogFillingCapacityOrder );
+      dlg.New( MacroPlan);
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuSaveScheme_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuSaveScheme_OnClick.def
new file mode 100644
index 0000000..0dd6b1d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_ListFillingCapacityOrder_MenuSaveScheme_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListFillingCapacityOrder
+Response OnClick () id:Response_ListFillingCapacityOrder_MenuSaveScheme_OnClick
+{
+  #keys: '[414382.0.410851847]'
+  CanBindMultiple: false
+  DefinitionID => /ListFillingCapacityOrder/Responsedef_ListFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuSaveScheme'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogFillingOrderScheme );
+      dlg.OpenScheme();
+      //dlg.Edit( selection);
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def
new file mode 100644
index 0000000..ebf5356
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFillingCapacityOrder
+{
+  #keys: '[414382.0.396111858]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListFillingCapacityOrder
+  ]
+  Properties:
+  [
+    Title: 'Filling Capacity Orders'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def
new file mode 100644
index 0000000..9982fb6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListFillingSchemeDetail
+{
+  #keys: '[414382.0.434111695]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorFillingSchemeDetail
+    {
+      #keys: '[414382.0.434111696]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[FillingCapacityOrder]'
+        Source: 'DataHolderFillingSchemeDetails'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageFillingSchemeDetail
+    Component DataSetLevelFillingSchemeDetail
+    {
+      #keys: '[414382.0.434111701]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuFillingSchemeDetail
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"VerNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}}]'
+        ContextMenu: 'listContextMenuFillingSchemeDetail'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listActionBarPageFillingSchemeDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listActionBarPageFillingSchemeDetail.def
new file mode 100644
index 0000000..25791d7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listActionBarPageFillingSchemeDetail.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageFillingSchemeDetail
+{
+  #keys: '[414382.0.434111698]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listContextMenuFillingSchemeDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listContextMenuFillingSchemeDetail.def
new file mode 100644
index 0000000..21ba05d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_listContextMenuFillingSchemeDetail.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuFillingSchemeDetail
+{
+  #keys: '[414382.0.434111703]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def"
new file mode 100644
index 0000000..39f6e98
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFillingSchemeDetail
+{
+  #keys: '[414382.0.424331085]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListFillingSchemeDetail
+    Component DataHolderFillingSchemeDetails id:DataHolderFillingSchemeDetails_71
+    {
+      #keys: '[414382.0.438570912]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[FillingCapacityOrder]*'
+      Children:
+      [
+        Component DataExtractorFillingSchemeDetails
+        {
+          #keys: '[414382.0.438691291]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[FillingCapacityOrder]'
+            Source: 'FormFillingScheme.DataHolderFillingScheme'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Title: 'Filling Capacity Orders'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
new file mode 100644
index 0000000..529f05f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListCustomerAndFillingCapacityOrder
+{
+  #keys: '[414382.0.413740609]'
+  BaseType: 'WebList'
+  Children:
+  [
+    #child: listActionBarPageCustomerAndFillingCapacityOrder
+    Component DataExtractorCustomerAndFillingCapacityOrder
+    {
+      #keys: '[414382.0.413740610]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'CustomerAndForecastOrder'
+      ]
+    }
+    Component DataSetLevelCustomerAndFillingCapacityOrder
+    {
+      #keys: '[414382.0.413740615]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCustomerAndFillingCapacityOrder
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"VerNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ServiceType","title":"ServiceType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ServiceType"}},{"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":"PanelBigSheetQuantity","title":"PanelBigSheetQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelBigSheetQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"SalesAmount","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"ForecastDemandDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandDate","title":"DemandDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandDate"}}]'
+        ContextMenu: 'listContextMenuCustomerAndFillingCapacityOrder'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
+    {
+      #keys: '[414382.0.415541555]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1121.0.30421200]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listActionBarPageCustomerAndFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listActionBarPageCustomerAndFillingCapacityOrder.def
new file mode 100644
index 0000000..ac6bc73
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listActionBarPageCustomerAndFillingCapacityOrder.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCustomerAndFillingCapacityOrder
+{
+  #keys: '[414382.0.413740612]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def
new file mode 100644
index 0000000..01848c5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+Component listContextMenuCustomerAndFillingCapacityOrder
+{
+  #keys: '[414382.0.413740617]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuFilling
+    {
+      #keys: '[414382.0.414941796]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 3
+        Title: 'Filling'
+      ]
+    }
+    Component MenuTest
+    {
+      #keys: '[414382.0.415603149]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 4
+        Title: 'Test'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Method_OpenScheme.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Method_OpenScheme.def
new file mode 100644
index 0000000..152a2c0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Method_OpenScheme.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method OpenScheme () id:Method_FormCustomerAndForecastOrder_OpenScheme
+{
+  #keys: '[414382.0.410362701]'
+  Body:
+  [*
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuFilling_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuFilling_OnClick.def
new file mode 100644
index 0000000..ec8076c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuFilling_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListCustomerAndFillingCapacityOrder
+Response OnClick (
+  CustomerAndForecastOrder selection
+) id:Response_ListCustomerAndFillingCapacityOrder_MenuFilling_OnClick
+{
+  #keys: '[414382.0.415301299]'
+  CanBindMultiple: false
+  DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuFilling'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogFillingCustomerAndForecast );
+      dlg.Filling( selection);
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def
new file mode 100644
index 0000000..f292299
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListCustomerAndFillingCapacityOrder
+Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick
+{
+  #keys: '[414382.0.415724061]'
+  CanBindMultiple: false
+  DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuTest'
+  QuillAction
+  {
+    Body:
+    [*
+      CustomerAndForecastOrder::CreateTestData( MacroPlan);
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
new file mode 100644
index 0000000..7a7dea3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCustomerAndForecastOrder
+{
+  #keys: '[414382.0.410884055]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCustomerAndFillingCapacityOrder
+  ]
+  Properties:
+  [
+    Title: 'Customer And Forecast Order'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def
new file mode 100644
index 0000000..30b376c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListFillingScheme
+{
+  #keys: '[414382.0.426811656]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorFillingScheme
+    {
+      #keys: '[414382.0.426811657]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'FilllingCapacityOrderScheme'
+      ]
+    }
+    #child: listActionBarPageFillingScheme
+    Component DataSetLevelFillingScheme
+    {
+      #keys: '[414382.0.426811662]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: Menurelease
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SchemeName","title":"SchemeName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SchemeName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SchemeDate","title":"SchemeDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SchemeDate"}}]'
+        ContextMenu: 'Menurelease'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListFillingScheme_WebMenu_OnClick
+    {
+      #keys: '[414382.0.428592707]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1143.0.45315951]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_Menurelease.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_Menurelease.def
new file mode 100644
index 0000000..db68912
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_Menurelease.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component Menurelease
+{
+  #keys: '[414382.0.426811664]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuRelease
+    {
+      #keys: '[414382.0.428743342]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Taborder: 3
+        Title: 'Release'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_listActionBarPageFillingScheme.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_listActionBarPageFillingScheme.def
new file mode 100644
index 0000000..14ace1f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_listActionBarPageFillingScheme.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageFillingScheme
+{
+  #keys: '[414382.0.426811659]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_MenuRelease_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_MenuRelease_OnClick.def
new file mode 100644
index 0000000..5d50bdf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_MenuRelease_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: ListFillingScheme
+Response OnClick (
+  FilllingCapacityOrderScheme selection
+) id:Response_ListFillingScheme_MenuRelease_OnClick
+{
+  #keys: '[414382.0.428592726]'
+  CanBindMultiple: false
+  DefinitionID => /ListFillingScheme/Responsedef_ListFillingScheme_WebMenu_OnClick
+  Initiator: 'MenuRelease'
+  Precondition:
+  [*
+    not selection.IsRelease();
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      selection.IsRelease(true);
+      FilllingCapacityOrderScheme::ReleaseFillingScheme( MacroPlan,selection);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def
new file mode 100644
index 0000000..7b75d26
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: ListFillingScheme
+Response OnClick (
+  FilllingCapacityOrderScheme selection
+) id:Response_ListFillingScheme_OnClick
+{
+  #keys: '[414382.0.426812119]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      schemeName := selection.SchemeName();
+      info( "schemeName : " + schemeName );
+      list := selectset( MacroPlan,FillingCapacityOrder,order,order.SchemeName() = selection.SchemeName());
+      
+      traverse( list,Elements,e)
+      {
+          info( e.SchemeName() ); 
+      }
+      
+      DataHolderFillingScheme.Data(&list);
+      holderlist := DataHolderFillingScheme.Data();
+      traverse( holderlist,Elements,e)
+      {
+          info( e.SchemeName() ); 
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def
new file mode 100644
index 0000000..b95b12f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFillingScheme
+{
+  #keys: '[414382.0.426331772]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListFillingScheme
+    Component DataHolderFillingScheme
+    {
+      #keys: '[414382.0.437300526]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[FillingCapacityOrder]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def
new file mode 100644
index 0000000..017d092
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListHistoricalFillingCapacityOrder
+{
+  #keys: '[414382.0.442221219]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorHistoricalFillingCapacityOrder
+    {
+      #keys: '[414382.0.442221220]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'HistoricalFillingCapacityOrder'
+      ]
+    }
+    #child: listActionBarPageHistoricalFillingCapacityOrder
+    Component DataSetLevelHistoricalFillingCapacityOrder
+    {
+      #keys: '[414382.0.442221225]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuHistoricalFillingCapacityOrder
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"VerNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderType","title":"OrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FillingType","title":"FillingType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FillingType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"RewindsQuantityToReduced","title":"RewindsQuantityToReduced","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"RewindsQuantityToReduced"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"SalesAmount","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"ForecastDemandDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProfitabilityLevel","title":"ProfitabilityLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProfitabilityLevel"}}]'
+        ContextMenu: 'listContextMenuHistoricalFillingCapacityOrder'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listActionBarPageHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listActionBarPageHistoricalFillingCapacityOrder.def
new file mode 100644
index 0000000..65995fb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listActionBarPageHistoricalFillingCapacityOrder.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageHistoricalFillingCapacityOrder
+{
+  #keys: '[414382.0.442221222]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listContextMenuHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listContextMenuHistoricalFillingCapacityOrder.def
new file mode 100644
index 0000000..c1ee9a0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_listContextMenuHistoricalFillingCapacityOrder.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuHistoricalFillingCapacityOrder
+{
+  #keys: '[414382.0.442221227]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def
new file mode 100644
index 0000000..9a378bc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormHistoricalFillingCapacityOrder
+{
+  #keys: '[414382.0.441950653]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListHistoricalFillingCapacityOrder
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def
new file mode 100644
index 0000000..9abf0cb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListHistoricalSalesOrders
+{
+  #keys: '[414382.0.388210753]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorHistoricalSalesOrders
+    {
+      #keys: '[414382.0.388210754]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'HistoricalSalesOrder'
+      ]
+    }
+    #child: listActionBarPageHistoricalSalesOrders
+    Component DataSetLevelHistoricalSalesOrders
+    {
+      #keys: '[414382.0.388210759]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuHistoricalSalesOrders
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"VerNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"Customer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"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":"OrderDate","title":"OrderDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}}]'
+        ContextMenu: 'listContextMenuHistoricalSalesOrders'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListHistoricalSalesOrders_WebMenu_OnClick
+    {
+      #keys: '[414382.0.394390402]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1083.0.17043214]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listActionBarPageHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listActionBarPageHistoricalSalesOrders.def
new file mode 100644
index 0000000..8597dfe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listActionBarPageHistoricalSalesOrders.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageHistoricalSalesOrders
+{
+  #keys: '[414382.0.388210756]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listContextMenuHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listContextMenuHistoricalSalesOrders.def
new file mode 100644
index 0000000..08bafce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_listContextMenuHistoricalSalesOrders.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component listContextMenuHistoricalSalesOrders
+{
+  #keys: '[414382.0.388210761]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuNew id:MenuNew_603
+    {
+      #keys: '[414382.0.394390227]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 3
+        Title: 'New'
+      ]
+    }
+    Component MenuEdit id:MenuEdit_847
+    {
+      #keys: '[414382.0.394390242]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'PENCIL'
+        Taborder: 4
+        Title: 'Edit'
+      ]
+    }
+    Component MenuDelete id:MenuDelete_646
+    {
+      #keys: '[414382.0.394390257]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 5
+        Title: 'Delete'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuDelete_OnClick.def
new file mode 100644
index 0000000..c59123e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListHistoricalSalesOrders
+Response OnClick (
+  HistoricalSalesOrder selection
+) id:Response_ListHistoricalSalesOrders_MenuDelete_OnClick
+{
+  #keys: '[414382.0.402500799]'
+  CanBindMultiple: false
+  DefinitionID => /ListHistoricalSalesOrders/Responsedef_ListHistoricalSalesOrders_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuEdit_OnClick.def
new file mode 100644
index 0000000..6ad44a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListHistoricalSalesOrders
+Response OnClick (
+  FillingCapacityOrder selection
+) id:Response_ListHistoricalSalesOrders_MenuEdit_OnClick
+{
+  #keys: '[414382.0.402531567]'
+  CanBindMultiple: false
+  DefinitionID => /ListHistoricalSalesOrders/Responsedef_ListHistoricalSalesOrders_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogHistoricalSalesOrders );
+      dlg.Edit(  selection );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuNew_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuNew_OnClick.def
new file mode 100644
index 0000000..d151663
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Response_ListHistoricalSalesOrders_MenuNew_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: ListHistoricalSalesOrders
+Response OnClick () id:Response_ListHistoricalSalesOrders_MenuNew_OnClick
+{
+  #keys: '[414382.0.394390488]'
+  CanBindMultiple: false
+  DefinitionID => /ListHistoricalSalesOrders/Responsedef_ListHistoricalSalesOrders_WebMenu_OnClick
+  Initiator: 'MenuNew'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogHistoricalSalesOrders );
+      
+      dlg.dropDownStringListProductID().Strings(  HistoricalSalesOrder::GetProductIdString(  MacroPlan,"") );
+      info( HistoricalSalesOrder::GetProductIdString(  MacroPlan,"") );
+      dlg.dropDownStringListCustomer().Strings( HistoricalSalesOrder::GetCustomerString( MacroPlan,""));
+      dlg.dropDownStringListSalesSegmentName().Strings( HistoricalSalesOrder::GetSalesSegmentString(  MacroPlan,""));
+      dlg.dropDownStringListStockPointID().Strings( HistoricalSalesOrder::GetStockingPointString(  MacroPlan,""));
+      dlg.dropDownStringListUnitOfMeasureName().Strings( HistoricalSalesOrder::GetUnitOfMeasuresString(   MacroPlan,""));
+      
+      dlg.New( MacroPlan );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def
new file mode 100644
index 0000000..0b63738
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormHistoricalSalesOrders
+{
+  #keys: '[414382.0.386940324]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListHistoricalSalesOrders
+  ]
+  Properties:
+  [
+    Title: 'Historical Sales Orders'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def"
index 636f952..7519c89 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def"
@@ -13,7 +13,7 @@
       [
         Image: 'EXPORT1'
         Label: '鏁版嵁瀵煎嚭'
-        Taborder: 1
+        Taborder: 2
       ]
     }
     Component ButtonMaterialExportAndImport
@@ -24,7 +24,7 @@
       [
         Image: 'IMPORT1'
         Label: '鏁版嵁瀵煎叆'
-        Taborder: 2
+        Taborder: 3
       ]
     }
     Component ButtonSynchronizeInventoryTargets
@@ -36,7 +36,17 @@
         Image: 'CLOUD_REFRESH'
         Label: '鍚屾搴撳瓨鐩爣'
         Taborder: 0
-        Visible: false
+      ]
+    }
+    Component ButtonPullData
+    {
+      #keys: '[414702.0.199743004]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'TRACTOR'
+        Label: '鎷夊彇鏁版嵁'
+        Taborder: 1
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonPullData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonPullData_OnClick.def
new file mode 100644
index 0000000..b0f98a4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonPullData_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelMaterialExportAndImport_136/ButtonPullData
+Response OnClick () id:Response_PanelMaterialExportAndImport_136_ButtonPullData_OnClick
+{
+  #keys: '[414702.0.198246056]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      WebMessageBox::Error( "鏁版嵁婀栬繛鎺ュけ璐�", true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def
index a7731ca..5b1c51b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def
@@ -5,11 +5,23 @@
   #keys: '[414702.0.141615322]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    flag := not isnull( GlobalOTDTable ) and not isnull( MacroPlan );
+    
+    if ( not flag ) {
+      feedback := "褰撳墠娌℃湁婵�娲荤殑鐗堟湰";
+    }
+    
+    return flag;
+  *]
   QuillAction
   {
     Body:
     [*
-      WebMessageBox::Success( "鍚屾鎴愬姛", true );
+      MatAttrSettingAndPlanStrategy::SynchronizeInventoryTargets( GlobalOTDTable, MacroPlan );
+      
+      WebMessageBox::Success( "搴撳瓨鐩爣鍚屾鎴愬姛", true );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def
index 527a380..06483a1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def
@@ -13,6 +13,6 @@
   [
     Description: '鐗╂枡鏍囩&璁″垝绛栫暐琛ㄥ崟'
     Image: 'PAPER_ROLL'
-    Title: 'Material labeling&planning strategy'
+    Title: '鐗╂枡鏍囩&璁″垝绛栫暐'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_ListData.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_ListData.def
new file mode 100644
index 0000000..1b59d94
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_ListData.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListData
+{
+  #keys: '[414702.0.156121812]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorData
+    {
+      #keys: '[414702.0.156121813]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'PanelMaterial'
+      ]
+    }
+    #child: listActionBarPageData
+    Component DataSetLevelData
+    {
+      #keys: '[414702.0.156121818]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuData
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelModel","title":"PanelModel","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelModel"}},{"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":"DemandQuantity","title":"DemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandQuantity"}}]'
+        ContextMenu: 'listContextMenuData'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListData_WebMenu_OnClick
+    {
+      #keys: '[414702.0.158084176]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[359.0.59836272]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelData\043431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelData\043431.def"
new file mode 100644
index 0000000..1e7ba58
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelData\043431.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelData
+{
+  #keys: '[414702.0.153191731]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListData
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelFunctionButtons.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelFunctionButtons.def
new file mode 100644
index 0000000..59898ad
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelFunctionButtons.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component PanelFunctionButtons
+{
+  #keys: '[414702.0.153162120]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonRefresh
+    {
+      #keys: '[414702.0.153101807]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ARROW_CIRCLE2'
+        Label: '鍒锋柊'
+        Taborder: 0
+      ]
+    }
+    Component ButtonSend
+    {
+      #keys: '[414702.0.153101827]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ANTENNA'
+        Label: '鍙戦��'
+        Taborder: 1
+      ]
+    }
+    Component DropDownStringListBusinessType
+    {
+      #keys: '[414702.0.170431848]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: '浜嬩笟閮ㄩ�夋嫨'
+        Strings: '澶╁崕;涓撴樉;IT;杞﹁浇;TM17;TM18;杩愬姩鍋ュ悍;姹借溅鐢靛瓙'
+        Taborder: 2
+      ]
+    }
+    Component EditFieldAddress
+    {
+      #keys: '[414702.0.203870768]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '鍙戦�佸湴鍧�'
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    MinimumColumns: 1
+    MinimumRows: 1
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelPanelPullPlanReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelPanelPullPlanReport.def
new file mode 100644
index 0000000..1cf39fa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_PanelPanelPullPlanReport.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelPanelPullPlanReport
+{
+  #keys: '[414702.0.153130397]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelData
+    #child: PanelFunctionButtons
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listActionBarPageData.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listActionBarPageData.def
new file mode 100644
index 0000000..8aeee1c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listActionBarPageData.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageData
+{
+  #keys: '[414702.0.156121815]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listContextMenuData.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listContextMenuData.def
new file mode 100644
index 0000000..e25d70c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Component_listContextMenuData.def
@@ -0,0 +1,62 @@
+Quintiq file version 2.0
+Component listContextMenuData
+{
+  #keys: '[414702.0.156121820]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuCreate
+    {
+      #keys: '[414702.0.156370994]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Shortcut: 'Ins'
+        Taborder: 3
+        Title: 'Create...'
+      ]
+    }
+    Component MenuEdit
+    {
+      #keys: '[414702.0.156371015]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        BindOnDoubleClick: true
+        Image: 'PENCIL'
+        Shortcut: 'Enter'
+        Taborder: 4
+        Title: 'Edit'
+      ]
+    }
+    Component MenuDelete
+    {
+      #keys: '[414702.0.156371036]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Shortcut: 'Del'
+        Taborder: 5
+        Title: 'Delete'
+      ]
+    }
+    Component MenuSelectAll
+    {
+      #keys: '[414702.0.157843652]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DOCUMENT_SELECTION'
+        Shortcut: 'Ctrl+A'
+        Taborder: 6
+        Title: '鍏ㄩ��'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuCreate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuCreate_OnClick.def
new file mode 100644
index 0000000..4e4e76b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuCreate_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: ListData
+Response OnClick () id:Response_ListData_MenuCreate_OnClick
+{
+  #keys: '[414702.0.157756457]'
+  CanBindMultiple: false
+  DefinitionID => /ListData/Responsedef_ListData_WebMenu_OnClick
+  Initiator: 'MenuCreate'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditPanelPullPlanReport );
+      dlg.New();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuDelete_OnClick.def
new file mode 100644
index 0000000..1961a06
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuDelete_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListData
+Response OnClick (
+  PanelMaterial selection
+) id:Response_ListData_MenuDelete_OnClick
+{
+  #keys: '[414702.0.156337739]'
+  DefinitionID => /ListData/Responsedef_ListData_WebMenu_OnClick
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuEdit_OnClick.def
new file mode 100644
index 0000000..988dd2d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListData
+Response OnClick (
+  PanelMaterial selection
+) id:Response_ListData_MenuEdit_OnClick
+{
+  #keys: '[414702.0.158297460]'
+  CanBindMultiple: false
+  DefinitionID => /ListData/Responsedef_ListData_WebMenu_OnClick
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditPanelPullPlanReport );
+      dlg.Edit( selection );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuSelectAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuSelectAll_OnClick.def
new file mode 100644
index 0000000..2bfc384
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_ListData_MenuSelectAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListData
+Response OnClick () id:Response_ListData_MenuSelectAll_OnClick
+{
+  #keys: '[414702.0.158466175]'
+  CanBindMultiple: false
+  DefinitionID => /ListData/Responsedef_ListData_WebMenu_OnClick
+  Initiator: 'MenuSelectAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonRefresh_OnClick.def
new file mode 100644
index 0000000..7b93559
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonRefresh_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelFunctionButtons/ButtonRefresh
+Response OnClick () id:Response_PanelFunctionButtons_ButtonRefresh_OnClick
+{
+  #keys: '[414702.0.156301340]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable ) and not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      MacroPlan.PanelMaterial( relflush );
+      
+      GlobalOTDTable.RefreshPanelMaterialData( MacroPlan );
+      
+      WebMessageBox::Success( "鍒锋柊鎴愬姛锛�", true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonSend_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonSend_OnClick.def
new file mode 100644
index 0000000..c52a5f6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/Response_PanelFunctionButtons_ButtonSend_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelFunctionButtons/ButtonSend
+Response OnClick () id:Response_PanelFunctionButtons_ButtonSend_OnClick
+{
+  #keys: '[414702.0.168500044]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan ) and not isnull( DataHolderActiveScenario.Data() );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      scenario := DataHolderActiveScenario.Data();
+      
+      PanelMaterial::Send( MacroPlan, scenario, DropDownStringListBusinessType.Text(), EditFieldAddress.Text() );
+      
+      WebMessageBox::Success( "鍙戦�佹垚鍔燂紒", true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/_ROOT_Component_FormPanelPullPlanReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/_ROOT_Component_FormPanelPullPlanReport.def
new file mode 100644
index 0000000..99e3212
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelPullPlanReport/_ROOT_Component_FormPanelPullPlanReport.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPanelPullPlanReport
+{
+  #keys: '[414702.0.142531280]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelPanelPullPlanReport
+  ]
+  Properties:
+  [
+    Image: 'TABLET_COMPUTER'
+    Title: '闈㈡澘鎷夋枡璁″垝鎶ヨ〃'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_ListWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_ListWorkOrderType.def
new file mode 100644
index 0000000..033d744
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_ListWorkOrderType.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListWorkOrderType
+{
+  #keys: '[414702.0.144971549]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorWorkOrderType
+    {
+      #keys: '[414702.0.144971550]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'WorkOrderType'
+      ]
+    }
+    #child: listActionBarPageWorkOrderType
+    Component DataSetLevelWorkOrderType
+    {
+      #keys: '[414702.0.144971555]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuWorkOrderType
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TypeName","title":"TypeName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"TypeName"}}]'
+        ContextMenu: 'listContextMenuWorkOrderType'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListWorkOrderType_WebMenu_OnClick
+    {
+      #keys: '[414702.0.145643479]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[335.0.42781215]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listActionBarPageWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listActionBarPageWorkOrderType.def
new file mode 100644
index 0000000..9a65131
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listActionBarPageWorkOrderType.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageWorkOrderType
+{
+  #keys: '[414702.0.144971552]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listContextMenuWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listContextMenuWorkOrderType.def
new file mode 100644
index 0000000..3afe0f9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Component_listContextMenuWorkOrderType.def
@@ -0,0 +1,62 @@
+Quintiq file version 2.0
+Component listContextMenuWorkOrderType
+{
+  #keys: '[414702.0.144971557]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuCreate
+    {
+      #keys: '[414702.0.142551037]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Shortcut: 'Ins'
+        Taborder: 3
+        Title: 'Create...'
+      ]
+    }
+    Component MenuEdit
+    {
+      #keys: '[414702.0.142551058]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        BindOnDoubleClick: true
+        Image: 'PENCIL'
+        Shortcut: 'Enter'
+        Taborder: 4
+        Title: 'Edit'
+      ]
+    }
+    Component MenuDelete
+    {
+      #keys: '[414702.0.142511388]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Shortcut: 'Del'
+        Taborder: 5
+        Title: 'Delete'
+      ]
+    }
+    Component MenuSelectAll
+    {
+      #keys: '[414702.0.148555263]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DOCUMENT_SELECTION'
+        Shortcut: 'Ctrl+A'
+        Taborder: 6
+        Title: '鍏ㄩ��'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuCreate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuCreate_OnClick.def
new file mode 100644
index 0000000..a192d2b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuCreate_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListWorkOrderType
+Response OnClick () id:Response_ListWorkOrderType_MenuCreate_OnClick
+{
+  #keys: '[414702.0.142563927]'
+  CanBindMultiple: false
+  DefinitionID => /ListWorkOrderType/Responsedef_ListWorkOrderType_WebMenu_OnClick
+  Initiator: 'MenuCreate'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditWorkOrderType );
+      dlg.NewWorkOrderType( FormWorkOrderType );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuDelete_OnClick.def
new file mode 100644
index 0000000..95fa342
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuDelete_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListWorkOrderType
+Response OnClick (
+  WorkOrderType selection
+) id:Response_ListWorkOrderType_MenuDelete_OnClick
+{
+  #keys: '[414702.0.147250862]'
+  DefinitionID => /ListWorkOrderType/Responsedef_ListWorkOrderType_WebMenu_OnClick
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuEdit_OnClick.def
new file mode 100644
index 0000000..a95b2f0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListWorkOrderType
+Response OnClick (
+  WorkOrderType selection
+) id:Response_ListWorkOrderType_MenuEdit_OnClick
+{
+  #keys: '[414702.0.148314929]'
+  CanBindMultiple: false
+  DefinitionID => /ListWorkOrderType/Responsedef_ListWorkOrderType_WebMenu_OnClick
+  Initiator: 'MenuEdit'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditWorkOrderType );
+      dlg.Edit( selection );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuSelectAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuSelectAll_OnClick.def
new file mode 100644
index 0000000..71dd8bd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/Response_ListWorkOrderType_MenuSelectAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListWorkOrderType
+Response OnClick () id:Response_ListWorkOrderType_MenuSelectAll_OnClick
+{
+  #keys: '[414702.0.147527888]'
+  CanBindMultiple: false
+  DefinitionID => /ListWorkOrderType/Responsedef_ListWorkOrderType_WebMenu_OnClick
+  Initiator: 'MenuSelectAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/_ROOT_Component_FormWorkOrderType.def b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/_ROOT_Component_FormWorkOrderType.def
new file mode 100644
index 0000000..93e4dc2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormWorkOrderType/_ROOT_Component_FormWorkOrderType.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormWorkOrderType
+{
+  #keys: '[414702.0.144971495]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListWorkOrderType
+  ]
+  Properties:
+  [
+    Image: 'HOUSE'
+    Title: '宸ュ崟绫诲瀷缁存姢'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw"
new file mode 100644
index 0000000..da19691
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw"
@@ -0,0 +1,194 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormFillingScheme
+      {
+        title: 'QTIANMA_JITUAN::FormFillingScheme'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormFillingScheme'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 1
+          columnSpan: 4
+        }
+        components
+        {
+          FormFillingScheme_ListFillingScheme
+          {
+          }
+          FormFillingScheme_DataSetLevelFillingScheme
+          {
+            groupDepth: -1
+            column_SchemeName
+            {
+              columnId: 'SchemeName'
+              dataPath: 'SchemeName'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_SchemeDate
+            {
+              columnId: 'SchemeDate'
+              dataPath: 'SchemeDate'
+              dataType: 'date'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormFillingSchemeDetail
+      {
+        title: 'QTIANMA_JITUAN::FormFillingSchemeDetail'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormFillingSchemeDetail'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 5
+          columnSpan: 4
+        }
+        components
+        {
+          FormFillingSchemeDetail_ListFillingSchemeDetail
+          {
+          }
+          FormFillingSchemeDetail_DataSetLevelFillingSchemeDetail
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormPriorities
+      {
+        title: 'Priorities'
+        shown: true
+        componentID: 'FormPriorities'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormPriorities_ListPriority
+          {
+          }
+          FormPriorities_DataSetLevelPriority
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 33
+            }
+            column_ImgHasSalesDemand
+            {
+              columnId: 'ImgHasSalesDemand'
+              dataPath: 'ImgHasSalesDemand'
+              dataType: 'string'
+              title: 'ImgHasSalesDemand'
+              index: 1
+              subtotals: ''
+              width: 30
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 2
+              subtotals: ''
+              width: 95
+            }
+            column_Weight
+            {
+              columnId: 'Weight'
+              dataPath: 'Weight'
+              dataType: 'real'
+              title: '鏉冮噸'
+              index: 3
+              subtotals: ''
+              width: 95
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: ''
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: '濉骇鏂规鍒楄〃'
+  name: 'FillingCapacitySchemeList'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
index cb94597..27e4778 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.32'
+    BuildVersion: '2022.3.0.52'
     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
new file mode 100644
index 0000000..5bf9674
--- /dev/null
+++ b/_var/_Main/ModelSettings/Common/Dev-21/_ROOT_Role_Dev-21.properties
@@ -0,0 +1,532 @@
+#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.description=IT
+_self.name=Dev-21
+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.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.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.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
\ No newline at end of file
diff --git a/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties b/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
index 5ecdbaf..0b578d4 100644
--- a/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
+++ b/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
@@ -454,10 +454,50 @@
 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=
@@ -475,11 +515,11 @@
 domainmodel.mdsstoragedefinitionmanager.name=dbodbc1
 domainmodel.mdsstoragedefinitionmanager.ociconnectionbasichost=10.110.14.50
 domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicport=1521
-domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicservice=totddb
+domainmodel.mdsstoragedefinitionmanager.ociconnectionbasicservice=totddb_jtmb
 domainmodel.mdsstoragedefinitionmanager.ociconnectiontnsname=totddb
 domainmodel.mdsstoragedefinitionmanager.ociconnectiontype=Basic
-domainmodel.mdsstoragedefinitionmanager.parameters=/datasource=MacroPlannerInternalDB /user=otd
-domainmodel.mdsstoragedefinitionmanager.password=1 65BA9039C6C6A82BFEAA7408A8F96867 d5a0fc9a-a372-4807-9f03-34bcf85e582d
+domainmodel.mdsstoragedefinitionmanager.parameters=/datasource=MacroPlannerInternalDB /user=OTDJTMBUSER
+domainmodel.mdsstoragedefinitionmanager.password=1 463752FBAC1C9172263ADBF875F4CBF3 d5a0fc9a-a372-4807-9f03-34bcf85e582d
 domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients=template:domainmodel.soapclientinterfacedefinition
 domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetkind=
 domainmodel.soapclientinterfacedefinition.interface.libdef_soapclients.datasetname=
diff --git "a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw" "b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw"
new file mode 100644
index 0000000..b90401b
--- /dev/null
+++ "b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/\345\241\253\344\272\247\346\226\271\346\241\210\345\210\227\350\241\250.vw"
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+  }
+  formatversion: 2
+  id: '濉骇鏂规鍒楄〃'
+  name: 'FillingCapacitySchemeList'
+  isglobal: false
+  isroot: false
+}

--
Gitblit v1.9.3