From 02dd41390868227710644edd32300f1fb1318fd1 Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期一, 18 九月 2023 21:28:46 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj

---
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl                                                                               |   20 
 _Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl                                                                                          |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorName.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF#670.def                                                      |   43 
 _Main/BL/Type_MappingProduct/Attribute_OrgCode.qbl                                                                                                  |    7 
 _Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl                                                                                               |    8 
 _Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl                                                                         |   23 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged#613.def                                                  |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def                         |   43 
 _Main/BL/Type_PRData/Attribute_OrgId.qbl                                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def                                                    |   27 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData#844.def                                                                          |  106 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def                           |   42 
 _Main/BL/Type_PRData/Attribute_DestinationOrganizationId.qbl                                                                                        |    7 
 _Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl                                                                     |   23 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl                                                                                                |    8 
 _Main/BL/Type_PRData/StaticMethod_DoCall.qbl                                                                                                        |   20 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl                                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def                                                                       |   24 
 _Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl                                                             |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def                                                             |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def                           |   43 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl                                                                              |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl                                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def                                                          |   29 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def                                                                 |   43 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def                                                           |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def                                                    |   22 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def                                                                      |   10 
 _Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl                                                                                                  |    8 
 _Main/BL/Type_PRHistoryData/Attribute_OrgId.qbl                                                                                                     |    7 
 _Main/BL/Type_PRHistoryData/Attribute_PreparerId#603.qbl                                                                                            |    7 
 _Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl                                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData#1.def                                                                 |   24 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl                                                                           |   44 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def                                           |   17 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl                                                                        |    7 
 _Main/BL/Type_PRHistoryData/Attribute_DestinationTypeCode.qbl                                                                                       |    7 
 _Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def                                                          |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def                                                                       |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def                                               |   63 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def                                            |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl                                                                            |    8 
 _Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def                   |   29 
 _Main/BL/Type_PRData/Attribute_PlannerCode.qbl                                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnSelectionChanged.def                               |   17 
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl                                                        |    9 
 _Main/BL/Type_PRData/StaticMethod_ProductIdOver14Days.qbl                                                                                           |   27 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Component_listActionBarPagePRData#1.def                                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def                                                        |   19 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def                           |   25 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def                                        |   10 
 _Main/BL/Type_ERPRequestOfPR/Method_DoCall.qbl                                                                                                      |   58 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def                                                              |   41 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl                                                                             |    8 
 _Main/BL/Type_ERPRequestOfPR/Attribute_ProductName.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def                                                                         |    8 
 _Main/BL/Type_PRData/Attribute_Quantity.qbl                                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def                                                       |   41 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def                                                                                 |   42 
 _Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl                                                                                     |    8 
 _Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl                                                                                  |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl                                                                                       |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime#567.qbl                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def                                                          |   28 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def                                                          |   28 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl                                                                                                     |    8 
 _Main/BL/Type_H_MessagePassing/Attribute_Value.qbl                                                                                                  |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl                                                                                        |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl                                                                                    |    7 
 _Main/BL/Type_PRData/Attribute_ProduceRequiredDate.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def                                                                            |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactorGrading/_ROOT_Component_FormPriorityFactorGrading.def                                       |    8 
 _Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl                                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listActionBarPagePRHistoryData#1.def                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def                                                                                |   25 
 _Main/BL/Type_H_Forecast/Attribute_Department.qbl                                                                                                   |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def                                           |   20 
 _Main/BL/Type_PRData/Attribute_RequisitionType.qbl                                                                                                  |    8 
 _Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl                                                                                                          |    6 
 _Main/BL/Type_PriorityFactorDetails/StaticMethod_CreateTestData.qbl                                                                                 |   15 
 _Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl                                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def      |    3 
 _Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def                                                     |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def                |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def     |   16 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged#774.def                                                      |   18 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl                                                                                             |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl                                                 |   23 
 _Main/BL/Type_PRHistoryData/Attribute_ReceiveStatus.qbl                                                                                             |   12 
 _Main/BL/Type_PRHistoryData/StaticMethod_ReCall.qbl                                                                                                 |   15 
 _Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl                                                                                               |    8 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl                                                                                        |   39 
 _Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl                                                                                          |    8 
 _Main/BL/Type_ERPResponseOfPR/Attribute_ErrorDescription.qbl                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def                                                    |   27 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl                                                                            |    8 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl                                                                                                  |    8 
 _Main/BL/Type_ERPResponseOfPR/_ROOT_Type_ERPResponseOfPR.qbl                                                                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def                                |   37 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def                     |   16 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl                                                                                            |    8 
 _Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl                                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def                                                          |   28 
 _Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl                                                                                                   |    8 
 _Main/BL/Type_PRHistoryData/Attribute_PreparerID.qbl                                                                                                |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl                                                                              |    8 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/Priority_Factor.vw                                                                                 |  194 +
 _Main/BL/Type_ERPRequestOfPR/_ROOT_Type_ERPRequestOfPR.qbl                                                                                          |    9 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl                                                                                                  |    8 
 _Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl                                                                                                      |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl                                                               |   17 
 _Main/BL/Relations/Relation_ERPResponseOfPR_ERPRequestOfPR_ERPRequestOfPR_ERPResponseOfPR.qbl                                                       |   23 
 _Main/BL/Type_ProductInStockingPointInPeriod/_ROOT_Type_ProductInStockingPointInPeriod.qbl                                                          |    6 
 _Main/BL/Type_H_Forecast/Attribute_SKU.qbl                                                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def                                                    |   26 
 _Main/BL/Relations/Relation_ERPRequestOfPR_PRHistoryData_PRHistoryData_ERPRequestOfPR.qbl                                                           |   23 
 _Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl                                                                                                |   48 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def                                                                       |   12 
 _Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx#234.def                                                              |   45 
 _Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl                                                                             |   23 
 _Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl                                                                                                |    8 
 _Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl                                                                                                  |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def                                                      |   27 
 _Main/BL/Type_PRHistoryData/Attribute_DestinationOrganizationID.qbl                                                                                 |    7 
 _Main/BL/Type_PRData/Attribute_AuthorizationStatus.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def                                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def                                           |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def                                                     |   16 
 _Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl                                                                                          |    8 
 _Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl                                                                                      |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def                                                          |   24 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def                                                                      |   16 
 _Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_PanelPriorityFactorSelect.def                                                    |   23 
 _Main/BL/Relations/Relation_PriorityFactorDetails_GlobalOTDTable_GlobalOTDTable_PriorityFactorD.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def                                                         |  132 
 _Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def                                                              |   10 
 _Main/BL/Type_PRHistoryData/Attribute_SendTime.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def                                                      |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def                                   |   28 
 _Main/BL/Type_PRHistoryData/Attribute_ProviderCode.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def                                                           |   28 
 _Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl                                                                                                    |   10 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl                                                                                              |    8 
 _Main/BL/Type_H_Forecast/Attribute_Util.qbl                                                                                                         |    8 
 _Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def                                                               |   10 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl                                                                                            |    8 
 _Main/BL/Type_PRHistoryData/Attribute_PRDataReleaseDate.qbl                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def                                                                                |   50 
 _Main/BL/Relations/Relation_PriorityFactorDetails_PriorityFactor_PriorityFactor_PriorityFactorD.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData#844.def                                                         |  106 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def                                                    |   26 
 _Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def                                                                            |   25 
 _Main/BL/Type_PriorityFactor/_ROOT_Type_PriorityFactor.qbl                                                                                          |    9 
 _Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl                                                                           |   23 
 _Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl                                                                                                  |   10 
 _Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def                                     |   30 
 _Main/BL/Type_PRHistoryData/Attribute_LineTypeId.qbl                                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def                                                               |   41 
 _Main/BL/Type_PRData/Attribute_LineType.qbl                                                                                                         |    7 
 _Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl                                                                           |   10 
 _Main/BL/Type_PRData/Attribute_DestinationTypeCode.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def                                                    |   27 
 _Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl                                                           |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl                                                                            |    8 
 _Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl                                                                                      |   10 
 _Main/BL/Type_PRHistoryData/StaticMethod_ProductIdOver14Days.qbl                                                                                    |   27 
 _Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw                                                                                               |  183 
 _Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl                                                                                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def                                                    |   10 
 _Main/BL/Type_ERPRequestOfPR/Attribute_MRPCalverNo.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def                                                          |   28 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def                                                                                |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def                                                               |   16 
 _Main/BL/Type_ERPRequestOfPR/Attribute_ProductID.qbl                                                                                                |    7 
 _Main/BL/Type_PRData/StaticMethod_TestData.qbl                                                                                                      |   28 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl                                                                                  |    8 
 _Main/BL/Type_PRData/Attribute_MRPCalverNo.qbl                                                                                                      |    8 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl                                                                            |   70 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl                                                 |   23 
 _Main/BL/Type_PRData/_ROOT_Type_PRData.qbl                                                                                                          |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl                                                                                 |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl                                                                                      |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl                                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def                                               |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnCreated.def                                        |   17 
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning#662.qbl                                                                                        |   75 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def                                                                         |   25 
 _Main/BL/Type_PRHistoryData/_ROOT_Type_PRHistoryData.qbl                                                                                            |   10 
 _Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl                                                                                     |    8 
 _Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl                                                 |   23 
 _Main/BL/Type_PRData/Attribute_DataID.qbl                                                                                                           |    7 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl                                                                                   |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl                                                                                        |    8 
 _Main/BL/Type_PRData/Attribute_OrganCode.qbl                                                                                                        |    8 
 _Main/BL/Type_PriorityFactor/StaticMethod_InitData.qbl                                                                                              |   41 
 _Main/BL/Type_PriorityFactorDetails/Attribute_coefficient.qbl                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def                                                          |   22 
 _Main/BL/Type_PRHistoryData/Attribute_HeaderDescription#16.qbl                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def                                                    |   16 
 _Main/BL/Type_ERPRequestOfPR/Attribute_ProviderName.qbl                                                                                             |    7 
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl                                                                              |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def                                                    |   25 
 _Main/BL/Type_PRHistoryData/Method_Recall.qbl                                                                                                       |   29 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl                                                                                        |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl                                                |    9 
 _Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl                                                                      |   17 
 _Main/BL/Type_PRHistoryData/Attribute_DataID.qbl                                                                                                    |    7 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def                                    |   10 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def                                                                |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def                                              |   28 
 _Main/BL/Type_H_Forecast/Attribute_Serial.qbl                                                                                                       |    8 
 _Main/BL/Type_PRData/Attribute_LineAttribute6.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrder.vw                                                                                           |  194 +
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl                                                                                       |    8 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl                                                                               |   43 
 _Main/BL/Type_PRHistoryData/Attribute_UnitOfMeasure.qbl                                                                                             |    8 
 _Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl                                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def                                                                           |   42 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def                                                   |   41 
 _Main/BL/Type_PriorityFactorDetails/Attribute_IsBusinessType.qbl                                                                                    |    7 
 _Main/BL/Type_PRHistoryData/Attribute_ReceiveError.qbl                                                                                              |    8 
 _Main/BL/Type_PRHistoryData/Attribute_DeliverToRequestorId.qbl                                                                                      |    7 
 _Main/BL/Type_PriorityFactorDetails/Function_CalcIsBusinessType.qbl                                                                                 |   18 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl                                                                                          |    8 
 _Main/BL/Type_ERPRequestOfPR/Attribute_BusinessType.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def                                                    |   25 
 _Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl                                                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def                                                    |   37 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def                                                                 |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl                                                                                              |    8 
 _Main/BL/Type_ERPRequestOfPR/Attribute_StockingPointID.qbl                                                                                          |    7 
 _Main/BL/Type_PRData/Attribute_LineTypeId.qbl                                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def                                                       |    4 
 _Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl                                                                                          |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl                                                 |   23 
 _Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl                                                                                            |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def       |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def                                    |    2 
 _Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl                                                           |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def                     |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl                                                                             |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl                                                 |   23 
 _Main/BL/Type_H_OrderRecord/Attribute_ID.qbl                                                                                                        |    8 
 _Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl                                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/_ROOT_Component_FormPRHistoryData.def                                                       |   27 
 _Main/BL/Type_PRData/Attribute_PRSuggestionDate.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def                                                          |   20 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                           |   30 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def                                               |   42 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuTestData_OnClick.def                                       |   17 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl                                                 |   23 
 _Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl                                                                                                   |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorDesc.qbl                                                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged#316.def   |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def                                       |    2 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl                                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged#608.def |   18 
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def                                                               |   10 
 _Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl                                                           |   23 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl                                                                                               |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def                                                             |   36 
 _Main/BL/Type_PRData/Method_DoCall.qbl                                                                                                              |   61 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData#1.def                                                |   24 
 _Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl                                                                                                |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl                                                                                              |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl                                                                                                   |    8 
 _Main/BL/Type_PRHistoryData/Attribute_OrganCode.qbl                                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl                                                                              |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl                                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS#360.def      |   18 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def                                                    |   27 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def                                             |   39 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl                                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def                                         |   13 
 _Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def                                        |   25 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl                                                                                            |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_GradingName.qbl                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def                                                   |   27 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl                                            |    9 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl                                                  |    9 
 _Main/BL/Relations/Relation_PRData_MacroPlan_MacroPlan_PRData.qbl                                                                                   |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def                                         |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl                                                                           |    8 
 _Main/BL/Type_PRHistoryData/Attribute_LineType.qbl                                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def                                                                            |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl                                                                                       |    8 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl                                                                                     |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def                                                           |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def                                                  |   15 
 _Main/BL/Type_ERPResponseOfPR/Attribute_Status.qbl                                                                                                  |    7 
 _Main/BL/Type_PriorityFactorDetails/Attribute_GroupName.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def                                                                      |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl                                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail#802.def                                   |    2 
 _Main/BL/Type_PRData/Attribute_DeliverToRequestorId.qbl                                                                                             |    7 
 _Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp                                                                                     |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def                                                         |   39 
 _Main/BL/Type_PRData/Attribute_ProviderCode.qbl                                                                                                     |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl                                                                                                 |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def                                                             |   27 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def                                                            |   26 
 _Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl                                                 |   23 
 _Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl                                                                                                     |    7 
 _Main/BL/Type_PRData/Attribute_UnitOfMeasure.qbl                                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def                                                          |   28 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl                                                                                   |  233 +
 _Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def                                                     |   32 
 _Main/BL/Type_PRHistoryData/DefaultValue_BusinessType.qbl                                                                                           |    6 
 _Main/BL/Type_H_TestMap/Attribute_SKU.qbl                                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def                                                         |   28 
 _Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl                                                                                  |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuClearTestData_OnClick.def                                  |   17 
 _Main/BL/Type_PRData/Attribute_StockingPointID.qbl                                                                                                  |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_RangeMin.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def                           |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def                                                                            |   60 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw                                                                           |  205 +
 _Main/BL/Type_PRData/Attribute_LineAttribute1.qbl                                                                                                   |    7 
 _Main/BL/Type_ERPRequestOfPR/Attribute_Quantity.qbl                                                                                                 |    7 
 _Main/BL/Type_PRData/Attribute_BusinessType.qbl                                                                                                     |    8 
 _Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def                                                           |   24 
 _Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl                                                                                   |    7 
 _Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl                                                                                                    |    8 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl                                                                                           |    8 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl                                                                                                |    8 
 _Main/BL/Type_PRData/StaticMethod_CanCall.qbl                                                                                                       |   23 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl                                                                                                 |    8 
 _Main/BL/Type_PriorityFactorDetails/StaticMethod_ClearTestData.qbl                                                                                  |   17 
 _Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl                                                                                           |    8 
 _Main/BL/Type_PRData/Attribute_ProviderName.qbl                                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def                                                 |   55 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def                                                                       |   52 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def                                                         |   39 
 _Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl                                                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def                                                             |   10 
 _Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl                                                                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def                                                          |   30 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def                                                          |   27 
 _Main/BL/Relations/Relation_PriorityFactor_GlobalOTDTable_GlobalOTDTable_PriorityFactor.qbl                                                         |   23 
 _Main/BL/Type_PriorityFactorDetails/Function_CalcGradeValueStr.qbl                                                                                  |   19 
 _Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl                                                   |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl                                                                              |    8 
 _Main/BL/Type_PRData/Attribute_ProductName.qbl                                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listActionBarPagePriorityFactor.def                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def                                                                       |   12 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl                                                                            |    8 
 _Main/BL/Type_MappingProduct/StaticMethod_GetByProductId.qbl                                                                                        |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def                                                          |   41 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def                                                                                |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl                                                                           |    8 
 _Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def                                                                    |   10 
 _Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl                                                                                      |    4 
 _Main/BL/Type_H_TestMap/Attribute_Unit.qbl                                                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def                                |   44 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl                                                                                 |    8 
 _Main/BL/Type_PRHistoryData/Attribute_LineAttribute6.qbl                                                                                            |    7 
 _Main/BL/Type_ERPRequestOfPR/Attribute_UnitOfMeasure.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def      |    3 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl                                                                               |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listContextMenuPriorityFactor.def                                                |   34 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl                                    |    9 
 _Main/BL/Type_ERPRequestOfPR/Attribute_ProviderCode.qbl                                                                                             |    7 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl                                                                                            |    8 
 _Main/BL/Type_ProductInStockingPointInPeriod/Attribute_mrpCalverNo.qbl                                                                              |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI#81.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl                                                                               |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def                                                                       |   52 
 _Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl                                                                                            |    8 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw                                                                  |  434 ++
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def                                                             |    2 
 _Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl                                                                                               |    7 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl                                                                           |  240 +
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def                                                                         |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def                                                                 |   22 
 _Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl                                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def                                                               |   10 
 _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl                                                                                |  185 
 _Main/BL/Type_ERPRequestOfPR/Attribute_DeliveryDate.qbl                                                                                             |    7 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl                                                                                             |    8 
 _Main/BL/Type_ERPResponseOfPR/Attribute_DataID.qbl                                                                                                  |    7 
 _Main/BL/Type_PriorityFactorDetails/_ROOT_Type_PriorityFactorDetails.qbl                                                                            |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def                                                      |   12 
 _Main/BL/Type_PriorityFactorDetails/Attribute_IsRange.qbl                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def                                                                   |   41 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def                                                    |   29 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def                                                |   10 
 _Main/BL/Type_PRHistoryData/Attribute_LineAttribute1.qbl                                                                                            |    7 
 _Main/BL/Type_PRHistoryData/Attribute_PlannerCode.qbl                                                                                               |    8 
 _Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl                                                                           |   23 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def                                                           |   10 
 _Main/BL/Type_PriorityFactor/StaticMethod_GetDataByBusinessType.qbl                                                                                 |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def                                             |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def                                                    |   39 
 _Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl                                                                                                |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def                        |   21 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_ListPriorityFactor.def                                                           |   59 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def                                          |   44 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def                                             |   43 
 _Main/BL/Type_PRData/Attribute_HeaderDescription.qbl                                                                                                |    7 
 _Main/BL/Type_PRHistoryData/Attribute_MRPCalverNo.qbl                                                                                               |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_DataHolderChecked_OnDataChanged.def                                                |   18 
 _Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl                                                                                                |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl                                                                                        |    8 
 _Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl                                                                                               |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl                                                                                              |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_GradeTarget.qbl                                                                                       |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl                                                                           |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl                                                                  |   18 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl                                                                                     |    7 
 _Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl                                                                                           |    7 
 _Main/BL/Type_PriorityFactor/Attribute_coefficient.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def               |   24 
 _Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl                                                                                        |    8 
 _Main/BL/Type_PRData/Attribute_PreparerId.qbl                                                                                                       |    7 
 _Main/BL/Type_SaleBudget/Attribute_Specs.qbl                                                                                                        |    7 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl                                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def                                      |   16 
 _Main/BL/Type_PRData/Attribute_SendTIme.qbl                                                                                                         |    8 
 _Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl                                                                                       |   35 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl                                                                              |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl                                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl                                                                                |    8 
 _Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl                                                                                        |   10 
 _Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl                                                                                         |    7 
 _Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl                                                                                             |    8 
 _Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def                                                       |   31 
 _Main/BL/Type_PRHistoryData/Attribute_ReleaseBy.qbl                                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def                                                             |   41 
 _Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl                                                                                                      |    8 
 _Main/BL/Type_ERPRequestOfPR/Attribute_OrganCode.qbl                                                                                                |    7 
 _Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl                                                                                            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def              |   10 
 _Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl                                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl                                                                                 |    8 
 _Main/BL/Type_PRData/Attribute_InterfaceSourceCode.qbl                                                                                              |    7 
 _Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl                                                                                  |    8 
 _Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl                                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def                                                                       |   17 
 _Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl                                                                     |   23 
 _Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl                                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT#710.def                                                                         |   41 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def                                                             |   39 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl                                                                     |    8 
 _Main/BL/Type_PRData/Attribute_UnitPrice.qbl                                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def                                                                  |   10 
 _Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl                                                                                      |   10 
 _Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl                                                                                                |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl                                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl                                                                              |    8 
 _Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl                                                                                                   |    8 
 _Main/BL/Type_PriorityFactorDetails/Attribute_RangeMax.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def                                                  |   17 
 _Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl                                                                                  |   44 
 _Main/BL/Type_PRHistoryData/Attribute_ReceiveTime.qbl                                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def                   |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def                                                                          |   14 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def                                                             |   46 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def                |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001#655.def                                                     |   24 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl                                                           |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def       |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged#635.def                                 |   17 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl                                                                         |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def                                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def                                                    |   26 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl                                                                                 |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl                                                                                             |    8 
 _Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate#168.qbl                                                                                   |    8 
 _Main/BL/Type_PRHistoryData/Attribute_ProviderName.qbl                                                                                              |    8 
 _Main/BL/Type_PRHistoryData/Attribute_Quantity.qbl                                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def                                               |   10 
 _Main/BL/Type_PRHistoryData/Attribute_BusinessType.qbl                                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def                                             |   30 
 _Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw                                                                                 |   16 
 _Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl                                                                                                    |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def                                                                                |   23 
 _Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def   |   10 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrder.vw                                                                            |   12 
 _Main/BL/Type_PRHistoryData/Attribute_ProductID.qbl                                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl                                                                                 |    8 
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl                                                                                            |   27 
 _Main/BL/Type_PRData/Attribute_ProductID.qbl                                                                                                        |    8 
 _Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl                                                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuCall_OnClick.def                                         |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def                                                   |   30 
 _Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl                                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged.def                                     |   19 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def                                                    |   25 
 _Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl                                                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def                     |    4 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def                            |   20 
 _Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def                                                               |   10 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def                                                |   39 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl                                                                                |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def                                                                       |   50 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def                                                      |   24 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def                                                             |   44 
 _Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData#633.def                                                                    |   27 
 _Main/BL/Type_PriorityFactorDetails/Attribute_BusinessType.qbl                                                                                      |    8 
 _Main/BL/Type_PRData/Attribute_SendStatus.qbl                                                                                                       |    8 
 _Main/BL/Type_ERPRequestOfPR/StaticMethod_Create.qbl                                                                                                |   27 
 _Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl                                                                                            |   24 
 _Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl                                                                                                 |    8 
 _Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl                                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def                                                                    |   10 
 _Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl                                                               |   23 
 _Main/BL/Type_H_Forecast/Attribute_CustomName.qbl                                                                                                   |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl                                                                           |    8 
 _Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl                                                                                           |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl                                                                      |   17 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def                                                                   |   44 
 _Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl                                                                                              |    8 
 _Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl                                                                                              |   51 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def                                                                         |   21 
 _Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl                                                                                          |    8 
 _Main/BL/Type_PriorityFactor/Attribute_Desc.qbl                                                                                                     |    7 
 _Main/BL/Type_PRData/Attribute_SendBy.qbl                                                                                                           |    8 
 _Main/BL/Type_PRHistoryData/Attribute_ProductName.qbl                                                                                               |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl                                                                                         |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def                                                                             |   41 
 _Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl                                                                                       |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def                                                  |   10 
 _Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl                                                                                        |    7 
 _Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl                                                                                                  |    8 
 _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl                                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def                                             |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def                                                                         |   49 
 _Main/BL/Type_PriorityFactor/Attribute_Name.qbl                                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_PanelPriorityFactorSelect_BusinessTypeSelectStringList_OnCreated.def              |   17 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def                                                                          |   41 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl                                                 |   23 
 _Main/BL/Type_PriorityFactorDetails/StaticMethod_GetDataByBusinessType.qbl                                                                          |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def                                                  |   10 
 _Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl                                                                          |   10 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl                                                                              |    7 
 _Main/BL/Type_PRHistoryData/Attribute_StockingPointID.qbl                                                                                           |    8 
 _Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl                                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def                                   |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def       |   16 
 _Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl                                                                                                     |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl                                                                                    |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl                                                                              |   13 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def                                                    |   27 
 _Main/BL/Type_ERPRequestOfPR/Attribute_DataID.qbl                                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def                                  |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged#364.def   |   18 
 _Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl                                                                 |   23 
 _Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl                                                                                                  |    8 
 _Main/BL/Type_PRHistoryData/Attribute_SendStatus.qbl                                                                                                |    8 
 _Main/BL/Type_PRHistoryData/Attribute_AuthorizationStatus.qbl                                                                                       |    7 
 _Main/BL/Type_PRHistoryData/Attribute_RequisitionType.qbl                                                                                           |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl                                                                                 |    8 
 _Main/BL/Type_PRHistoryData/Attribute_UnitPrice.qbl                                                                                                 |    7 
 _Main/BL/Type_PriorityFactor/Attribute_BusinessType.qbl                                                                                             |    7 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl                                                          |   10 
 _Main/BL/Type_PriorityFactorDetails/Attribute_GradeValueStr.qbl                                                                                     |    7 
 608 files changed, 11,445 insertions(+), 27 deletions(-)

diff --git "a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl" "b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl"
new file mode 100644
index 0000000..ae35b49
--- /dev/null
+++ "b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl"
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItemColumn_CapacityAndSaleBudgeCompareItemColumn_CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '1[414384.0.816630984]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemColumn
+  {
+    #keys: '3[414384.0.816630986][414384.0.816630985][414384.0.816630987]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemCell
+  {
+    #keys: '3[414384.0.816630989][414384.0.816630988][414384.0.816630990]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl
new file mode 100644
index 0000000..11c02e3
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '1[414384.0.816631000]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.816631002][414384.0.816631001][414384.0.816631003]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemCell
+  {
+    #keys: '3[414384.0.816631005][414384.0.816631004][414384.0.816631006]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
new file mode 100644
index 0000000..a2327e4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeCompareItemColumn
+{
+  #keys: '1[414384.0.816631032]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631034][414384.0.816631033][414384.0.816631035]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
+  {
+    #keys: '3[414384.0.816631037][414384.0.816631036][414384.0.816631038]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl
new file mode 100644
index 0000000..01ffa5f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRowProduct
+{
+  #keys: '1[414384.0.819696587]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.819696589][414384.0.819696588][414384.0.819696590]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRowProduct
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRowProduct
+  {
+    #keys: '3[414384.0.819696592][414384.0.819696591][414384.0.819696593]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
new file mode 100644
index 0000000..59829f6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeCompareItemRow
+{
+  #keys: '1[414384.0.816631016]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631018][414384.0.816631017][414384.0.816631019]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.816631021][414384.0.816631020][414384.0.816631022]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
new file mode 100644
index 0000000..041c7c2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterItem
+{
+  #keys: '1[414384.0.816665103]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816665105][414384.0.816665104][414384.0.816665106]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterItem
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
+  {
+    #keys: '3[414384.0.816665108][414384.0.816665107][414384.0.816665109]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
new file mode 100644
index 0000000..cc133c7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterMonth
+{
+  #keys: '1[414384.0.816631074]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631076][414384.0.816631075][414384.0.816631077]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
+  {
+    #keys: '3[414384.0.816631079][414384.0.816631078][414384.0.816631080]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
new file mode 100644
index 0000000..5fb08a4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterYear
+{
+  #keys: '1[414384.0.816631057]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631059][414384.0.816631058][414384.0.816631060]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterYear
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
+  {
+    #keys: '3[414384.0.816631062][414384.0.816631061][414384.0.816631063]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
new file mode 100644
index 0000000..f900aee
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudge
+{
+  #keys: '1[414384.0.810464642]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414384.0.810464644][414384.0.810464643][414384.0.810464645]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudge
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudge
+  {
+    #keys: '3[414384.0.810464647][414384.0.810464646][414384.0.810464648]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ERPRequestOfPR_PRHistoryData_PRHistoryData_ERPRequestOfPR.qbl b/_Main/BL/Relations/Relation_ERPRequestOfPR_PRHistoryData_PRHistoryData_ERPRequestOfPR.qbl
new file mode 100644
index 0000000..a08b50e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ERPRequestOfPR_PRHistoryData_PRHistoryData_ERPRequestOfPR.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ERPRequestOfPR_PRHistoryData_PRHistoryData_ERPRequestOfPR
+{
+  #keys: '1[414384.0.795671693]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PRHistoryData
+  {
+    #keys: '3[414384.0.795671695][414384.0.795671694][414384.0.795671696]'
+    Cardinality: '0to1'
+    ObjectDefinition: ERPRequestOfPR
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ERPRequestOfPR
+  {
+    #keys: '3[414384.0.795671698][414384.0.795671697][414384.0.795671699]'
+    Cardinality: '0to1'
+    ObjectDefinition: PRHistoryData
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ERPResponseOfPR_ERPRequestOfPR_ERPRequestOfPR_ERPResponseOfPR.qbl b/_Main/BL/Relations/Relation_ERPResponseOfPR_ERPRequestOfPR_ERPRequestOfPR_ERPResponseOfPR.qbl
new file mode 100644
index 0000000..b8c4fe6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ERPResponseOfPR_ERPRequestOfPR_ERPRequestOfPR_ERPResponseOfPR.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ERPResponseOfPR_ERPRequestOfPR_ERPRequestOfPR_ERPResponseOfPR
+{
+  #keys: '1[414384.0.789498681]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ERPRequestOfPR
+  {
+    #keys: '3[414384.0.789498683][414384.0.789498682][414384.0.789498684]'
+    Cardinality: '0to1'
+    ObjectDefinition: ERPResponseOfPR
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ERPResponseOfPR
+  {
+    #keys: '3[414384.0.789498686][414384.0.789498685][414384.0.789498687]'
+    Cardinality: '0to1'
+    ObjectDefinition: ERPRequestOfPR
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl b/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..764e791
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_AuthorizeRealQty_MacroPlan_MacroPlan_H_AuthorizeRealQty
+{
+  #keys: '1[414724.0.46380468]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380470][414724.0.46380469][414724.0.46380471]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_AuthorizeRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_AuthorizeRealQty
+  {
+    #keys: '3[414724.0.46380473][414724.0.46380472][414724.0.46380474]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl b/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl
new file mode 100644
index 0000000..7aced6d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ErrorLogs_MacroPlan_MacroPlan_H_ErrorLogs
+{
+  #keys: '1[414724.0.54835743]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.54835745][414724.0.54835744][414724.0.54835746]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ErrorLogs
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ErrorLogs
+  {
+    #keys: '3[414724.0.54835748][414724.0.54835747][414724.0.54835749]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl b/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl
new file mode 100644
index 0000000..8882961
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_Forecast_MacroPlan_MacroPlan_H_Forecast.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_Forecast_MacroPlan_MacroPlan_H_Forecast
+{
+  #keys: '1[414724.0.87401001]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87401003][414724.0.87401002][414724.0.87401004]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_Forecast
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_Forecast
+  {
+    #keys: '3[414724.0.87401006][414724.0.87401005][414724.0.87401007]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl b/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl
new file mode 100644
index 0000000..4dd0d52
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_FunctionClass_MacroPlan_MacroPlan_H_FunctionClass
+{
+  #keys: '1[414724.0.53669732]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.53669734][414724.0.53669733][414724.0.53669735]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_FunctionClass
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_FunctionClass
+  {
+    #keys: '3[414724.0.53669737][414724.0.53669736][414724.0.53669738]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl b/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl
new file mode 100644
index 0000000..681b3dc
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_HedgingRecord_MacroPlan_MacroPlan_H_HedgingRecord
+{
+  #keys: '1[414724.0.26781388]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26781390][414724.0.26781389][414724.0.26781391]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_HedgingRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_HedgingRecord
+  {
+    #keys: '3[414724.0.26781393][414724.0.26781392][414724.0.26781394]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl
new file mode 100644
index 0000000..d59bbd0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurcha.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_H_HedgingRecord_H_HedgingRecord_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26811012]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_HedgingRecord
+  {
+    #keys: '3[414724.0.26811014][414724.0.26811013][414724.0.26811015]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26811017][414724.0.26811016][414724.0.26811018]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_HedgingRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl
new file mode 100644
index 0000000..40c4c4b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurcha.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_H_ReleaseRecord_H_ReleaseRecord_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26810992]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_ReleaseRecord
+  {
+    #keys: '3[414724.0.26810994][414724.0.26810993][414724.0.26810995]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26810997][414724.0.26810996][414724.0.26810998]'
+    Cardinality: '1toN'
+    ObjectDefinition: H_ReleaseRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl b/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl
new file mode 100644
index 0000000..09f8641
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialPurchase_MacroPlan_MacroPlan_H_MaterialPurchase
+{
+  #keys: '1[414724.0.26811046]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26811048][414724.0.26811047][414724.0.26811049]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialPurchase
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialPurchase
+  {
+    #keys: '3[414724.0.26811051][414724.0.26811050][414724.0.26811052]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl b/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl
new file mode 100644
index 0000000..0ff2a6b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialRealQty_MacroPlan_MacroPlan_H_MaterialRealQty
+{
+  #keys: '1[414724.0.87400875]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87400877][414724.0.87400876][414724.0.87400878]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialRealQty
+  {
+    #keys: '3[414724.0.87400880][414724.0.87400879][414724.0.87400881]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl b/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl
new file mode 100644
index 0000000..af4b2bd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MessagePassing_MacroPlan_MacroPlan_H_MessagePassing
+{
+  #keys: '1[414724.0.87274652]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.87274654][414724.0.87274653][414724.0.87274655]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MessagePassing
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MessagePassing
+  {
+    #keys: '3[414724.0.87274657][414724.0.87274656][414724.0.87274658]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl b/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl
new file mode 100644
index 0000000..c82c771
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_OrderForecastRealQty_MacroPlan_MacroPlan_H_OrderForecastRealQty
+{
+  #keys: '1[414724.0.46380281]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380283][414724.0.46380282][414724.0.46380284]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_OrderForecastRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_OrderForecastRealQty
+  {
+    #keys: '3[414724.0.46380286][414724.0.46380285][414724.0.46380287]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl b/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl
new file mode 100644
index 0000000..a6a7ebb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_OrderRecord_MacroPlan_MacroPlan_H_OrderRecord
+{
+  #keys: '1[414724.0.46380068]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380070][414724.0.46380069][414724.0.46380071]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_OrderRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_OrderRecord
+  {
+    #keys: '3[414724.0.46380073][414724.0.46380072][414724.0.46380074]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl b/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl
new file mode 100644
index 0000000..e907aa6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ReleaseRecord_MacroPlan_MacroPlan_H_ReleaseRecord
+{
+  #keys: '1[414724.0.26810912]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.26810914][414724.0.26810913][414724.0.26810915]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ReleaseRecord
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ReleaseRecord
+  {
+    #keys: '3[414724.0.26810917][414724.0.26810916][414724.0.26810918]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl b/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl
new file mode 100644
index 0000000..ca792d1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_ReverseRealQty_MacroPlan_MacroPlan_H_ReverseRealQty
+{
+  #keys: '1[414724.0.46380395]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.46380397][414724.0.46380396][414724.0.46380398]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_ReverseRealQty
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_ReverseRealQty
+  {
+    #keys: '3[414724.0.46380400][414724.0.46380399][414724.0.46380401]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl b/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl
new file mode 100644
index 0000000..cf06d1f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_TestMap_H_OrderRecord_H_OrderRecord_H_TestMap
+{
+  #keys: '1[414724.0.96595934]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide H_OrderRecord
+  {
+    #keys: '3[414724.0.96595936][414724.0.96595935][414724.0.96595937]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_TestMap
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_TestMap
+  {
+    #keys: '3[414724.0.96595939][414724.0.96595938][414724.0.96595940]'
+    Cardinality: '1toN'
+    ObjectDefinition: H_OrderRecord
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl b/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl
new file mode 100644
index 0000000..8029c04
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_TestMap_MacroPlan_MacroPlan_H_TestMap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_TestMap_MacroPlan_MacroPlan_H_TestMap
+{
+  #keys: '1[414724.0.96595895]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.96595897][414724.0.96595896][414724.0.96595898]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_TestMap
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_TestMap
+  {
+    #keys: '3[414724.0.96595900][414724.0.96595899][414724.0.96595901]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl b/_Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl
new file mode 100644
index 0000000..37b5f68
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBudge
+{
+  #keys: '1[414384.0.803580112]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MPSync
+  {
+    #keys: '3[414384.0.803580114][414384.0.803580113][414384.0.803580115]'
+    Cardinality: '0to1'
+    ObjectDefinition: MappingCapacityAndSaleBudge
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide MappingCapacityAndSaleBudge
+  {
+    #keys: '3[414384.0.803580117][414384.0.803580116][414384.0.803580118]'
+    Cardinality: '1toN'
+    ObjectDefinition: MPSync
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PRData_MacroPlan_MacroPlan_PRData.qbl b/_Main/BL/Relations/Relation_PRData_MacroPlan_MacroPlan_PRData.qbl
new file mode 100644
index 0000000..edbf9d7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PRData_MacroPlan_MacroPlan_PRData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PRData_MacroPlan_MacroPlan_PRData
+{
+  #keys: '1[414384.0.796031632]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414384.0.796031634][414384.0.796031633][414384.0.796031635]'
+    Cardinality: '0to1'
+    ObjectDefinition: PRData
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PRData
+  {
+    #keys: '3[414384.0.796031637][414384.0.796031636][414384.0.796031638]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl b/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl
new file mode 100644
index 0000000..f5e24f8
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData
+{
+  #keys: '1[414384.0.789498541]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414384.0.789498543][414384.0.789498542][414384.0.789498544]'
+    Cardinality: '0to1'
+    ObjectDefinition: PRHistoryData
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PRHistoryData
+  {
+    #keys: '3[414384.0.789498546][414384.0.789498545][414384.0.789498547]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PriorityFactorDetails_GlobalOTDTable_GlobalOTDTable_PriorityFactorD.qbl b/_Main/BL/Relations/Relation_PriorityFactorDetails_GlobalOTDTable_GlobalOTDTable_PriorityFactorD.qbl
new file mode 100644
index 0000000..81e03b6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PriorityFactorDetails_GlobalOTDTable_GlobalOTDTable_PriorityFactorD.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PriorityFactorDetails_GlobalOTDTable_GlobalOTDTable_PriorityFactorDetails
+{
+  #keys: '1[414382.0.444830151]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414382.0.444830153][414382.0.444830152][414382.0.444830154]'
+    Cardinality: '0to1'
+    ObjectDefinition: PriorityFactorDetails
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PriorityFactorDetails
+  {
+    #keys: '3[414382.0.444830156][414382.0.444830155][414382.0.444830157]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PriorityFactorDetails_PriorityFactor_PriorityFactor_PriorityFactorD.qbl b/_Main/BL/Relations/Relation_PriorityFactorDetails_PriorityFactor_PriorityFactor_PriorityFactorD.qbl
new file mode 100644
index 0000000..ded778d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PriorityFactorDetails_PriorityFactor_PriorityFactor_PriorityFactorD.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PriorityFactorDetails_PriorityFactor_PriorityFactor_PriorityFactorDetails
+{
+  #keys: '1[414382.0.444850082]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide PriorityFactor
+  {
+    #keys: '3[414382.0.444850084][414382.0.444850083][414382.0.444850085]'
+    Cardinality: '0to1'
+    ObjectDefinition: PriorityFactorDetails
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PriorityFactorDetails
+  {
+    #keys: '3[414382.0.444850087][414382.0.444850086][414382.0.444850088]'
+    Cardinality: '1toN'
+    ObjectDefinition: PriorityFactor
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PriorityFactor_GlobalOTDTable_GlobalOTDTable_PriorityFactor.qbl b/_Main/BL/Relations/Relation_PriorityFactor_GlobalOTDTable_GlobalOTDTable_PriorityFactor.qbl
new file mode 100644
index 0000000..14911e1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PriorityFactor_GlobalOTDTable_GlobalOTDTable_PriorityFactor.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PriorityFactor_GlobalOTDTable_GlobalOTDTable_PriorityFactor
+{
+  #keys: '1[414382.0.444830037]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDTable
+  {
+    #keys: '3[414382.0.444830039][414382.0.444830038][414382.0.444830040]'
+    Cardinality: '0to1'
+    ObjectDefinition: PriorityFactor
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PriorityFactor
+  {
+    #keys: '3[414382.0.444830042][414382.0.444830041][414382.0.444830043]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDTable
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl b/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl
new file mode 100644
index 0000000..88e07e5
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem
+{
+  #keys: '1[414384.0.803544596]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SaleBudget
+  {
+    #keys: '3[414384.0.803544598][414384.0.803544597][414384.0.803544599]'
+    Cardinality: '0to1'
+    ObjectDefinition: SaleBudgetItem
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SaleBudgetItem
+  {
+    #keys: '3[414384.0.803544601][414384.0.803544600][414384.0.803544602]'
+    Cardinality: '1toN'
+    ObjectDefinition: SaleBudget
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl b/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl
new file mode 100644
index 0000000..f9e8261
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SaleBudget_MacroPlan_MacroPlan_SaleBudget
+{
+  #keys: '1[414384.0.803544612]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414384.0.803544614][414384.0.803544613][414384.0.803544615]'
+    Cardinality: '0to1'
+    ObjectDefinition: SaleBudget
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SaleBudget
+  {
+    #keys: '3[414384.0.803544617][414384.0.803544616][414384.0.803544618]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl b/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
index 02ecd32..eb62f70 100644
--- a/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
+++ b/_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
@@ -23,6 +23,10 @@
     {
         result := businessTypeList.Concatenate( ";" );
     }
+    
+    // 娴嬭瘯鏁版嵁
+    result := "闆嗗洟闈㈡澘;涓撲笟鏄剧ず浜嬩笟閮�;澶栧崠CELL;闈炴樉;杩愬姩鍋ュ悍;杩愬姩鍋ュ悍浜嬩笟閮�;鎵嬫満浜嬩笟閮�;鐗圭鏄剧ず;姹借溅鐢靛瓙浜嬩笟閮�;杞﹁浇鏄剧ず浜嬩笟閮�;IT浜嬩笟閮�";
+    
     return result;
   *]
 }
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..63bb032
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.810464687][414384.0.810464686][414384.0.810464688]'
+  Description: '涓氬姟绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl
new file mode 100644
index 0000000..119a291
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityEquivalent
+{
+  #keys: '3[414384.0.810464711][414384.0.810464710][414384.0.810464712]'
+  Description: '浜ц兘褰撻噺'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
new file mode 100644
index 0000000..c8e3695
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth1
+{
+  #keys: '3[414384.0.810464717][414384.0.810464716][414384.0.810464718]'
+  Description: '1鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
new file mode 100644
index 0000000..62d88ee
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth10
+{
+  #keys: '3[414384.0.810464744][414384.0.810464743][414384.0.810464745]'
+  Description: '10鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
new file mode 100644
index 0000000..ea88f28
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth11
+{
+  #keys: '3[414384.0.810464747][414384.0.810464746][414384.0.810464748]'
+  Description: '11鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
new file mode 100644
index 0000000..6e299ff
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth12
+{
+  #keys: '3[414384.0.810464750][414384.0.810464749][414384.0.810464751]'
+  Description: '12鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
new file mode 100644
index 0000000..650954b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth2
+{
+  #keys: '3[414384.0.810464720][414384.0.810464719][414384.0.810464721]'
+  Description: '2鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
new file mode 100644
index 0000000..be704be
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth3
+{
+  #keys: '3[414384.0.810464723][414384.0.810464722][414384.0.810464724]'
+  Description: '3鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
new file mode 100644
index 0000000..2f36f6d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth4
+{
+  #keys: '3[414384.0.810464726][414384.0.810464725][414384.0.810464727]'
+  Description: '4鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
new file mode 100644
index 0000000..1839d8f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth5
+{
+  #keys: '3[414384.0.810464729][414384.0.810464728][414384.0.810464730]'
+  Description: '5鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
new file mode 100644
index 0000000..a6f3dd4
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth6
+{
+  #keys: '3[414384.0.810464732][414384.0.810464731][414384.0.810464733]'
+  Description: '6鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
new file mode 100644
index 0000000..44b13ba
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth7
+{
+  #keys: '3[414384.0.810464735][414384.0.810464734][414384.0.810464736]'
+  Description: '7鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
new file mode 100644
index 0000000..2f1152c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth8
+{
+  #keys: '3[414384.0.810464738][414384.0.810464737][414384.0.810464739]'
+  Description: '8鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
new file mode 100644
index 0000000..5eb6d08
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInMonth9
+{
+  #keys: '3[414384.0.810464741][414384.0.810464740][414384.0.810464742]'
+  Description: '9鏈堜骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl
new file mode 100644
index 0000000..c299a64
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSTotal
+{
+  #keys: '3[414384.0.810464866][414384.0.810464865][414384.0.810464867]'
+  Description: '骞翠骇鑳斤紙PCS锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
new file mode 100644
index 0000000..92e048b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth1
+{
+  #keys: '3[414384.0.810464753][414384.0.810464752][414384.0.810464754]'
+  Description: '1鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
new file mode 100644
index 0000000..b3cf0ce
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth10
+{
+  #keys: '3[414384.0.810464780][414384.0.810464779][414384.0.810464781]'
+  Description: '10鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
new file mode 100644
index 0000000..2c3252d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth11
+{
+  #keys: '3[414384.0.810464783][414384.0.810464782][414384.0.810464784]'
+  Description: '11鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
new file mode 100644
index 0000000..fbfb32a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth12
+{
+  #keys: '3[414384.0.810464786][414384.0.810464785][414384.0.810464787]'
+  Description: '12鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
new file mode 100644
index 0000000..b4caec2
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth2
+{
+  #keys: '3[414384.0.810464756][414384.0.810464755][414384.0.810464757]'
+  Description: '2鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
new file mode 100644
index 0000000..c2b8d77
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth3
+{
+  #keys: '3[414384.0.810464759][414384.0.810464758][414384.0.810464760]'
+  Description: '3鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
new file mode 100644
index 0000000..40591a6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth4
+{
+  #keys: '3[414384.0.810464762][414384.0.810464761][414384.0.810464763]'
+  Description: '4鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
new file mode 100644
index 0000000..2910ff3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth5
+{
+  #keys: '3[414384.0.810464765][414384.0.810464764][414384.0.810464766]'
+  Description: '5鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
new file mode 100644
index 0000000..350f3f0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth6
+{
+  #keys: '3[414384.0.810464768][414384.0.810464767][414384.0.810464769]'
+  Description: '6鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
new file mode 100644
index 0000000..efe11d8
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth7
+{
+  #keys: '3[414384.0.810464771][414384.0.810464770][414384.0.810464772]'
+  Description: '7鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
new file mode 100644
index 0000000..2deff94
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth8
+{
+  #keys: '3[414384.0.810464774][414384.0.810464773][414384.0.810464775]'
+  Description: '8鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
new file mode 100644
index 0000000..1da1c48
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInMonth9
+{
+  #keys: '3[414384.0.810464777][414384.0.810464776][414384.0.810464778]'
+  Description: '9鏈堜骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl
new file mode 100644
index 0000000..fd6f847
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetTotal
+{
+  #keys: '3[414384.0.810464850][414384.0.810464849][414384.0.810464851]'
+  Description: '骞翠骇鑳斤紙Sheet锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl
new file mode 100644
index 0000000..f3217fc
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Deleted
+{
+  #keys: '3[414384.0.810464681][414384.0.810464680][414384.0.810464682]'
+  Description: '宸插垹闄�'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl
new file mode 100644
index 0000000..ed65a10
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DisplayTechnology
+{
+  #keys: '3[414384.0.810464684][414384.0.810464683][414384.0.810464685]'
+  Description: '鏄剧ず鎶�鏈垎绫�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl
new file mode 100644
index 0000000..cfd9d06
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAndSpec
+{
+  #keys: '3[414384.0.810464690][414384.0.810464689][414384.0.810464691]'
+  Description: '浜у搧绾�/浜у搧瑙勬牸'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl
new file mode 100644
index 0000000..67da312
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfCut
+{
+  #keys: '3[414384.0.810464708][414384.0.810464707][414384.0.810464709]'
+  Description: '鍒囧壊鏁�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl
new file mode 100644
index 0000000..c7fcdef
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfMask
+{
+  #keys: '3[414384.0.810464714][414384.0.810464713][414384.0.810464715]'
+  Description: 'mask鏁�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..38f5383
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414384.0.810464668][414384.0.810464667][414384.0.810464669]'
+  Description: '涓氬姟閮ㄩ棬'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
new file mode 100644
index 0000000..eb76c2b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfArray
+{
+  #keys: '3[414384.0.810464696][414384.0.810464695][414384.0.810464697]'
+  Description: 'Array浜у湴锛堥潰鏉垮熀鍦帮級'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
new file mode 100644
index 0000000..077836e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlaceOfProductionOfEvaporation
+{
+  #keys: '3[414384.0.810464699][414384.0.810464698][414384.0.810464700]'
+  Description: '钂搁晙浜у湴'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..65504ec
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.810464693][414384.0.810464692][414384.0.810464694]'
+  Description: '浜у搧鏂欏彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl
new file mode 100644
index 0000000..24dc3a6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Resolution
+{
+  #keys: '3[414384.0.810464702][414384.0.810464701][414384.0.810464703]'
+  Description: '鍒嗚鲸鐜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl
new file mode 100644
index 0000000..8095702
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth1
+{
+  #keys: '3[414384.0.810464789][414384.0.810464788][414384.0.810464790]'
+  Description: '1鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl
new file mode 100644
index 0000000..061f898
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth10
+{
+  #keys: '3[414384.0.810464816][414384.0.810464815][414384.0.810464817]'
+  Description: '10鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl
new file mode 100644
index 0000000..e5b0339
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth11
+{
+  #keys: '3[414384.0.810464819][414384.0.810464818][414384.0.810464820]'
+  Description: '11鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl
new file mode 100644
index 0000000..1891382
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth12
+{
+  #keys: '3[414384.0.810464822][414384.0.810464821][414384.0.810464823]'
+  Description: '12鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl
new file mode 100644
index 0000000..9affb8b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth2
+{
+  #keys: '3[414384.0.810464792][414384.0.810464791][414384.0.810464793]'
+  Description: '2鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl
new file mode 100644
index 0000000..73de89c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth3
+{
+  #keys: '3[414384.0.810464795][414384.0.810464794][414384.0.810464796]'
+  Description: '3鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl
new file mode 100644
index 0000000..2c0a7b3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth4
+{
+  #keys: '3[414384.0.810464798][414384.0.810464797][414384.0.810464799]'
+  Description: '4鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl
new file mode 100644
index 0000000..cd253f3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth5
+{
+  #keys: '3[414384.0.810464801][414384.0.810464800][414384.0.810464802]'
+  Description: '5鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl
new file mode 100644
index 0000000..47c19c1
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth6
+{
+  #keys: '3[414384.0.810464804][414384.0.810464803][414384.0.810464805]'
+  Description: '6鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl
new file mode 100644
index 0000000..b10a2cb
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth7
+{
+  #keys: '3[414384.0.810464807][414384.0.810464806][414384.0.810464808]'
+  Description: '7鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl
new file mode 100644
index 0000000..12afc72
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth8
+{
+  #keys: '3[414384.0.810464810][414384.0.810464809][414384.0.810464811]'
+  Description: '8鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl
new file mode 100644
index 0000000..7359c75
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountInMonth9
+{
+  #keys: '3[414384.0.810464813][414384.0.810464812][414384.0.810464814]'
+  Description: '9鏈堥攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl
new file mode 100644
index 0000000..c01058f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaleAmountTotal
+{
+  #keys: '3[414384.0.810464840][414384.0.810464839][414384.0.810464841]'
+  Description: '骞撮攢鍞锛堜竾锛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl
new file mode 100644
index 0000000..7a1c0ff
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShippingForm
+{
+  #keys: '3[414384.0.810464705][414384.0.810464704][414384.0.810464706]'
+  Description: '鍑鸿揣褰㈡��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
new file mode 100644
index 0000000..19c5d54
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudge
+{
+  #keys: '5[414384.0.810464639][414384.0.810464637][0.0.0][414384.0.810464638][414384.0.810464640]'
+  BaseType: Object
+  Description: '浜ч攢棰勭畻'
+  StructuredName: 'CapacityAndSaleBudges'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl
new file mode 100644
index 0000000..a94ab5d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CellContent
+{
+  #keys: '3[414384.0.819696550][414384.0.819696549][414384.0.819696551]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl
new file mode 100644
index 0000000..adcfec6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '5[414384.0.816630948][414384.0.816630946][0.0.0][414384.0.816630947][414384.0.816630949]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemCells'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl
new file mode 100644
index 0000000..4a7e7fe
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnName
+{
+  #keys: '3[414384.0.816630975][414384.0.816630974][414384.0.816630976]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..1e42b21
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager manager,
+  String columnName
+) as CapacityAndSaleBudgeCompareItemColumn
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( manager, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
+    if( isnull( value ) ) {
+      value := manager.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );  
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl
new file mode 100644
index 0000000..5a16ed0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemColumn
+{
+  #keys: '5[414384.0.816630971][414384.0.816630969][0.0.0][414384.0.816630970][414384.0.816630972]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemColumns'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..cd7c424
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.819696515][414384.0.819696514][414384.0.819696516]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..3329fb9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414384.0.822962978][414384.0.822962977][414384.0.822962979]'
+  Description: '缁勭粐缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
new file mode 100644
index 0000000..296ffa6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowName
+{
+  #keys: '3[414384.0.816630960][414384.0.816630959][414384.0.816630961]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..8d6c215
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager scenarioManager,
+  String businessType,
+  String orgCode
+) as CapacityAndSaleBudgeCompareItemRow
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.OrgCode() = orgCode );
+    if( isnull( value ) ) {
+      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, OrgCode := orgCode );  
+    } 
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl
new file mode 100644
index 0000000..b73e2b9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemRow
+{
+  #keys: '5[414384.0.816630956][414384.0.816630954][0.0.0][414384.0.816630955][414384.0.816630957]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemRows'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..9392fdc
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.819696604][414384.0.819696603][414384.0.819696605]'
+  Description: '浜у搧缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..aae08c5
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  CapacityAndSaleBudgeCompareItemRow parent,
+  String productCode
+) as CapacityAndSaleBudgeCompareItemRowProduct
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( parent, CapacityAndSaleBudgeCompareItemRowProduct, item, item.ProductCode() = productCode );
+    if( isnull( value ) ) {
+      parent.CapacityAndSaleBudgeCompareItemRowProduct( relnew, ProductCode := productCode );
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl
new file mode 100644
index 0000000..e8ad3fa
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemRowProduct
+{
+  #keys: '5[414384.0.819696584][414384.0.819696582][0.0.0][414384.0.819696583][414384.0.819696585]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemRowProducts'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl
new file mode 100644
index 0000000..1487ed7
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ItemName
+{
+  #keys: '3[414384.0.810464940][414384.0.810464939][414384.0.810464941]'
+  Description: '瀵规瘮椤瑰悕绉�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl
new file mode 100644
index 0000000..7d9a8aa
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Contains (
+  CapacityAndSaleBudgeFilterItems list,
+  String item
+) as Boolean
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    return not isnull( select( list, Elements, one, one.ItemName() = item ) );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..02b6d70
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager parent,
+  String itemName
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    old := select( parent, CapacityAndSaleBudgeFilterItem, item, item.ItemName() = itemName );
+    if( isnull( old ) ) {
+      parent.CapacityAndSaleBudgeFilterItem( relnew, 
+                                             ItemName := itemName );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..1e15a86
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栧姣旈」'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    CapacityAndSaleBudgeFilterItem::CreateIfNotExist( parent, "闈㈡澘鍒嗛厤閲�" );
+    CapacityAndSaleBudgeFilterItem::CreateIfNotExist( parent, "閿�鍞" );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl
new file mode 100644
index 0000000..837786c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterItem
+{
+  #keys: '5[414384.0.810500195][414384.0.810500193][0.0.0][414384.0.810500194][414384.0.810500196]'
+  BaseType: Object
+  Description: '瀵规瘮椤�'
+  StructuredName: 'CapacityAndSaleBudgeFilterItems'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl
new file mode 100644
index 0000000..cfe9222
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MonthNo
+{
+  #keys: '3[414384.0.810464902][414384.0.810464901][414384.0.810464903]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..a977b0a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栨湀浠�'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
+    for( i := 1; i <= 12; i++ ) {
+      if( existList.Find( i ) = -1 ) {
+        parent.CapacityAndSaleBudgeFilterMonth( relnew, 
+                                                MonthNo := i );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl
new file mode 100644
index 0000000..697862e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterMonth
+{
+  #keys: '5[414384.0.810500205][414384.0.810500203][0.0.0][414384.0.810500204][414384.0.810500206]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeFilterMonths'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl
new file mode 100644
index 0000000..ee59dbf
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute YearNo
+{
+  #keys: '3[414384.0.810464920][414384.0.810464919][414384.0.810464921]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..c0ddc68
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栧勾浠�'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
+    nowYear := Date::Today().Year();
+    for( i := nowYear; i <= nowYear + 10; i++ ) {
+      if( existList.Find( i ) = -1 ) {
+        parent.CapacityAndSaleBudgeFilterYear( relnew, 
+                                               YearNo := i );
+      }  
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl
new file mode 100644
index 0000000..2d3bc34
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterYear
+{
+  #keys: '5[414384.0.810500200][414384.0.810500198][0.0.0][414384.0.810500199][414384.0.810500201]'
+  BaseType: Object
+  Description: '瀵规瘮骞翠唤'
+  StructuredName: 'CapacityAndSaleBudgeFilterYears'
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl
new file mode 100644
index 0000000..daaa7c4
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_AuthorizeQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeQty
+{
+  #keys: '3[414724.0.26810845][414724.0.26810844][414724.0.26810846]'
+  Description: '鎺堟潈鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl
new file mode 100644
index 0000000..e06118e
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_CustomerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerCode
+{
+  #keys: '3[414724.0.26810895][414724.0.26810894][414724.0.26810896]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..0f7b94f
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.26810822][414724.0.26810821][414724.0.26810823]'
+  Description: '褰撴湀棰勬祴鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..e7efb6d
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26781405][414724.0.26781404][414724.0.26781406]'
+  Description: 'KEY'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl
new file mode 100644
index 0000000..bed9ebe
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateQty
+{
+  #keys: '3[414724.0.26810885][414724.0.26810884][414724.0.26810886]'
+  Description: '鎿嶄綔鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl
new file mode 100644
index 0000000..2d14ed5
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateTime
+{
+  #keys: '3[414724.0.26810875][414724.0.26810874][414724.0.26810876]'
+  Description: '鎿嶄綔鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl
new file mode 100644
index 0000000..51587f6
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_OperateType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateType
+{
+  #keys: '3[414724.0.26810855][414724.0.26810854][414724.0.26810856]'
+  Description: '鎿嶄綔绫诲瀷: 鎺堟潈銆佸弽绛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl
new file mode 100644
index 0000000..adb6450
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_Operator.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Operator
+{
+  #keys: '3[414724.0.26810865][414724.0.26810864][414724.0.26810866]'
+  Description: '鎿嶄綔浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl
new file mode 100644
index 0000000..4f5eb16
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_ReverseQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseQty
+{
+  #keys: '3[414724.0.26810832][414724.0.26810831][414724.0.26810833]'
+  Description: '鍙嶇鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl
new file mode 100644
index 0000000..8087bf8
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.26810809][414724.0.26810808][414724.0.26810810]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..518029b
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26781415][414724.0.26781414][414724.0.26781416]'
+  Description: '搴忓彿锛屼笉涓�瀹氫娇鐢�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl b/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..75e9790
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26810799][414724.0.26810798][414724.0.26810800]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl b/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl
new file mode 100644
index 0000000..79f9e34
--- /dev/null
+++ b/_Main/BL/Type_DS_HedgingRecord/_ROOT_Type_H_HedgingRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_HedgingRecord
+{
+  #keys: '5[414724.0.26781385][414724.0.26781383][0.0.0][414724.0.26781384][414724.0.26781386]'
+  BaseType: Object
+  Description: '鍐插噺璁板綍'
+  StructuredName: 'H_HedgingRecords'
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_BusinessType.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..725bf18
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.795671721][414384.0.795671720][414384.0.795671722]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_DataID.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_DataID.qbl
new file mode 100644
index 0000000..b65a474
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_DataID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DataID
+{
+  #keys: '3[414384.0.795671715][414384.0.795671714][414384.0.795671716]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_DeliveryDate.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_DeliveryDate.qbl
new file mode 100644
index 0000000..eebe4cb
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_DeliveryDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DeliveryDate
+{
+  #keys: '3[414384.0.796031591][414384.0.796031590][414384.0.796031592]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_MRPCalverNo.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_MRPCalverNo.qbl
new file mode 100644
index 0000000..1c4a6e5
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_MRPCalverNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MRPCalverNo
+{
+  #keys: '3[414384.0.795671718][414384.0.795671717][414384.0.795671719]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_OrganCode.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..786259e
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_OrganCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+  #keys: '3[414384.0.795671724][414384.0.795671723][414384.0.795671725]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductID.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ee74e2d
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414384.0.795671727][414384.0.795671726][414384.0.795671728]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductName.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductName.qbl
new file mode 100644
index 0000000..1b0cc8f
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProductName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductName
+{
+  #keys: '3[414384.0.795671730][414384.0.795671729][414384.0.795671731]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderCode.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderCode.qbl
new file mode 100644
index 0000000..765dd3a
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderCode
+{
+  #keys: '3[414384.0.795671733][414384.0.795671732][414384.0.795671734]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderName.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderName.qbl
new file mode 100644
index 0000000..cd62538
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_ProviderName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderName
+{
+  #keys: '3[414384.0.795671736][414384.0.795671735][414384.0.795671737]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_Quantity.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_Quantity.qbl
new file mode 100644
index 0000000..a4f8814
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414384.0.795671742][414384.0.795671741][414384.0.795671743]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_StockingPointID.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..3ccfd33
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414384.0.795671745][414384.0.795671744][414384.0.795671746]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Attribute_UnitOfMeasure.qbl b/_Main/BL/Type_ERPRequestOfPR/Attribute_UnitOfMeasure.qbl
new file mode 100644
index 0000000..bd5f6d8
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Attribute_UnitOfMeasure.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasure
+{
+  #keys: '3[414384.0.795671748][414384.0.795671747][414384.0.795671749]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/Method_DoCall.qbl b/_Main/BL/Type_ERPRequestOfPR/Method_DoCall.qbl
new file mode 100644
index 0000000..516cb90
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/Method_DoCall.qbl
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+#parent: #root
+Method DoCall () as ERPResponseOfPR
+{
+  TextBody:
+  [*
+    // yypsybs Sep-11-2023 (created)
+    conv := DateTimeToString::StandardConverter();
+    conv.SetCustomConversion();
+    conv.CustomFormatString( 'yyyyMMdd' );
+    
+    requestJSON := JSON::Object();
+    requestJSON.Add( "BusinessType", this.BusinessType() );
+    requestJSON.Add( "DataID", this.DataID() );
+    requestJSON.Add( "DeliveryDate", conv.Convert( this.DeliveryDate().DateTime() ) );
+    requestJSON.Add( "MRPCalverNo", this.MRPCalverNo() );
+    requestJSON.Add( "OrganCode", this.OrganCode() );
+    requestJSON.Add( "ProductID", this.ProductID() );
+    requestJSON.Add( "ProductName", this.ProductName() );
+    requestJSON.Add( "ProvideCode", this.ProviderCode() );
+    requestJSON.Add( "ProviderName", this.ProviderName() );
+    requestJSON.Add( "Quantity", this.Quantity() );
+    requestJSON.Add( "StockingPointID", this.StockingPointID() );
+    requestJSON.Add( "UnitOfMeasure", this.UnitOfMeasure() );
+    
+    requestString := requestJSON.AsString();
+    
+    // 鏋勯�爃ttp璇锋眰 todo
+    httpInterface := HTTPInterface::Create( "127.0.0.1", 443 );
+    httpInterface.URL( "/url" );
+    httpInterface.PostMethod( true );
+    httpInterface.AddHeader( "content-type", "application/json" );
+    
+    // 鍙戦�佽姹�
+    result := null( ERPResponseOfPR );
+    try {
+      httpInterface.Call( requestString );
+      responseString := httpInterface.Result();
+      
+      responseJSON := JSON::Parse( responseString );
+      dataID := responseJSON.Get( "DataID" ).GetString();
+      status := responseJSON.Get( "Status" ).GetString();
+      errorDescription := responseJSON.Get( "ErrorDescription" ).GetString();
+      
+      result := this.ERPResponseOfPR( relnew, 
+                                      DataID := dataID,
+                                      Status := status, 
+                                      ErrorDescription := errorDescription );
+    } onerror {
+      result := this.ERPResponseOfPR( relnew, 
+                                      DataID := this.DataID(),
+                                      Status := "E", 
+                                      ErrorDescription := e.GeneralInformation() );
+    }
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/StaticMethod_Create.qbl b/_Main/BL/Type_ERPRequestOfPR/StaticMethod_Create.qbl
new file mode 100644
index 0000000..1c4c527
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/StaticMethod_Create.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+  PRHistoryData history
+) as ERPRequestOfPR
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    request := history.ERPRequestOfPR( relnew );
+    
+    request.BusinessType( history.BusinessType() );
+    request.DataID( history.DataID() );
+    request.DeliveryDate( history.ProduceRequiredDate() );
+    request.MRPCalverNo( history.MRPCalverNo() );
+    request.OrganCode( history.OrganCode() );
+    request.ProductID( history.ProductID() );
+    request.ProductName( history.ProductName() );
+    request.ProviderCode( history.ProviderCode() );
+    request.ProviderName( history.ProviderName() );
+    request.Quantity( history.Quantity() );
+    request.StockingPointID( history.StockingPointID() );
+    request.UnitOfMeasure( history.UnitOfMeasure() );
+    
+    return request;
+  *]
+}
diff --git a/_Main/BL/Type_ERPRequestOfPR/_ROOT_Type_ERPRequestOfPR.qbl b/_Main/BL/Type_ERPRequestOfPR/_ROOT_Type_ERPRequestOfPR.qbl
new file mode 100644
index 0000000..870620e
--- /dev/null
+++ b/_Main/BL/Type_ERPRequestOfPR/_ROOT_Type_ERPRequestOfPR.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ERPRequestOfPR
+{
+  #keys: '5[414384.0.789498661][414384.0.789498659][0.0.0][414384.0.789498660][414384.0.789498662]'
+  BaseType: Object
+  StructuredName: 'ERPRequestOfPRs'
+}
diff --git a/_Main/BL/Type_ERPResponseOfPR/Attribute_DataID.qbl b/_Main/BL/Type_ERPResponseOfPR/Attribute_DataID.qbl
new file mode 100644
index 0000000..59d1d13
--- /dev/null
+++ b/_Main/BL/Type_ERPResponseOfPR/Attribute_DataID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DataID
+{
+  #keys: '3[414384.0.789526160][414384.0.789526159][414384.0.789526161]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPResponseOfPR/Attribute_ErrorDescription.qbl b/_Main/BL/Type_ERPResponseOfPR/Attribute_ErrorDescription.qbl
new file mode 100644
index 0000000..467cf81
--- /dev/null
+++ b/_Main/BL/Type_ERPResponseOfPR/Attribute_ErrorDescription.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorDescription
+{
+  #keys: '3[414384.0.789526180][414384.0.789526179][414384.0.789526181]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPResponseOfPR/Attribute_Status.qbl b/_Main/BL/Type_ERPResponseOfPR/Attribute_Status.qbl
new file mode 100644
index 0000000..b4b5d92
--- /dev/null
+++ b/_Main/BL/Type_ERPResponseOfPR/Attribute_Status.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Status
+{
+  #keys: '3[414384.0.789526170][414384.0.789526169][414384.0.789526171]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ERPResponseOfPR/_ROOT_Type_ERPResponseOfPR.qbl b/_Main/BL/Type_ERPResponseOfPR/_ROOT_Type_ERPResponseOfPR.qbl
new file mode 100644
index 0000000..46d8566
--- /dev/null
+++ b/_Main/BL/Type_ERPResponseOfPR/_ROOT_Type_ERPResponseOfPR.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ERPResponseOfPR
+{
+  #keys: '5[414384.0.787890255][414384.0.787890253][0.0.0][414384.0.787890254][414384.0.787890256]'
+  BaseType: Object
+  Description: 'ERP鍝嶅簲'
+  StructuredName: 'ERPResponseOfPRs'
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
index 6f10cf9..4c169d3 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
@@ -7,6 +7,7 @@
     //this.MatAttrSettingAndPlanStrategy( relflush );
     
     // yypsybs Sep-8-2023 (created)
+    info( "CapacityAndSaleBudge::InitTestData" )
     mat1 := MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 1, "鎵嬫満浜嬩笟閮�", "MAT_1", "MAT_1", "TYPE_1", 233.0, "閫氱敤", "闀垮懆鏈�" );
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_1", 666.0, "PROD_1_DESC" );
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_2", 777.0, "PROD_2_DESC" );
@@ -15,5 +16,52 @@
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat2, "PROD_2", 1777.0, "PROD_2_DESC" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 3, "鎵嬫満浜嬩笟閮�", "MAT_3", "MAT_3", "TYPE_1", 233.0, "閫氱敤", "鐭懆鏈�" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 4, "鎵嬫満浜嬩笟閮�", "MAT_4", "MAT_4", "TYPE_2", 233.0, "涓撶敤", "鐭懆鏈�" );
+    
+    
+    // yypsybs Sep-15-2023 (created)
+    info( "CapacityAndSaleBudge::InitTestData" )
+    this.CapacityAndSaleBudge( relflush );
+    for( i := 1; i < 100; i := i + 1 ) {
+      this.CapacityAndSaleBudge( relnew, 
+                                 PlaceOfProductionOfArray := "闈㈡澘鍩哄湴" + [String]Number::Random( 1, 10 ), 
+                                 OrgCode := "浜嬩笟閮�" + [String]Number::Random( 1, 10 ), 
+                                 CapacityInPCSInMonth1 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth2 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth3 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth4 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth5 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth6 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth7 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth8 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth9 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth10 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth11 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth12 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth1 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth2 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth3 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth4 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth5 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth6 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth7 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth8 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth9 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth10 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth11 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth12 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth1 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth2 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth3 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth4 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth5 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth6 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth7 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth8 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth9 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth10 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth11 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth12 := Number::Random( 1, 10000 ) 
+                               );
+    }
   *]
 }
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..892901a
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_AuthorizeRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeRealQty
+{
+  #keys: '3[414724.0.46380545][414724.0.46380544][414724.0.46380546]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl
new file mode 100644
index 0000000..0e695ea
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomID
+{
+  #keys: '3[414724.0.46380505][414724.0.46380504][414724.0.46380506]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..81d8766
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.46380495][414724.0.46380494][414724.0.46380496]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..46f0041
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380485][414724.0.46380484][414724.0.46380486]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl
new file mode 100644
index 0000000..d091aba
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Month
+{
+  #keys: '3[414724.0.46380515][414724.0.46380514][414724.0.46380516]'
+  Description: '鏈堜唤'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..4f9d60f
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380525][414724.0.46380524][414724.0.46380526]'
+  Description: '璁㈠崟缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..f99e100
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380535][414724.0.46380534][414724.0.46380536]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..a76d536
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380555][414724.0.46380554][414724.0.46380556]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl b/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..ab13797
--- /dev/null
+++ b/_Main/BL/Type_H_AuthorizeRealQty/_ROOT_Type_H_AuthorizeRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_AuthorizeRealQty
+{
+  #keys: '5[414724.0.46380462][414724.0.46380460][0.0.0][414724.0.46380461][414724.0.46380463]'
+  BaseType: Object
+  Description: '鎺堟潈瀹炴椂鏁版嵁锛屾案涔呬繚鎸�'
+  StructuredName: 'H_AuthorizeRealQtys'
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl
new file mode 100644
index 0000000..2d2de2b
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_DetailedInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DetailedInformation
+{
+  #keys: '3[414724.0.53669845][414724.0.53669844][414724.0.53669846]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl
new file mode 100644
index 0000000..d205771
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_DeveloperInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DeveloperInformation
+{
+  #keys: '3[414724.0.53669855][414724.0.53669854][414724.0.53669856]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl
new file mode 100644
index 0000000..be5ee15
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EClassName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EClassName
+{
+  #keys: '3[414724.0.54835773][414724.0.54835772][414724.0.54835774]'
+  Description: '鍙戠敓鐨勭被'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl
new file mode 100644
index 0000000..8380f6d
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EDateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EDateTime
+{
+  #keys: '3[414724.0.54835763][414724.0.54835762][414724.0.54835764]'
+  Description: '閿欒鍙戠敓鏃ユ湡'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl
new file mode 100644
index 0000000..fedaa55
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EFunctionName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EFunctionName
+{
+  #keys: '3[414724.0.54835793][414724.0.54835792][414724.0.54835794]'
+  Description: '閿欒鍑芥暟'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl
new file mode 100644
index 0000000..60c6abd
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_EInformation.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EInformation
+{
+  #keys: '3[414724.0.54835783][414724.0.54835782][414724.0.54835784]'
+  Description: '閿欒娑堟伅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl
new file mode 100644
index 0000000..5becead
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_ErrorNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ErrorNr
+{
+  #keys: '3[414724.0.54890030][414724.0.54890029][414724.0.54890031]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl b/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl
new file mode 100644
index 0000000..8f844aa
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/Attribute_GeneralInformation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GeneralInformation
+{
+  #keys: '3[414724.0.53669835][414724.0.53669834][414724.0.53669836]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl b/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl
new file mode 100644
index 0000000..7eab462
--- /dev/null
+++ b/_Main/BL/Type_H_ErrorLogs/_ROOT_Type_H_ErrorLogs.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ErrorLogs
+{
+  #keys: '5[414724.0.54835740][414724.0.54835738][0.0.0][414724.0.54835739][414724.0.54835741]'
+  BaseType: Object
+  Description: '閿欒鏃ュ織'
+  StructuredName: 'H_ErrorLogss'
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl b/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl
new file mode 100644
index 0000000..1d632e6
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_CustomCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomCode
+{
+  #keys: '3[414724.0.87401068][414724.0.87401067][414724.0.87401069]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl b/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl
new file mode 100644
index 0000000..e62814a
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.87401078][414724.0.87401077][414724.0.87401079]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Department.qbl b/_Main/BL/Type_H_Forecast/Attribute_Department.qbl
new file mode 100644
index 0000000..6491619
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Department.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Department
+{
+  #keys: '3[414724.0.87401098][414724.0.87401097][414724.0.87401099]'
+  Description: '閿�鍞儴闂�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl b/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..1a021e5
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.87401048][414724.0.87401047][414724.0.87401049]'
+  Description: '棰勬祴鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl b/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl
new file mode 100644
index 0000000..1e2886f
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_NeedTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NeedTime
+{
+  #keys: '3[414724.0.87401088][414724.0.87401087][414724.0.87401089]'
+  Description: '闇�姹傛椂闂达紝绮剧‘鍒版棩鏈�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl b/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..3939190
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.87401028][414724.0.87401027][414724.0.87401029]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl b/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl
new file mode 100644
index 0000000..74b5351
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.87401038][414724.0.87401037][414724.0.87401039]'
+  Description: 'SKU缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl b/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl
new file mode 100644
index 0000000..6fa9183
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.87401018][414724.0.87401017][414724.0.87401019]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_Forecast/Attribute_Util.qbl b/_Main/BL/Type_H_Forecast/Attribute_Util.qbl
new file mode 100644
index 0000000..57d21a7
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/Attribute_Util.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Util
+{
+  #keys: '3[414724.0.87401058][414724.0.87401057][414724.0.87401059]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl b/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl
new file mode 100644
index 0000000..6d6bb0b
--- /dev/null
+++ b/_Main/BL/Type_H_Forecast/_ROOT_Type_H_Forecast.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_Forecast
+{
+  #keys: '5[414724.0.87400998][414724.0.87400996][0.0.0][414724.0.87400997][414724.0.87400999]'
+  BaseType: Object
+  Description: '璁㈠崟棰勬祴'
+  StructuredName: 'H_Forecasts'
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl
new file mode 100644
index 0000000..a5d408e
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Forecast.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpdateTime_Forecast
+{
+  #keys: '3[414724.0.53669779][414724.0.53669778][414724.0.53669780]'
+  Description: '璁㈠崟棰勬祴鏇存柊鏃堕棿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl
new file mode 100644
index 0000000..8dc9d1a
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_UpdateTime_Material.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpdateTime_Material
+{
+  #keys: '3[414724.0.53669759][414724.0.53669758][414724.0.53669760]'
+  Description: '鐗╂枡鏇存柊鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl
new file mode 100644
index 0000000..33e09da
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Forecast.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode_Forecast
+{
+  #keys: '3[414724.0.53669769][414724.0.53669768][414724.0.53669770]'
+  Description: '璁㈠崟棰勬祴鏇存柊鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl
new file mode 100644
index 0000000..f816ee2
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Attribute_VCode_Material.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode_Material
+{
+  #keys: '3[414724.0.53669749][414724.0.53669748][414724.0.53669750]'
+  Description: '鐗╂枡鏇存柊鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl b/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl
new file mode 100644
index 0000000..451505c
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/Method_InitialData_R.qbl
@@ -0,0 +1,51 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitialData_R (
+  MacroPlan Owner
+) as Boolean
+{
+  TextBody:
+  [*
+    /*********************************************鏇存柊鐗╂枡椤圭洰*********************************
+    *鍑芥暟鍚嶇О锛歎pdateMaterialItems
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氫粠鐗╂枡淇℃伅琛ㄦ洿鏂板埌鐗╂枡鍙嶇鏁伴噺琛紝鍙閲忥紝涓嶈鐩栧師鏉ョ殑鏁版嵁锛屽鍔犵殑鏉$洰鏁伴噺榛樿涓�0,鎵ц鎴愬姛杩斿洖Ture
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if(Owner.H_ReverseRealQty(relget ).Size() <= 10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_ReverseRealQty(relnew,ID := "AAAAA",SKU := "OTN-00-ACC-001",Unit := "PCS",ReverseRealQty := 0);
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+    
+      Num_AAA := 1/0;
+      if(Num_AAA>0)
+      {
+        bResult := true;
+      }
+      else
+      {
+         bResult := false;
+      }
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..7118da1
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod () as owning JSON
+{
+  TextBody:
+  [*
+    jResult := JSON::Object().Add( "A","123");
+    return jResult.Build();
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl
new file mode 100644
index 0000000..3c263bd
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GenerateID.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_GenerateID (
+  String HeaderCode
+) as String
+{
+  Description: '鐢熸垚ID, 18浣�'
+  TextBody:
+  [*
+    /*********************************************鐢熸垚鍞竴ID*********************************
+    *鍑芥暟鍚嶇О锛歋M_GenerateID
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氱敓鎴愬敮涓�ID
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    // 鍞竴ID
+    strID :="";
+    
+    // 寰楀埌鏃堕棿瀛楃涓� 绮剧‘鍒扮
+    dtCurrent := DateTime::ActualTime();
+    strDt := dtCurrent.Format( "YM2D2Hms");
+    
+    // 瀹氫箟鍓嶄袱浣嶄唬鐮侊紙鍙互鐢辩敤鎴蜂紶鍏ワ紝榛樿AC(Auto Code)
+    strHeader :="AC";
+    if(HeaderCode.Length()>=2)
+    {
+        strHeader:= HeaderCode.SubString( 0,2);
+    }
+    // 涓ゆ闅忔満鏁板瓧锛屽噺灏戦噸澶嶆��
+    First:=Number::Random( 1000,9999);
+    Second:=Number::Random(10000,99999);
+    // 缁勫悎ID
+    strID := strHeader+strDt+First.AsQUILL()+Second.AsQUILL();
+    return strID;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl
new file mode 100644
index 0000000..b934584
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialPurchaseIssuer.qbl
@@ -0,0 +1,70 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_MaterialPurchaseIssuer (
+  output String OResultMsg,
+  MacroPlan Owner,
+  String VCode,
+  String Operator
+) as Boolean
+{
+  Description: '閲囪喘鏄庣粏鍙戝竷'
+  TextBody:
+  [*
+    /*********************************************閲囪喘鏄庣粏鍙戝竷*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialPurchaseIssuer
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-15
+    *鍑芥暟鎻忚堪锛氬皢绯荤粺鍐呮墍鏈夌姸鎬佷负鏈彂甯冪殑閲囪喘鍗曞彂甯�,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(not isnull( Owner))
+      { 
+        // 妫�鏌ユ槸鍚︽湁鏈彂甯冪殑鏁版嵁
+        AllMaterialPurchase := selectset( Owner,H_MaterialPurchase,Obj,Obj.Status()="鏈彂甯�");
+        if(AllMaterialPurchase.Size()>0)
+        {
+          // 鑾峰彇鍙戝竷ID
+          IssuerID:=H_FunctionClass::SM_GenerateID( "RR");
+          
+          // 鐢熸垚鍙戝竷璁板綍
+          Owner.H_ReleaseRecord(relnew,ID := IssuerID,Issuer := Operator,VCode := VCode,IssuingDate := DateTime::ActualTime());
+          
+          // 鏇存柊璁㈠崟鐘舵��
+          traverse(Owner,H_MaterialPurchase,Obj,Obj.Status()="鏈彂甯�")
+          {
+            Obj.Status("宸插彂甯�");
+            Obj.IssuingDate(DateTime::ActualTime());
+            Obj.H_ReleaseRecord_ID(IssuerID);
+          }
+          
+          bResult := true;
+          OResultMsg :="鐗╂枡鍙戝竷瀹屾垚";
+        }
+        else
+        {
+          OResultMsg :="鏃犲彲鍙戝竷鐨勭墿鏂欒鍗�";
+        }    
+      }
+      else
+      {
+        OResultMsg :="Owner 涓嶈兘涓篘ull";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鐗╂枡鍙戝竷閿欒锛岃鑱旂郴绯荤粺绠$悊鍛橈紒";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialPurchaseIssuer",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
new file mode 100644
index 0000000..52dcd9d
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
@@ -0,0 +1,233 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_MaterialReverse (
+  MacroPlan Owner,
+  String VCode,
+  String CustomerCode,
+  String SKU,
+  Number OperateQty,
+  String Operator,
+  output String OResultMsg,
+  String OperateType
+) as Boolean
+{
+  Description: '鐗╂枡鍙嶇'
+  TextBody:
+  [*
+    /*********************************************鐗╂枡鍙嶇鎴栨巿鏉�*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialReverse
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氱墿鏂欏弽绛炬垨鎺堟潈,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(OperateQty>0 and not isnull(Owner))
+      {
+        nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+        nReverseQtyOld :=0;   //鍘熷弽绛炬暟閲�
+        nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+        nForecastQtyNew :=0;  //璁$畻鍚庣殑棰勬祴鏁伴噺
+        nReverseQtyNew :=0;   //璁$畻鍚庣殑鍙嶇鏁伴噺
+        nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+        nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+        nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+        // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
+        OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU 
+                                              and Obj.CustomID() = CustomerCode 
+                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
+        if ( not isnull(OrderForecast))
+        {
+            nForecastQtyOld := OrderForecast.ForecatsRealQty();
+            nForecastQtyNew := nForecastQtyOld;
+        }
+        
+        // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
+        ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = SKU);
+        if ( not isnull(ObjReverse))
+        {
+            nReverseQtyOld := ObjReverse.ReverseRealQty();
+            nReverseQtyNew := nReverseQtyOld;
+        }
+        
+        // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
+        ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = SKU 
+                                                                and Obj.CustomID() = CustomerCode );
+        if ( not isnull(ObjAuthorize))
+        {
+            nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
+            nAuthorizeQtyNew :=nAuthorizeQtyOld;
+        }
+    /******************************************鍙嶇鐗╂枡*************************************************/
+        if( OperateType="鍙嶇")
+        {
+          // 鍙嶇璁板綍ID
+          HRID := H_FunctionClass::SM_GenerateID( "FQ");
+          // 鍙嶇鍚庢暟閲� = 鍘熸暟閲�+鏂板鐨勬暟閲�
+          nReverseQtyNew := nReverseQtyOld+OperateQty;
+          // 璁板綍鍔ㄤ綔
+          Owner.H_HedgingRecord(relnew,
+                                 ID := HRID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ForecastQty := nForecastQtyNew,
+                                 ReverseQty := nReverseQtyNew,
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 OperateTime := DateTime::ActualTime(),
+                                 CustomerCode := CustomerCode,
+                                 OperateQty := OperateQty);
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := "閫氳繃SKU鑾峰彇",ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 閲婃斁閲囪喘
+          Owner.H_MaterialPurchase(relnew,ID := H_FunctionClass::SM_GenerateID( "MP"),VCode:=VCode, DemandTime := DateTime::ActualTime(),
+                                    H_HedgingRecord_ID := HRID,SKU := SKU,ProductSubclassType := "鐗╂枡绫诲瀷锛岀敤SKU鎶撶墿鏂欒〃寰楀埌",Qty := OperateQty,Unit := "閫氳繃SKU鎶�",
+                                    OrgCode := "閫氳繃SKU鍦˙OOM涓姄鍙�",WarehouseCode := "鏆傛湭寰楀埌鏉ユ簮",Status := "鏈彂甯�");
+          
+          bResult := true;
+          OResultMsg:="鍙嶇鎴愬姛锛�";
+        }
+    /******************************************鎺堟潈鐗╂枡*************************************************/
+        else if(OperateType="鎺堟潈")
+        {
+          // 鎺堟潈璁板綍ID
+          AQID := H_FunctionClass::SM_GenerateID( "AQ");
+          // 鎺堟潈鍐插噺--鍙嶇
+          if( nReverseQtyOld>OperateQty)
+          {
+            nReverseQtyNew := nReverseQtyOld - OperateQty;
+          }
+          else 
+          {
+            nReverseQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鎺堟潈
+          nAuthorizeQtyNew := nAuthorizeQtyOld + OperateQty;
+          // 鎺堟潈鍐插噺--棰勬祴
+          nMid := OperateQty - nReverseQtyOld;
+          if( nMid<0)
+          {
+            nMid := 0;  
+          }
+          nForecastQtyNew := nForecastQtyOld-nMid;
+          if(nForecastQtyNew<0)
+          {
+            nForecastQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鏈夐娴嬪拰鏃犻娴�
+          if( nMid>=nForecastQtyOld)
+          {
+            nHaveForecastQty := nForecastQtyOld;
+            nNoHaveForecastQty := nMid-nForecastQtyOld;
+          }
+          else
+          {
+            nHaveForecastQty := nMid;
+            nNoHaveForecastQty := 0;
+          }
+          
+          // 璁板綍鍔ㄤ綔
+          Owner.H_HedgingRecord(relnew,
+                                 ID := AQID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ForecastQty := nForecastQtyNew,
+                                 ReverseQty := nReverseQtyNew,
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 OperateTime := DateTime::ActualTime(),
+                                 CustomerCode := CustomerCode,
+                                 OperateQty := OperateQty);
+                                 
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := "PCS",ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 鏇存柊棰勬祴
+          if( not isnull( OrderForecast))
+          {
+            OrderForecast.ForecatsRealQty(nForecastQtyNew);
+          }
+          else
+          {
+            Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := "瀹㈡埛琛ㄨ幏鍙�",
+                                                                                            OrderCode := "-",
+                                                                                            ForecatsQty :=0,
+                                                                                            ForecatsRealQty :=nForecastQtyNew,
+                                                                                            Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
+          } 
+          
+          // 鏇存柊鎺堟潈
+          if( not isnull( ObjAuthorize))
+          {
+            ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+          }
+          else
+          {
+            Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := "瀹㈡埛琛ㄨ幏鍙�",
+                                                                                            OrderCode := "-",
+                                                                                            AuthorizeRealQty :=nAuthorizeQtyNew,
+                                                                                            Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
+          } 
+          
+          // 閲婃斁閲囪喘
+          nMid_R :=OperateQty - nReverseQtyOld;
+          if( nMid_R > 0)
+          {
+            Owner.H_MaterialPurchase(relnew,ID := H_FunctionClass::SM_GenerateID( "MP"),VCode:=VCode, DemandTime := DateTime::ActualTime(),
+                                    H_HedgingRecord_ID := AQID,SKU := SKU,ProductSubclassType := "鐗╂枡绫诲瀷锛岀敤SKU鎶撶墿鏂欒〃寰楀埌",Qty := nMid_R,Unit := "閫氳繃SKU鎶�",
+                                    OrgCode := "閫氳繃SKU鍦˙OOM涓姄鍙�",WarehouseCode := "鏆傛湭寰楀埌鏉ユ簮",Status := "鏈彂甯�");
+          }
+          
+          bResult := true;
+          OResultMsg:="鎺堟潈鎴愬姛锛�";
+        }
+        else
+        {
+          OResultMsg:="鎿嶄綔澶辫触锛屾棤娉曡瘑鍒搷浣滅被鍨嬶紒";
+        }
+      }
+      else
+      {
+        OResultMsg:="鎿嶄綔澶辫触锛�" + OperateType + "鏁伴噺蹇呴』澶т簬0";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鍙嶇鏃跺彂鐢熼敊璇紝璇疯仈绯荤郴缁熺鐞嗗憳锛�";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialReverse",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
new file mode 100644
index 0000000..72a96c0
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
@@ -0,0 +1,240 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_OrderReverseOrAuthorize (
+  MacroPlan Owner,
+  String Unit,
+  String VCode,
+  Date NeedDate,
+  String CustomerCode,
+  String SKU,
+  Number OperateQty,
+  String Operator,
+  String CustomName,
+  output String OResultMsg,
+  String OperateType
+) as Boolean
+{
+  Description: '璁㈠崟鍙嶇鎴栨巿鏉�'
+  TextBody:
+  [*
+    /*********************************************璁㈠崟鍙嶇鎴栨巿鏉�*********************************
+    *鍑芥暟鍚嶇О锛歋M_MaterialReverse
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-15
+    *鍑芥暟鎻忚堪锛氳鍗曞弽绛炬垨鎺堟潈,true 鎴愬姛锛宖alse 澶辫触锛�
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    OResultMsg:="";
+    try
+    {
+      if(OperateQty>0 and not isnull(Owner))
+      {
+        nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+        nReverseQtyOld :=0;   //鍘熷弽绛炬暟閲�
+        nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+        nForecastQtyNew :=0;  //璁$畻鍚庣殑棰勬祴鏁伴噺
+        nReverseQtyNew :=0;   //璁$畻鍚庣殑鍙嶇鏁伴噺
+        nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+        nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+        nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+        // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
+        OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU 
+                                              and Obj.CustomID() = CustomerCode 
+                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
+        if ( not isnull(OrderForecast))
+        {
+            nForecastQtyOld := OrderForecast.ForecatsRealQty();
+            nForecastQtyNew := nForecastQtyOld;
+        }
+        
+        // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
+        ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = SKU);
+        if ( not isnull(ObjReverse))
+        {
+            nReverseQtyOld := ObjReverse.ReverseRealQty();
+            nReverseQtyNew := nReverseQtyOld;
+        }
+        
+        // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
+        ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = SKU 
+                                                                and Obj.CustomID() = CustomerCode );
+        if ( not isnull(ObjAuthorize))
+        {
+            nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
+            nAuthorizeQtyNew :=nAuthorizeQtyOld;
+        }
+    /******************************************鍙嶇鐗╂枡*************************************************/
+        if( OperateType="鍙嶇")
+        {
+          // 鍙嶇璁板綍ID
+          HRID := H_FunctionClass::SM_GenerateID( "OR");
+          // 鍙嶇鍚庢暟閲� = 鍘熸暟閲�+鏂板鐨勬暟閲�
+          nReverseQtyNew := nReverseQtyOld+OperateQty;
+          // 璁板綍鍔ㄤ綔
+          Owner.H_OrderRecord(relnew,
+                                 ID := HRID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ReverseQty := nReverseQtyNew,
+                                 CustomerCode := CustomerCode,
+                                 CustomerName := CustomName,
+                                 ForecastQty := nForecastQtyNew,
+                                 OrderDateTime := NeedDate,
+                                 OrderQty := OperateQty,
+                                 OrderCode:=H_FunctionClass::SM_GenerateID( "OC"),
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 ReverseDeductQty := OperateQty,
+                                 AuthorizeDeductQty := 0,
+                                 ForecastHitQty :=0,
+                                 ForecastNoHitQty :=0,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 Unit := Unit,
+                                 OperateQty := OperateQty,
+                                 OperateTime := DateTime::ActualTime());
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := Unit,ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          bResult := true;
+          OResultMsg:="璁㈠崟鍙嶇鎴愬姛锛�";
+        }
+    /******************************************鎺堟潈鐗╂枡*************************************************/
+        else if(OperateType="鎺堟潈")
+        {
+          // 鎺堟潈璁板綍ID
+          AQID := H_FunctionClass::SM_GenerateID( "AQ");
+          // 鎺堟潈鍐插噺--鍙嶇
+          if( nReverseQtyOld>OperateQty)
+          {
+            nReverseQtyNew := nReverseQtyOld - OperateQty;
+          }
+          else 
+          {
+            nReverseQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鎺堟潈
+          nAuthorizeQtyNew := nAuthorizeQtyOld + OperateQty;
+          // 鎺堟潈鍐插噺--棰勬祴
+          nMid := OperateQty - nReverseQtyOld;
+          if( nMid<0)
+          {
+            nMid := 0;  
+          }
+          nForecastQtyNew := nForecastQtyOld-nMid;
+          if(nForecastQtyNew<0)
+          {
+            nForecastQtyNew :=0;
+          }
+          // 鎺堟潈鍐插噺--鏈夐娴嬪拰鏃犻娴�
+          if( nMid>=nForecastQtyOld)
+          {
+            nHaveForecastQty := nForecastQtyOld;
+            nNoHaveForecastQty := nMid-nForecastQtyOld;
+          }
+          else
+          {
+            nHaveForecastQty := nMid;
+            nNoHaveForecastQty := 0;
+          }
+          
+          // 璁板綍鍔ㄤ綔
+          Owner.H_OrderRecord(relnew,
+                                 ID := AQID,
+                                 VCode:=VCode,
+                                 SKU:=SKU,
+                                 ReverseQty := nReverseQtyNew,
+                                 CustomerCode := CustomerCode,
+                                 CustomerName := CustomName,
+                                 ForecastQty := nForecastQtyNew,
+                                 OrderDateTime := NeedDate,
+                                 OrderQty := OperateQty,
+                                 OrderCode:=H_FunctionClass::SM_GenerateID( "OC"),
+                                 AuthorizeQty := nAuthorizeQtyNew,
+                                 ReverseDeductQty := nReverseQtyOld - nReverseQtyNew,
+                                 AuthorizeDeductQty := OperateQty,
+                                 ForecastHitQty :=nHaveForecastQty,
+                                 ForecastNoHitQty :=nNoHaveForecastQty,
+                                 OperateType := OperateType,
+                                 Operator := Operator,
+                                 Unit := Unit,
+                                 OperateQty := OperateQty,
+                                 OperateTime := DateTime::ActualTime());
+                                 
+          // 鏇存柊褰撳墠鍙嶇鏁伴噺
+          if( not isnull( ObjReverse))
+          {
+            ObjReverse.ReverseRealQty(nReverseQtyNew);
+          }
+          else
+          {
+            Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := Unit,ReverseRealQty := nReverseQtyNew);
+          } 
+          
+          // 鏇存柊棰勬祴
+          if( not isnull( OrderForecast))
+          {
+            OrderForecast.ForecatsRealQty(nForecastQtyNew);
+          }
+          else
+          {
+            Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := CustomName,
+                                                                                            OrderCode := "-",
+                                                                                            ForecatsQty :=0,
+                                                                                            ForecatsRealQty :=nForecastQtyNew,
+                                                                                            Unit := Unit);
+          } 
+          
+          // 鏇存柊鎺堟潈
+          if( not isnull( ObjAuthorize))
+          {
+            ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+          }
+          else
+          {
+            Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := SKU,
+                                                                                            Month := Date::ActualDate(),
+                                                                                            CustomID := CustomerCode,
+                                                                                            CustomName := CustomName,
+                                                                                            OrderCode := "-",
+                                                                                            AuthorizeRealQty :=nAuthorizeQtyNew,
+                                                                                            Unit := Unit);
+          } 
+          
+          bResult := true;
+          OResultMsg:="鎺堟潈鎴愬姛锛�";
+        }
+        else
+        {
+          OResultMsg:="鎿嶄綔澶辫触锛屾棤娉曡瘑鍒搷浣滅被鍨嬶紒";
+        }
+      }
+      else
+      {
+        OResultMsg:="鎿嶄綔澶辫触锛�" + OperateType + "鏁伴噺蹇呴』澶т簬0";
+      }
+    }
+    onerror
+    {
+      OResultMsg:="鍙嶇鏃跺彂鐢熼敊璇紝璇疯仈绯荤郴缁熺鐞嗗憳锛�";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_MaterialReverse",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl
new file mode 100644
index 0000000..9ad500f
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateAuthorizeRealQty.qbl
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateAuthorizeRealQty (
+  MacroPlan Owner
+) as Boolean
+{
+  TextBody:
+  [*
+    /*********************************************鏇存柊鎺堟潈淇℃伅*********************************
+    *鍑芥暟鍚嶇О锛欰uthorizeRealQty
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氭洿鏂拌鍗曢娴嬩俊鎭紝澧為噺鏇存柊锛屾柊澧炴爲鏁伴噺榛樿涓�0锛屾墽琛屾垚鍔熻繑鍥濼ure
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_AuthorizeRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_AuthorizeRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL(),SKU := "OTN-01-ACC-00"+ x.AsQUILL() ,Month := Date::ActualDate(),CustomName := "灏忕背",
+                                          CustomID := "XM0001",OrderCode:="OD0001",AuthorizeRealQty:=1000, Unit := "PCS");
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateAuthorizeRealQty",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl
new file mode 100644
index 0000000..1c79db9
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateMaterialItems.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateMaterialItems (
+  String VCode,
+  MacroPlan Owner
+) as Boolean
+{
+  Description: '浠庣墿鏂欎俊鎭〃鏇存柊鍒扮墿鏂欏弽绛炬暟閲忚〃锛屽彧澧為噺锛屼笉瑕嗙洊鍘熸潵鐨勬暟鎹紝澧炲姞鐨勬潯鐩暟閲忛粯璁や负0'
+  TextBody:
+  [*
+    /*********************************************鏇存柊鐗╂枡椤圭洰*********************************
+    *鍑芥暟鍚嶇О锛歎pdateMaterialItems
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氫粠鐗╂枡淇℃伅琛ㄦ洿鏂板埌鐗╂枡鍙嶇鏁伴噺琛紝鍙閲忥紝涓嶈鐩栧師鏉ョ殑鏁版嵁锛屽鍔犵殑鏉$洰鏁伴噺榛樿涓�0,鎵ц鎴愬姛杩斿洖Ture
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_ReverseRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_ReverseRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL()  ,SKU := "OTN-01-ACC-00"+ x.AsQUILL() ,Unit := "PCS",ReverseRealQty := 0);
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
new file mode 100644
index 0000000..988d53e
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod UpdateOrderForecastRealQty (
+  MacroPlan Owner
+) as Boolean
+{
+  Description: '鏇存柊璁㈠崟棰勬祴淇℃伅'
+  TextBody:
+  [*
+    /*********************************************鏇存柊璁㈠崟棰勬祴淇℃伅*********************************
+    *鍑芥暟鍚嶇О锛歎pdateOrderForecastRealQty
+    *鍒� 寤� 浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-14
+    *鍑芥暟鎻忚堪锛氭洿鏂拌鍗曢娴嬩俊鎭紝鎸夋湀鏇存柊锛岃鐩栨垨鏂板鏁版嵁锛屾墽琛屾垚鍔熻繑鍥濼ure
+    *淇� 鏀� 浜猴細
+    *淇敼鏃ユ湡锛�
+    *淇敼鍐呭锛�
+    *****************************************************************************************/
+    bResult := false;
+    try
+    {
+      if( Owner.H_OrderForecastRealQty(relget ).Size()<10)
+      {
+        for ( x := 1; x <= 10; x := x + 1 )
+        {
+            Owner.H_OrderForecastRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL(),SKU := "OTN-01-ACC-00"+ x.AsQUILL() , Month := Date::ActualDate(),CustomName := "灏忕背",
+                                          CustomID := "XM0001",OrderCode:="OD0001",ForecatsQty:=1000,ForecatsRealQty:=1000, Unit := "PCS");
+        }
+      }
+      //H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
+      // Traverse the selected set of Product_MPs for batch update
+        bResult := true;
+    }
+    onerror
+    {
+        Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateOrderForecastRealQty",
+                           DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                           GeneralInformation := e.GeneralInformation());
+                          
+                           
+    }
+    return bResult;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl b/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl
new file mode 100644
index 0000000..6cb0560
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/_ROOT_Type_H_FunctionClass.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_FunctionClass
+{
+  #keys: '5[414724.0.53669729][414724.0.53669727][0.0.0][414724.0.53669728][414724.0.53669730]'
+  BaseType: Object
+  Description: '鍐插噺鎿嶄綔绫�'
+  StructuredName: 'H_FunctionClasss'
+}
diff --git "a/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl" "b/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl"
new file mode 100644
index 0000000..944801a
--- /dev/null
+++ "b/_Main/BL/Type_H_MaterialPurchase/Attribute_DemandTime\043567.qbl"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandTime
+{
+  #keys: '3[414724.0.26781557][414724.0.26781556][414724.0.26781558]'
+  Description: '闇�姹傛椂闂�'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl
new file mode 100644
index 0000000..b389f5a
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_HedgingRecord_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute H_HedgingRecord_ID
+{
+  #keys: '3[414724.0.26781576][414724.0.26781575][414724.0.26781577]'
+  Description: '鍔ㄤ綔璁板綍ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl
new file mode 100644
index 0000000..f52882b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_H_ReleaseRecord_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute H_ReleaseRecord_ID
+{
+  #keys: '3[414724.0.26781656][414724.0.26781655][414724.0.26781657]'
+  Description: '鍙戝竷浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl
new file mode 100644
index 0000000..c02afb2
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26781527][414724.0.26781526][414724.0.26781528]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl
new file mode 100644
index 0000000..32ac153
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_IssuingDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IssuingDate
+{
+  #keys: '3[414724.0.26781666][414724.0.26781665][414724.0.26781667]'
+  Description: '鍙戝竷鏃ユ湡'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..8a4aaef
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414724.0.26781626][414724.0.26781625][414724.0.26781627]'
+  Description: '缁勭粐浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl
new file mode 100644
index 0000000..71f619d
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_ProductSubclassType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductSubclassType
+{
+  #keys: '3[414724.0.26781596][414724.0.26781595][414724.0.26781597]'
+  Description: '绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl
new file mode 100644
index 0000000..4e5407c
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Qty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Qty
+{
+  #keys: '3[414724.0.26781606][414724.0.26781605][414724.0.26781607]'
+  Description: '鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl
new file mode 100644
index 0000000..535b982
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.26781586][414724.0.26781585][414724.0.26781587]'
+  Description: 'SKU缂栫爜锛堝師鏂橧D)'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl
new file mode 100644
index 0000000..2aafc74
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26781547][414724.0.26781546][414724.0.26781548]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl
new file mode 100644
index 0000000..4737bef
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Status.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Status
+{
+  #keys: '3[414724.0.26781646][414724.0.26781645][414724.0.26781647]'
+  Description: '鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl
new file mode 100644
index 0000000..436827f
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.26781616][414724.0.26781615][414724.0.26781617]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl
new file mode 100644
index 0000000..b75c114
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26781537][414724.0.26781536][414724.0.26781538]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl b/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl
new file mode 100644
index 0000000..7b27796
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/Attribute_WarehouseCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WarehouseCode
+{
+  #keys: '3[414724.0.26781636][414724.0.26781635][414724.0.26781637]'
+  Description: '浠撳簱浠g爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl b/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl
new file mode 100644
index 0000000..cf9c177
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialPurchase/_ROOT_Type_H_MaterialPurchase.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MaterialPurchase
+{
+  #keys: '5[414724.0.26810970][414724.0.26810968][0.0.0][414724.0.26810969][414724.0.26810971]'
+  BaseType: Object
+  Description: '鍐插噺_鐗╂枡閲囪喘'
+  StructuredName: 'H_MaterialPurchases'
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl
new file mode 100644
index 0000000..b6c8ea6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_AuthorizeRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeRealQty
+{
+  #keys: '3[414724.0.87400932][414724.0.87400931][414724.0.87400933]'
+  Description: '鎺堟潈鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl
new file mode 100644
index 0000000..fb375ca
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomCode
+{
+  #keys: '3[414724.0.87400942][414724.0.87400941][414724.0.87400943]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..2ebf142
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.87400952][414724.0.87400951][414724.0.87400953]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl
new file mode 100644
index 0000000..347584b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_ForecastQty_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty_Month
+{
+  #keys: '3[414724.0.87400912][414724.0.87400911][414724.0.87400913]'
+  Description: '褰撴湀棰勬祴'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl
new file mode 100644
index 0000000..5169ca6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_MaterialType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialType
+{
+  #keys: '3[414724.0.87400977][414724.0.87400976][414724.0.87400978]'
+  Description: '鐗╂枡绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl
new file mode 100644
index 0000000..89f4265
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_ReverseRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseRealQty
+{
+  #keys: '3[414724.0.87400922][414724.0.87400921][414724.0.87400923]'
+  Description: '鍙嶇鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..f8c0c68
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.87400892][414724.0.87400891][414724.0.87400893]'
+  Description: 'SKU缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl
new file mode 100644
index 0000000..f4e984b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_Util.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Util
+{
+  #keys: '3[414724.0.87400987][414724.0.87400986][414724.0.87400988]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl b/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl
new file mode 100644
index 0000000..04e569b
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.87400902][414724.0.87400901][414724.0.87400903]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl b/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl
new file mode 100644
index 0000000..b890ed6
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialRealQty/_ROOT_Type_H_MaterialRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MaterialRealQty
+{
+  #keys: '5[414724.0.87400872][414724.0.87400870][0.0.0][414724.0.87400871][414724.0.87400873]'
+  BaseType: Object
+  Description: '鐗╂枡瀹炴椂鏁版嵁'
+  StructuredName: 'H_MaterialRealQtys'
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl
new file mode 100644
index 0000000..c085444
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_FKey.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FKey
+{
+  #keys: '3[414724.0.87274672][414724.0.87274671][414724.0.87274673]'
+  Description: '澶栭敭銆佺粍: 澶х被鍒紝鍖呭惈澶氫釜CKey'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl
new file mode 100644
index 0000000..e1d64e6
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_ItemKey.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ItemKey
+{
+  #keys: '3[414724.0.87274682][414724.0.87274681][414724.0.87274683]'
+  Description: '椤筀Ey'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl
new file mode 100644
index 0000000..41c1c47
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_Value.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+  #keys: '3[414724.0.87274692][414724.0.87274691][414724.0.87274693]'
+  Description: '鍊�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl b/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl
new file mode 100644
index 0000000..4d77133
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/_ROOT_Type_H_MessagePassing.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MessagePassing
+{
+  #keys: '5[414724.0.87274649][414724.0.87274647][0.0.0][414724.0.87274648][414724.0.87274650]'
+  BaseType: Object
+  Description:
+  [*
+    鍥犱负涓嶇煡閬撴�庝箞杩涜涓や釜绐椾綋涔嬮棿娑堟伅浼犻�掞紝
+    鐢ㄨ繖涓被鍋氫腑闂翠欢
+  *]
+  StructuredName: 'H_MessagePassings'
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
new file mode 100644
index 0000000..f0cb7e7
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomID
+{
+  #keys: '3[414724.0.46380328][414724.0.46380327][414724.0.46380329]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl
new file mode 100644
index 0000000..f8a92fa
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+  #keys: '3[414724.0.46380318][414724.0.46380317][414724.0.46380319]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
new file mode 100644
index 0000000..2edd0bc
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecatsQty
+{
+  #keys: '3[414724.0.46380358][414724.0.46380357][414724.0.46380359]'
+  Description: '棰勬祴鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl
new file mode 100644
index 0000000..28191e3
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecatsRealQty
+{
+  #keys: '3[414724.0.46380368][414724.0.46380367][414724.0.46380369]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..11098ab
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380298][414724.0.46380297][414724.0.46380299]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
new file mode 100644
index 0000000..cc1224e
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Month
+{
+  #keys: '3[414724.0.46380308][414724.0.46380307][414724.0.46380309]'
+  Description: '鏈堜唤'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..66e08c7
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380338][414724.0.46380337][414724.0.46380339]'
+  Description: '璁㈠崟缂栧彿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..a9eab85
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380348][414724.0.46380347][414724.0.46380349]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..6569ece
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380378][414724.0.46380377][414724.0.46380379]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl
new file mode 100644
index 0000000..8d3d57b
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/_ROOT_Type_H_OrderForecastRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_OrderForecastRealQty
+{
+  #keys: '5[414724.0.46380278][414724.0.46380276][0.0.0][414724.0.46380277][414724.0.46380279]'
+  BaseType: Object
+  Description: '璁㈠崟棰勬祴瀹炴椂鏁伴噺锛屾瘡鏈堟洿鏂�'
+  StructuredName: 'H_OrderForecastRealQtys'
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl
new file mode 100644
index 0000000..fccc38a
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeDeductQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeDeductQty
+{
+  #keys: '3[414724.0.46380215][414724.0.46380214][414724.0.46380216]'
+  Description: '鎺堟潈鍐插噺鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl
new file mode 100644
index 0000000..18a2d67
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_AuthorizeQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeQty
+{
+  #keys: '3[414724.0.46380195][414724.0.46380194][414724.0.46380196]'
+  Description: '鎺堟潈鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl
new file mode 100644
index 0000000..e269588
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerCode
+{
+  #keys: '3[414724.0.46380125][414724.0.46380124][414724.0.46380126]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl
new file mode 100644
index 0000000..a825907
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_CustomerName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerName
+{
+  #keys: '3[414724.0.46380145][414724.0.46380144][414724.0.46380146]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl
new file mode 100644
index 0000000..a401658
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastHitQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastHitQty
+{
+  #keys: '3[414724.0.46380225][414724.0.46380224][414724.0.46380226]'
+  Description: '鏈夐娴嬫暟閲�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl
new file mode 100644
index 0000000..571a3fa
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastNoHitQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastNoHitQty
+{
+  #keys: '3[414724.0.46380235][414724.0.46380234][414724.0.46380236]'
+  Description: '鏃犻娴嬫暟閲�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..3983b2d
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.46380155][414724.0.46380154][414724.0.46380156]'
+  Description: '褰撴湀棰勬祴鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..21257a6
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380085][414724.0.46380084][414724.0.46380086]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl
new file mode 100644
index 0000000..dbae162
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateQty
+{
+  #keys: '3[414724.0.96596023][414724.0.96596022][414724.0.96596024]'
+  Description: '鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl
new file mode 100644
index 0000000..80e1abf
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateTime
+{
+  #keys: '3[414724.0.80254680][414724.0.80254679][414724.0.80254681]'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl
new file mode 100644
index 0000000..3c75a06
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OperateType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperateType
+{
+  #keys: '3[414724.0.80254657][414724.0.80254656][414724.0.80254658]'
+  Description: '鎿嶄綔绫诲瀷锛氬弽娼滄垨鎺堟潈'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl
new file mode 100644
index 0000000..a72a58a
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Operator.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Operator
+{
+  #keys: '3[414724.0.80401529][414724.0.80401528][414724.0.80401530]'
+  Description: '鎿嶄綔浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl
new file mode 100644
index 0000000..945f4e6
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderCode
+{
+  #keys: '3[414724.0.46380185][414724.0.46380184][414724.0.46380186]'
+  Description: '璁㈠崟鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl
new file mode 100644
index 0000000..81d29a0
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderDateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderDateTime
+{
+  #keys: '3[414724.0.46380165][414724.0.46380164][414724.0.46380166]'
+  Description: '闇�姹傛椂闂�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl
new file mode 100644
index 0000000..25c5075
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_OrderQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderQty
+{
+  #keys: '3[414724.0.46380175][414724.0.46380174][414724.0.46380176]'
+  Description: '璁㈠崟鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl
new file mode 100644
index 0000000..fd3731e
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseDeductQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseDeductQty
+{
+  #keys: '3[414724.0.46380205][414724.0.46380204][414724.0.46380206]'
+  Description: '鍙嶇鍐插噺鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl
new file mode 100644
index 0000000..c537a90
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_ReverseQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseQty
+{
+  #keys: '3[414724.0.46380115][414724.0.46380114][414724.0.46380116]'
+  Description: '鍙嶇鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl
new file mode 100644
index 0000000..ed90a54
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380105][414724.0.46380104][414724.0.46380106]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..bda8702
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.46380135][414724.0.46380134][414724.0.46380136]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl
new file mode 100644
index 0000000..5d08187
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.96596013][414724.0.96596012][414724.0.96596014]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl b/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..5c87e17
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.46380095][414724.0.46380094][414724.0.46380096]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl b/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl
new file mode 100644
index 0000000..243357b
--- /dev/null
+++ b/_Main/BL/Type_H_OrderRecord/_ROOT_Type_H_OrderRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_OrderRecord
+{
+  #keys: '5[414724.0.46380065][414724.0.46380063][0.0.0][414724.0.46380064][414724.0.46380066]'
+  BaseType: Object
+  Description: '鍐插噺-璁㈠崟璁板綍'
+  StructuredName: 'H_OrderRecords'
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl
new file mode 100644
index 0000000..43dc82d
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_FinishDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FinishDate
+{
+  #keys: '3[414724.0.26730938][414724.0.26730937][414724.0.26730939]'
+  Description: '鎴鏃堕棿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl
new file mode 100644
index 0000000..3132966
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.26810929][414724.0.26810928][414724.0.26810930]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl
new file mode 100644
index 0000000..af863d9
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Issuer.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Issuer
+{
+  #keys: '3[414724.0.26810949][414724.0.26810948][414724.0.26810950]'
+  Description: '鍙戝竷浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl
new file mode 100644
index 0000000..8165543
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_IssuingDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IssuingDate
+{
+  #keys: '3[414724.0.26810959][414724.0.26810958][414724.0.26810960]'
+  Description: '鍙戝竷鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl
new file mode 100644
index 0000000..547cdc6
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.26730928][414724.0.26730927][414724.0.26730929]'
+  Description: '搴忓彿'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl
new file mode 100644
index 0000000..70b8389
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_Status.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Status
+{
+  #keys: '3[414724.0.26730948][414724.0.26730947][414724.0.26730949]'
+  Description: '鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl b/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl
new file mode 100644
index 0000000..b2de97f
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+  #keys: '3[414724.0.26810939][414724.0.26810938][414724.0.26810940]'
+  Description: '鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl b/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl
new file mode 100644
index 0000000..2392ded
--- /dev/null
+++ b/_Main/BL/Type_H_ReleaseRecord/_ROOT_Type_H_ReleaseRecord.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ReleaseRecord
+{
+  #keys: '5[414724.0.26810909][414724.0.26810907][0.0.0][414724.0.26810908][414724.0.26810910]'
+  BaseType: Object
+  Description: '鍙嶅啿_鍙戝竷璁板綍'
+  StructuredName: 'H_ReleaseRecords'
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl
new file mode 100644
index 0000000..8226548
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.46380412][414724.0.46380411][414724.0.46380413]'
+  Description: '涓婚敭ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl
new file mode 100644
index 0000000..c47a901
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_ReverseRealQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseRealQty
+{
+  #keys: '3[414724.0.46380432][414724.0.46380431][414724.0.46380433]'
+  Description: '瀹炴椂鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl
new file mode 100644
index 0000000..4e72ed0
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.46380422][414724.0.46380421][414724.0.46380423]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl
new file mode 100644
index 0000000..83608c4
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.46380442][414724.0.46380441][414724.0.46380443]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl b/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl
new file mode 100644
index 0000000..8af1dcf
--- /dev/null
+++ b/_Main/BL/Type_H_ReverseRealQty/_ROOT_Type_H_ReverseRealQty.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_ReverseRealQty
+{
+  #keys: '5[414724.0.46380389][414724.0.46380387][0.0.0][414724.0.46380388][414724.0.46380390]'
+  BaseType: Object
+  Description: '鍙嶇瀹炴椂鏁版嵁锛屾案涔呬繚鎸�'
+  StructuredName: 'H_ReverseRealQtys'
+}
diff --git a/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl b/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl
new file mode 100644
index 0000000..fe9f311
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.96595915][414724.0.96595914][414724.0.96595916]'
+  Description: 'SKU'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl b/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl
new file mode 100644
index 0000000..6ed009d
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.96595925][414724.0.96595924][414724.0.96595926]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl b/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl
new file mode 100644
index 0000000..590106e
--- /dev/null
+++ b/_Main/BL/Type_H_TestMap/_ROOT_Type_H_TestMap.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_TestMap
+{
+  #keys: '5[414724.0.96595892][414724.0.96595890][0.0.0][414724.0.96595891][414724.0.96595893]'
+  BaseType: Object
+  Description: '娴嬭瘯涓や釜鏁版嵁闆嗗叧鑱旀樉绀�'
+  StructuredName: 'H_TestMaps'
+}
diff --git a/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl
new file mode 100644
index 0000000..2e63828
--- /dev/null
+++ b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MPSync #extension
+{
+}
diff --git a/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
new file mode 100644
index 0000000..2c92dc7
--- /dev/null
+++ b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateTestData (
+  MacroPlan parent,
+  String businessType,
+  String orgCode
+) as MappingBOM
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( parent, MappingBOM, bom, bom.BusinessType() = businessType and bom.OrganCode() = orgCode );
+    if( isnull( value ) ) {
+      value := parent.MappingBOM( relnew, 
+                                  BusinessType := businessType,
+                                  OrganCode := orgCode,
+                                  ProcessSection := "", 
+                                  ProductCode := "", 
+                                  ComponentCode := "", 
+                                  AlternativeMaterialCode := "" );
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingProduct/Attribute_OrgCode.qbl b/_Main/BL/Type_MappingProduct/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..6569df8
--- /dev/null
+++ b/_Main/BL/Type_MappingProduct/Attribute_OrgCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414384.0.795680117][414384.0.795680116][414384.0.795680118]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingProduct/StaticMethod_GetByProductId.qbl b/_Main/BL/Type_MappingProduct/StaticMethod_GetByProductId.qbl
new file mode 100644
index 0000000..c8ac218
--- /dev/null
+++ b/_Main/BL/Type_MappingProduct/StaticMethod_GetByProductId.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetByProductId (
+  MacroPlan parent,
+  String productId
+) as MappingProduct
+{
+  Description: '鏍规嵁鏂欏彿鏌ヨ褰�'
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    
+    // todo 淇敼parent绫诲瀷
+    value := select( parent, MappingProduct, item, item.ID() = productId );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..ebf044f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.803580072][414384.0.803580071][414384.0.803580073]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
new file mode 100644
index 0000000..acb1511
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInJan
+{
+  #keys: '3[414384.0.803580132][414384.0.803580131][414384.0.803580133]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
new file mode 100644
index 0000000..b063ea3
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInJan
+{
+  #keys: '3[414384.0.803580142][414384.0.803580141][414384.0.803580143]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl
new file mode 100644
index 0000000..e4a3e37
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAndSpecification
+{
+  #keys: '3[414384.0.803580092][414384.0.803580091][414384.0.803580093]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..7ef3454
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.803580103][414384.0.803580102][414384.0.803580104]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
new file mode 100644
index 0000000..97fa1b8
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmountInWInJan
+{
+  #keys: '3[414384.0.803580152][414384.0.803580151][414384.0.803580153]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl b/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl
new file mode 100644
index 0000000..bdacc1f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MappingCapacityAndSaleBudge
+{
+  #keys: '5[414384.0.803580058][414384.0.803580056][0.0.0][414384.0.803580057][414384.0.803580059]'
+  BaseType: Object
+  Description: '骞村害浜ч攢棰勭畻鏁版嵁'
+  StructuredName: 'MappingCapacityAndSaleBudges'
+}
diff --git a/_Main/BL/Type_PRData/Attribute_AuthorizationStatus.qbl b/_Main/BL/Type_PRData/Attribute_AuthorizationStatus.qbl
new file mode 100644
index 0000000..a1befa1
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_AuthorizationStatus.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizationStatus
+{
+  #keys: '3[414384.0.795671423][414384.0.795671422][414384.0.795671424]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_BusinessType.qbl b/_Main/BL/Type_PRData/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..c1509bf
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.789498492][414384.0.789498491][414384.0.789498493]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_DataID.qbl b/_Main/BL/Type_PRData/Attribute_DataID.qbl
new file mode 100644
index 0000000..0de934b
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_DataID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DataID
+{
+  #keys: '3[414384.0.795671476][414384.0.795671475][414384.0.795671477]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_DeliverToRequestorId.qbl b/_Main/BL/Type_PRData/Attribute_DeliverToRequestorId.qbl
new file mode 100644
index 0000000..c527860
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_DeliverToRequestorId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DeliverToRequestorId
+{
+  #keys: '3[414384.0.795671441][414384.0.795671440][414384.0.795671442]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_DestinationOrganizationId.qbl b/_Main/BL/Type_PRData/Attribute_DestinationOrganizationId.qbl
new file mode 100644
index 0000000..7dcd205
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_DestinationOrganizationId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DestinationOrganizationID
+{
+  #keys: '3[414384.0.795671438][414384.0.795671437][414384.0.795671439]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_DestinationTypeCode.qbl b/_Main/BL/Type_PRData/Attribute_DestinationTypeCode.qbl
new file mode 100644
index 0000000..757b0fc
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_DestinationTypeCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DestinationTypeCode
+{
+  #keys: '3[414384.0.795671417][414384.0.795671416][414384.0.795671418]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_HeaderDescription.qbl b/_Main/BL/Type_PRData/Attribute_HeaderDescription.qbl
new file mode 100644
index 0000000..f8359f5
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_HeaderDescription.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute HeaderDescription
+{
+  #keys: '3[414384.0.795671429][414384.0.795671428][414384.0.795671430]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_InterfaceSourceCode.qbl b/_Main/BL/Type_PRData/Attribute_InterfaceSourceCode.qbl
new file mode 100644
index 0000000..1eed5aa
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_InterfaceSourceCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InterfaceSourceCode
+{
+  #keys: '3[414384.0.795671486][414384.0.795671485][414384.0.795671487]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_LineAttribute1.qbl b/_Main/BL/Type_PRData/Attribute_LineAttribute1.qbl
new file mode 100644
index 0000000..cedff75
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_LineAttribute1.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAttribute1
+{
+  #keys: '3[414384.0.795671444][414384.0.795671443][414384.0.795671445]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_LineAttribute6.qbl b/_Main/BL/Type_PRData/Attribute_LineAttribute6.qbl
new file mode 100644
index 0000000..aafdd40
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_LineAttribute6.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAttribute6
+{
+  #keys: '3[414384.0.795671447][414384.0.795671446][414384.0.795671448]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_LineType.qbl b/_Main/BL/Type_PRData/Attribute_LineType.qbl
new file mode 100644
index 0000000..4eda40a
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_LineType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineType
+{
+  #keys: '3[414384.0.795671435][414384.0.795671434][414384.0.795671436]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_LineTypeId.qbl b/_Main/BL/Type_PRData/Attribute_LineTypeId.qbl
new file mode 100644
index 0000000..3711238
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_LineTypeId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineTypeId
+{
+  #keys: '3[414384.0.795671432][414384.0.795671431][414384.0.795671433]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_MRPCalverNo.qbl b/_Main/BL/Type_PRData/Attribute_MRPCalverNo.qbl
new file mode 100644
index 0000000..290c6c0
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_MRPCalverNo.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MRPCalverNo
+{
+  #keys: '3[414384.0.789498489][414384.0.789498488][414384.0.789498490]'
+  Description: 'MRP璁$畻鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_OrgId.qbl b/_Main/BL/Type_PRData/Attribute_OrgId.qbl
new file mode 100644
index 0000000..6df4f12
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_OrgId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgId
+{
+  #keys: '3[414384.0.795671450][414384.0.795671449][414384.0.795671451]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_OrganCode.qbl b/_Main/BL/Type_PRData/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..53ee057
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_OrganCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+  #keys: '3[414384.0.789498495][414384.0.789498494][414384.0.789498496]'
+  Description: '缁勭粐缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_PRSuggestionDate.qbl b/_Main/BL/Type_PRData/Attribute_PRSuggestionDate.qbl
new file mode 100644
index 0000000..2400d4d
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_PRSuggestionDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PRSuggestionDate
+{
+  #keys: '3[414384.0.789498483][414384.0.789498482][414384.0.789498484]'
+  Description: 'PR寤鸿鏃ユ湡'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PRData/Attribute_PlannerCode.qbl b/_Main/BL/Type_PRData/Attribute_PlannerCode.qbl
new file mode 100644
index 0000000..44030b3
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_PlannerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlannerCode
+{
+  #keys: '3[414384.0.789498510][414384.0.789498509][414384.0.789498511]'
+  Description: '鐗╂枡璁″垝鍛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_PreparerId.qbl b/_Main/BL/Type_PRData/Attribute_PreparerId.qbl
new file mode 100644
index 0000000..603c300
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_PreparerId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PreparerId
+{
+  #keys: '3[414384.0.795671426][414384.0.795671425][414384.0.795671427]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_ProduceRequiredDate.qbl b/_Main/BL/Type_PRData/Attribute_ProduceRequiredDate.qbl
new file mode 100644
index 0000000..20ef1b2
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_ProduceRequiredDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProduceRequiredDate
+{
+  #keys: '3[414384.0.789498480][414384.0.789498479][414384.0.789498481]'
+  Description: '闇�姹傛棩鏈�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PRData/Attribute_ProductID.qbl b/_Main/BL/Type_PRData/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ebd491e
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414384.0.789498474][414384.0.789498473][414384.0.789498475]'
+  Description: '闆朵欢鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_ProductName.qbl b/_Main/BL/Type_PRData/Attribute_ProductName.qbl
new file mode 100644
index 0000000..d9a9673
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_ProductName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductName
+{
+  #keys: '3[414384.0.789498477][414384.0.789498476][414384.0.789498478]'
+  Description: '闆朵欢鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_ProviderCode.qbl b/_Main/BL/Type_PRData/Attribute_ProviderCode.qbl
new file mode 100644
index 0000000..c4a960b
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_ProviderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderCode
+{
+  #keys: '3[414384.0.789498498][414384.0.789498497][414384.0.789498499]'
+  Description: '渚涘簲鍟嗕唬鐮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_ProviderName.qbl b/_Main/BL/Type_PRData/Attribute_ProviderName.qbl
new file mode 100644
index 0000000..a96e4e8
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_ProviderName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderName
+{
+  #keys: '3[414384.0.789498501][414384.0.789498500][414384.0.789498502]'
+  Description: '渚涘簲鍟嗗悕绉�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_Quantity.qbl b/_Main/BL/Type_PRData/Attribute_Quantity.qbl
new file mode 100644
index 0000000..93b2a40
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414384.0.789498486][414384.0.789498485][414384.0.789498487]'
+  Description: '闇�姹傛暟閲�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PRData/Attribute_RequisitionType.qbl b/_Main/BL/Type_PRData/Attribute_RequisitionType.qbl
new file mode 100644
index 0000000..f4b12e0
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_RequisitionType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RequisitionType
+{
+  #keys: '3[414384.0.796031490][414384.0.796031489][414384.0.796031491]'
+  Description: '璋冩帴鍙g敤'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_SendBy.qbl b/_Main/BL/Type_PRData/Attribute_SendBy.qbl
new file mode 100644
index 0000000..71a556e
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_SendBy.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendBy
+{
+  #keys: '3[414384.0.789498519][414384.0.789498518][414384.0.789498520]'
+  Description: '鍙戦�佷汉'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_SendStatus.qbl b/_Main/BL/Type_PRData/Attribute_SendStatus.qbl
new file mode 100644
index 0000000..7df5d57
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_SendStatus.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendStatus
+{
+  #keys: '3[414384.0.789498513][414384.0.789498512][414384.0.789498514]'
+  Description: 'PR鏁版嵁鍙戦�佺姸鎬�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_SendTIme.qbl b/_Main/BL/Type_PRData/Attribute_SendTIme.qbl
new file mode 100644
index 0000000..5a26118
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_SendTIme.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendTIme
+{
+  #keys: '3[414384.0.789498516][414384.0.789498515][414384.0.789498517]'
+  Description: '鍙戦�佹椂闂�'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_PRData/Attribute_StockingPointID.qbl b/_Main/BL/Type_PRData/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..7f33933
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_StockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414384.0.789498504][414384.0.789498503][414384.0.789498505]'
+  Description: '鏀惰揣搴撳瓨鐐�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_UnitOfMeasure.qbl b/_Main/BL/Type_PRData/Attribute_UnitOfMeasure.qbl
new file mode 100644
index 0000000..8f3b3c1
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_UnitOfMeasure.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasure
+{
+  #keys: '3[414384.0.789498507][414384.0.789498506][414384.0.789498508]'
+  Description: '璁¢噺鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRData/Attribute_UnitPrice.qbl b/_Main/BL/Type_PRData/Attribute_UnitPrice.qbl
new file mode 100644
index 0000000..b22e13d
--- /dev/null
+++ b/_Main/BL/Type_PRData/Attribute_UnitPrice.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitPrice
+{
+  #keys: '3[414384.0.795671420][414384.0.795671419][414384.0.795671421]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PRData/Method_DoCall.qbl b/_Main/BL/Type_PRData/Method_DoCall.qbl
new file mode 100644
index 0000000..9866803
--- /dev/null
+++ b/_Main/BL/Type_PRData/Method_DoCall.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+Method DoCall (
+  GlobalOTDTable globalData,
+  String callBy
+) as PRHistoryData
+{
+  Description: '璋冪敤'
+  TextBody:
+  [*
+    // yypsybs Sep-11-2023 (created)
+    result := globalData.PRHistoryData( relnew );
+    
+    // 鐓ф惉閮ㄥ垎
+    result.AuthorizationStatus( this.AuthorizationStatus() );
+    result.BusinessType( this.BusinessType() );
+    result.DataID( this.DataID() );
+    result.DeliverToRequestorId( this.DeliverToRequestorId() );
+    result.DestinationOrganizationID( this.DestinationOrganizationID() );
+    result.DestinationTypeCode( this.DestinationTypeCode() );
+    result.HeaderDescription( this.HeaderDescription() );
+    result.LineAttribute1( this.LineAttribute1() );
+    result.LineAttribute6( this.LineAttribute6() );
+    result.LineType( this.LineType() );
+    result.LineTypeId( this.LineTypeId() );
+    result.MRPCalverNo( this.MRPCalverNo() );
+    result.OrganCode( this.OrganCode() );
+    result.OrgId( this.OrgId() );
+    result.PlannerCode( this.PlannerCode() );
+    result.PreparerId( this.PreparerId() );
+    result.ProduceRequiredDate( this.ProduceRequiredDate() );
+    result.ProductID( this.ProductID() );
+    result.ProductName( this.ProductName() );
+    result.ProviderCode( this.ProviderCode() );
+    result.ProviderName( this.ProviderName() );
+    result.Quantity( this.Quantity() );
+    result.RequisitionType( this.RequisitionType() );
+    result.StockingPointID( this.StockingPointID() );
+    result.UnitOfMeasure( this.UnitOfMeasure() );
+    result.UnitPrice( this.UnitPrice() );
+    
+    // 璇锋眰閮ㄥ垎
+    request := ERPRequestOfPR::Create( result );
+    response := request.DoCall();
+    
+    // 鍝嶅簲閮ㄥ垎
+    result.ReceiveError( response.ErrorDescription() );
+    result.ReceiveStatus( response.Status() );
+    result.ReceiveTime( DateTime::Now() );
+    
+    // 涓昏褰曚慨鏀�
+    result.SendStatus( "T" );
+    result.ReleaseBy( callBy );
+    result.SendTime( DateTime::Now() );
+    this.SendStatus( "T" );
+    this.SendTIme( DateTime::Now() );
+    this.SendBy( callBy );
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_CanCall.qbl b/_Main/BL/Type_PRData/StaticMethod_CanCall.qbl
new file mode 100644
index 0000000..c2aae7d
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_CanCall.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CanCall (
+  PRDatas toCalls,
+  output String feedback_o
+) as Boolean
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    info( "CanCall " + [String]toCalls.Size() + " PRs" )
+    feedback_o := "";
+    if( toCalls.Size() = 0 ) {
+      feedback_o := "No checked PR";
+    } else {
+      havaUnsent := exists( toCalls, Elements, toCall, toCall.SendStatus() = "" );
+      if( not havaUnsent ) {
+        feedback_o := "No unsent PR";
+      }
+    }
+    return feedback_o = "";
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl b/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl
new file mode 100644
index 0000000..56222b2
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod DoCall (
+  GlobalOTDTable globalData,
+  PRDatas toCalls,
+  String callBy
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    info( "DoCall " + [String]toCalls.Size() + " PRs" );
+    nowNo := 1;
+    traverse( toCalls, Elements, toCall, toCall.SendStatus() = "" ) {
+      info ( "DoCall " + [String]nowNo + "/" + [String]toCalls.Size() + " PR" );
+      toCall.DoCall( globalData, callBy );  
+      nowNo := nowNo + 1;
+    }
+  *]
+}
diff --git "a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl" "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
new file mode 100644
index 0000000..a8478db
--- /dev/null
+++ "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
@@ -0,0 +1,75 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FromSupplyPlanning (
+  MacroPlan macroPlan,
+  MacroPlan mappingRoot,
+  ProductInStockingPointInPeriod pispip
+) as PRData
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    result := macroPlan.PRData( relnew );
+    result.InterfaceSourceCode( "Quintiq" );
+    
+    pisp := pispip.ProductInStockingPoint_MP();
+    product := pisp.Product_MP();
+    stockingPoint := pisp.StockingPoint_MP();
+    period := pispip.Period_MP();
+    mappingProduct := MappingProduct::GetByProductId( mappingRoot, product.ID() );
+    // 鎺ュ彛/涓棿琛ㄦ殏鏃�
+    mappingProviderCapacity := "鏆傛棤";
+    erpData := "鏆傛棤";
+    
+    // 鏍规嵁pispip
+    result.MRPCalverNo( pispip.MRPCalverNo() );
+    result.Quantity( pispip.NewSupplyQuantity() );
+    
+    // 鏍规嵁product
+    result.ProductID( product.ID() );
+    result.ProductName( product.Name() );
+    
+    // 鏍规嵁stockingPoint
+    result.StockingPointID( stockingPoint.ID() );
+    
+    // 鏍规嵁period
+    result.ProduceRequiredDate( period.StartDate() );
+    result.PRSuggestionDate( ifexpr( (result.ProduceRequiredDate() - Duration::Days( 7 )).Date() >= Date::Today(),
+                                     Date::Today(), (result.ProduceRequiredDate() - Duration::Days( 7 )).Date() ) );
+    
+    // 鏍规嵁product涓棿琛�
+    result.BusinessType( mappingProduct.BusinessType() );
+    result.OrganCode( mappingProduct.OrgCode() );
+    result.UnitOfMeasure( mappingProduct.UnitOfMeasureName() );
+    
+    // 鏍规嵁渚涘簲鍟嗚兘鍔涗腑闂磋〃
+    result.ProviderCode( mappingProviderCapacity );
+    result.ProductName( mappingProviderCapacity );
+    
+    // 鏍规嵁erp鎺ュ彛 鍥哄畾鍊�
+    result.RequisitionType( "PURCHASE" );
+    result.DestinationTypeCode( "INVENTORY" );
+    result.UnitPrice( 1.0 );
+    result.AuthorizationStatus( "INCOMPLETE" );
+    result.LineTypeId( "1" );
+    result.LineType( "璐х墿" );
+    // 鏍规嵁erp鎺ュ彛 todo
+    result.PreparerId( erpData );
+    result.HeaderDescription( erpData );
+    result.DestinationOrganizationID( erpData );
+    result.DeliverToRequestorId( erpData );
+    result.LineAttribute1( erpData );
+    result.LineAttribute6( erpData );
+    result.OrgId( erpData );
+    
+    // 鐢熸垚id todo
+    result.DataID( [String]Number::Random( Number::MinNumber(), Number::MaxNumber() ) );
+    
+    // 鍙戦�佷俊鎭�
+    result.SendStatus( "" );
+    result.SendBy( "" );
+    result.SendTIme( DateTime::MinDateTime() );
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
new file mode 100644
index 0000000..356fd18
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FromSupplyPlanning (
+  MacroPlan macroPlan,
+  MacroPlan mappingRoot,
+  String mrpCalverNo
+)
+{
+  Description:
+  [*
+    SupplyPlanning杞琍RData
+    todo 淇敼mappingRoot涓篗PSync
+  *]
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    // 鎸塎RPCalverNo鏌ワ紝宸叉湁鏃ц褰曟椂涓嶅鐞�
+    oldRecords := selectset( macroPlan, PRData, item,
+                             item.MRPCalverNo() = mrpCalverNo );
+    if( isnull( oldRecords ) or oldRecords.Size() = 0 ) {
+      pispips := ProductInStockingPointInPeriod::GetByMRPCalverNo( macroPlan, mrpCalverNo );
+      traverse( pispips, Elements, item ) {
+        PRData::FromSupplyPlanning( macroPlan, mappingRoot, item );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_ProductIdOver14Days.qbl b/_Main/BL/Type_PRData/StaticMethod_ProductIdOver14Days.qbl
new file mode 100644
index 0000000..07623b4
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_ProductIdOver14Days.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ProductIdOver14Days (
+  PRDatas toChecks
+) as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    result := "";
+    
+    productIds := selectuniquevalues( toChecks, Elements, item, 
+                                      (item.ProduceRequiredDate() - Duration::Days( 14 )).Date() > Date::Today() and item.SendStatus() = "", 
+                                      item.ProductID() ); 
+    productIds := selectsortedset( productIds, Elements, item, item );
+    
+    if( productIds.Size() > 0 ) {
+      result := result + productIds.Element( 0 );
+      for( i := 1; i < productIds.Size(); i := i + 1 ) {
+        result := result + ",";
+        result := result + productIds.Element( 0 );
+      }
+    }
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_PRData/StaticMethod_TestData.qbl b/_Main/BL/Type_PRData/StaticMethod_TestData.qbl
new file mode 100644
index 0000000..c70fa0d
--- /dev/null
+++ b/_Main/BL/Type_PRData/StaticMethod_TestData.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod TestData (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    if( selectset( macroPlan, PRData, item, true ).Size() = 0 ) {
+      info( "======== Create PR Test Data ========" );
+      for( i := 0; i < 100; i := i + 1 ) {
+        macroPlan.PRData( relnew,
+                          MRPCalverNo := [String]Number::Random( 1, Number::MaxNumber() ),
+                          BusinessType := [String]Number::Random( 1, Number::MaxNumber() ),
+                          OrganCode := [String]Number::Random( 1, Number::MaxNumber() ),
+                          ProductID := [String]Number::Random( 1, Number::MaxNumber() ),
+                          StockingPointID := [String]Number::Random( 1, Number::MaxNumber() ),
+                          Quantity := Number::Random( 1, Number::MaxNumber() ),
+                          ProduceRequiredDate := Date::Construct( 2023,
+                                                                  Number::Random( 9, 12 ),
+                                                                  Number::Random( 13, 28 ) ),
+                          DataID := [String]Number::Random( 1, Number::MaxNumber() ), 
+                          SendStatus := ifexpr( Number::Random( 1, 5 ) = 1, "T", "" ) );     
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PRData/_ROOT_Type_PRData.qbl b/_Main/BL/Type_PRData/_ROOT_Type_PRData.qbl
new file mode 100644
index 0000000..0604c1c
--- /dev/null
+++ b/_Main/BL/Type_PRData/_ROOT_Type_PRData.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PRData
+{
+  #keys: '5[414384.0.787890167][414384.0.787890165][0.0.0][414384.0.787890166][414384.0.787890168]'
+  BaseType: Object
+  Description: 'PR鏁版嵁'
+  StructuredName: 'PRDatas'
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_AuthorizationStatus.qbl b/_Main/BL/Type_PRHistoryData/Attribute_AuthorizationStatus.qbl
new file mode 100644
index 0000000..46f1680
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_AuthorizationStatus.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizationStatus
+{
+  #keys: '3[414384.0.796031550][414384.0.796031549][414384.0.796031551]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_BusinessType.qbl b/_Main/BL/Type_PRHistoryData/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..467ca3b
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.789498626][414384.0.789498625][414384.0.789498627]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_DataID.qbl b/_Main/BL/Type_PRHistoryData/Attribute_DataID.qbl
new file mode 100644
index 0000000..29cc2c1
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_DataID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DataID
+{
+  #keys: '3[414384.0.795671680][414384.0.795671679][414384.0.795671681]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_DeliverToRequestorId.qbl b/_Main/BL/Type_PRHistoryData/Attribute_DeliverToRequestorId.qbl
new file mode 100644
index 0000000..cb6715a
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_DeliverToRequestorId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DeliverToRequestorId
+{
+  #keys: '3[414384.0.795671590][414384.0.795671589][414384.0.795671591]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_DestinationOrganizationID.qbl b/_Main/BL/Type_PRHistoryData/Attribute_DestinationOrganizationID.qbl
new file mode 100644
index 0000000..59de4d5
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_DestinationOrganizationID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DestinationOrganizationID
+{
+  #keys: '3[414384.0.795671654][414384.0.795671653][414384.0.795671655]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_DestinationTypeCode.qbl b/_Main/BL/Type_PRHistoryData/Attribute_DestinationTypeCode.qbl
new file mode 100644
index 0000000..8164d21
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_DestinationTypeCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DestinationTypeCode
+{
+  #keys: '3[414384.0.795671530][414384.0.795671529][414384.0.795671531]'
+  ValueType: String
+}
diff --git "a/_Main/BL/Type_PRHistoryData/Attribute_HeaderDescription\04316.qbl" "b/_Main/BL/Type_PRHistoryData/Attribute_HeaderDescription\04316.qbl"
new file mode 100644
index 0000000..bb64aa6
--- /dev/null
+++ "b/_Main/BL/Type_PRHistoryData/Attribute_HeaderDescription\04316.qbl"
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute HeaderDescription
+{
+  #keys: '3[414384.0.796031566][414384.0.796031565][414384.0.796031567]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute1.qbl b/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute1.qbl
new file mode 100644
index 0000000..507ffef
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute1.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAttribute1
+{
+  #keys: '3[414384.0.795671611][414384.0.795671610][414384.0.795671612]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute6.qbl b/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute6.qbl
new file mode 100644
index 0000000..27ce9eb
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_LineAttribute6.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAttribute6
+{
+  #keys: '3[414384.0.795671621][414384.0.795671620][414384.0.795671622]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_LineType.qbl b/_Main/BL/Type_PRHistoryData/Attribute_LineType.qbl
new file mode 100644
index 0000000..e70d6d4
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_LineType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineType
+{
+  #keys: '3[414384.0.795671560][414384.0.795671559][414384.0.795671561]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_LineTypeId.qbl b/_Main/BL/Type_PRHistoryData/Attribute_LineTypeId.qbl
new file mode 100644
index 0000000..32f83d7
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_LineTypeId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineTypeId
+{
+  #keys: '3[414384.0.795671550][414384.0.795671549][414384.0.795671551]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_MRPCalverNo.qbl b/_Main/BL/Type_PRHistoryData/Attribute_MRPCalverNo.qbl
new file mode 100644
index 0000000..561232d
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_MRPCalverNo.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MRPCalverNo
+{
+  #keys: '3[414384.0.787890315][414384.0.787890314][414384.0.787890316]'
+  Description: 'MRP璁$畻鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_OrgId.qbl b/_Main/BL/Type_PRHistoryData/Attribute_OrgId.qbl
new file mode 100644
index 0000000..fe8ebbd
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_OrgId.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgId
+{
+  #keys: '3[414384.0.795671631][414384.0.795671630][414384.0.795671632]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_OrganCode.qbl b/_Main/BL/Type_PRHistoryData/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..0e79f9a
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_OrganCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+  #keys: '3[414384.0.787890338][414384.0.787890337][414384.0.787890339]'
+  Description: '缁勭粐缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_PRDataReleaseDate.qbl b/_Main/BL/Type_PRHistoryData/Attribute_PRDataReleaseDate.qbl
new file mode 100644
index 0000000..38c2d63
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_PRDataReleaseDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PRDataReleaseDate
+{
+  #keys: '3[414384.0.789526135][414384.0.789526134][414384.0.789526136]'
+  Description: 'PR鏁版嵁鎺ㄩ�佹棩鏈�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_PlannerCode.qbl b/_Main/BL/Type_PRHistoryData/Attribute_PlannerCode.qbl
new file mode 100644
index 0000000..9d920b3
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_PlannerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlannerCode
+{
+  #keys: '3[414384.0.787890388][414384.0.787890387][414384.0.787890389]'
+  Description: '鐗╂枡璁″垝鍛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_PreparerID.qbl b/_Main/BL/Type_PRHistoryData/Attribute_PreparerID.qbl
new file mode 100644
index 0000000..02d0158
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_PreparerID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PreparerID
+{
+  #keys: '3[414384.0.789498615][414384.0.789498614][414384.0.789498616]'
+  ValueType: String
+}
diff --git "a/_Main/BL/Type_PRHistoryData/Attribute_PreparerId\043603.qbl" "b/_Main/BL/Type_PRHistoryData/Attribute_PreparerId\043603.qbl"
new file mode 100644
index 0000000..f668e7c
--- /dev/null
+++ "b/_Main/BL/Type_PRHistoryData/Attribute_PreparerId\043603.qbl"
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PreparerId
+{
+  #keys: '3[414384.0.795671570][414384.0.795671569][414384.0.795671571]'
+  ValueType: String
+}
diff --git "a/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl" "b/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl"
new file mode 100644
index 0000000..606d8a6
--- /dev/null
+++ "b/_Main/BL/Type_PRHistoryData/Attribute_ProduceRequiredDate\043168.qbl"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProduceRequiredDate
+{
+  #keys: '3[414384.0.795671764][414384.0.795671763][414384.0.795671765]'
+  Description: '闇�姹傛棩鏈�'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ProductID.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ProductID.qbl
new file mode 100644
index 0000000..96da3cd
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414384.0.787890275][414384.0.787890274][414384.0.787890276]'
+  Description: '闆朵欢鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ProductName.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ProductName.qbl
new file mode 100644
index 0000000..d522a2b
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ProductName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductName
+{
+  #keys: '3[414384.0.787890295][414384.0.787890294][414384.0.787890296]'
+  Description: '闆朵欢鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ProviderCode.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ProviderCode.qbl
new file mode 100644
index 0000000..e862168
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ProviderCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderCode
+{
+  #keys: '3[414384.0.787890348][414384.0.787890347][414384.0.787890349]'
+  Description: '渚涘簲鍟嗕唬鐮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ProviderName.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ProviderName.qbl
new file mode 100644
index 0000000..13a8746
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ProviderName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProviderName
+{
+  #keys: '3[414384.0.787890358][414384.0.787890357][414384.0.787890359]'
+  Description: '渚涘簲鍟嗗悕绉�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_Quantity.qbl b/_Main/BL/Type_PRHistoryData/Attribute_Quantity.qbl
new file mode 100644
index 0000000..7684ede
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414384.0.787890305][414384.0.787890304][414384.0.787890306]'
+  Description: '闇�姹傛暟閲�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ReceiveError.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveError.qbl
new file mode 100644
index 0000000..810ac04
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveError.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReceiveError
+{
+  #keys: '3[414384.0.787890454][414384.0.787890453][414384.0.787890455]'
+  Description: '閿欒鎻忚堪'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ReceiveStatus.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveStatus.qbl
new file mode 100644
index 0000000..85ef635
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveStatus.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReceiveStatus
+{
+  #keys: '3[414384.0.787890428][414384.0.787890427][414384.0.787890429]'
+  Description:
+  [*
+    ERP鎺ユ敹鐘舵��
+    S鎴愬姛锛孍澶辫触
+  *]
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTime.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTime.qbl
new file mode 100644
index 0000000..d820c53
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ReceiveTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReceiveTime
+{
+  #keys: '3[414384.0.787890438][414384.0.787890437][414384.0.787890439]'
+  Description: '鎺ユ敹鏃堕棿'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_ReleaseBy.qbl b/_Main/BL/Type_PRHistoryData/Attribute_ReleaseBy.qbl
new file mode 100644
index 0000000..d4f768d
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_ReleaseBy.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReleaseBy
+{
+  #keys: '3[414384.0.787890418][414384.0.787890417][414384.0.787890419]'
+  Description: '閲婃斁浜�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_RequisitionType.qbl b/_Main/BL/Type_PRHistoryData/Attribute_RequisitionType.qbl
new file mode 100644
index 0000000..02e9c30
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_RequisitionType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RequisitionType
+{
+  #keys: '3[414384.0.795671520][414384.0.795671519][414384.0.795671521]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_SendStatus.qbl b/_Main/BL/Type_PRHistoryData/Attribute_SendStatus.qbl
new file mode 100644
index 0000000..79e1a3f
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_SendStatus.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendStatus
+{
+  #keys: '3[414384.0.787890398][414384.0.787890397][414384.0.787890399]'
+  Description: '鍙戦�佺姸鎬�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_SendTime.qbl b/_Main/BL/Type_PRHistoryData/Attribute_SendTime.qbl
new file mode 100644
index 0000000..b6c92d6
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_SendTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SendTime
+{
+  #keys: '3[414384.0.787890408][414384.0.787890407][414384.0.787890409]'
+  Description: '鍙戦�佹椂闂�'
+  ValueType: DateTime
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_StockingPointID.qbl b/_Main/BL/Type_PRHistoryData/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..6008681
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_StockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414384.0.787890368][414384.0.787890367][414384.0.787890369]'
+  Description: '鏀惰揣搴撳瓨鐐�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_UnitOfMeasure.qbl b/_Main/BL/Type_PRHistoryData/Attribute_UnitOfMeasure.qbl
new file mode 100644
index 0000000..57d63d8
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_UnitOfMeasure.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasure
+{
+  #keys: '3[414384.0.787890378][414384.0.787890377][414384.0.787890379]'
+  Description: '璁¢噺鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PRHistoryData/Attribute_UnitPrice.qbl b/_Main/BL/Type_PRHistoryData/Attribute_UnitPrice.qbl
new file mode 100644
index 0000000..06961cf
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Attribute_UnitPrice.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitPrice
+{
+  #keys: '3[414384.0.795671540][414384.0.795671539][414384.0.795671541]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PRHistoryData/DefaultValue_BusinessType.qbl b/_Main/BL/Type_PRHistoryData/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_PRHistoryData/Method_Recall.qbl b/_Main/BL/Type_PRHistoryData/Method_Recall.qbl
new file mode 100644
index 0000000..065fdb0
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/Method_Recall.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+Method ReCall (
+  String callBy
+) as PRHistoryData
+{
+  Description: '閲嶈皟'
+  TextBody:
+  [*
+    // yypsybs Sep-11-2023 (created)
+    result := this.GlobalOTDTable().PRHistoryData( relcopy, this );
+    
+    // 鏇存柊閮ㄥ垎
+    result.PRDataReleaseDate( Date::Today() );
+    result.ReleaseBy( callBy );
+    result.SendTime( DateTime::Now() );
+    
+    // 璇锋眰
+    request := ERPRequestOfPR::Create( result );
+    response := request.DoCall();
+    
+    // 鍝嶅簲閮ㄥ垎
+    result.ReceiveError( response.ErrorDescription() );
+    result.ReceiveStatus( response.Status() );
+    result.ReceiveTime( DateTime::Now() );
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/StaticMethod_ProductIdOver14Days.qbl b/_Main/BL/Type_PRHistoryData/StaticMethod_ProductIdOver14Days.qbl
new file mode 100644
index 0000000..5733d45
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/StaticMethod_ProductIdOver14Days.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ProductIdOver14Days (
+  PRHistoryDatas toChecks
+) as String
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    result := "";
+    
+    productIds := selectuniquevalues( toChecks, Elements, item, 
+                                      (item.ProduceRequiredDate() - Duration::Days( 14 )).Date() > Date::Today() and item.SendStatus() = "", 
+                                      item.ProductID() ); 
+    productIds := selectsortedset( productIds, Elements, item, item );
+    
+    if( productIds.Size() > 0 ) {
+      result := result + productIds.Element( 0 );
+      for( i := 1; i < productIds.Size(); i := i + 1 ) {
+        result := result + ",";
+        result := result + productIds.Element( 0 );
+      }
+    }
+    
+    return result;
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/StaticMethod_ReCall.qbl b/_Main/BL/Type_PRHistoryData/StaticMethod_ReCall.qbl
new file mode 100644
index 0000000..6a89dcc
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/StaticMethod_ReCall.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReCall (
+  PRHistoryDatas toCalls,
+  String callBy
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    traverse( toCalls, Elements, toCall ) {
+      toCall.ReCall( callBy );  
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PRHistoryData/_ROOT_Type_PRHistoryData.qbl b/_Main/BL/Type_PRHistoryData/_ROOT_Type_PRHistoryData.qbl
new file mode 100644
index 0000000..c1e9e83
--- /dev/null
+++ b/_Main/BL/Type_PRHistoryData/_ROOT_Type_PRHistoryData.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PRHistoryData
+{
+  #keys: '5[414384.0.787890172][414384.0.787890170][0.0.0][414384.0.787890171][414384.0.787890173]'
+  BaseType: Object
+  Description: '鍘嗗彶PR鏁版嵁'
+  StructuredName: 'PRHistoryDatas'
+}
diff --git a/_Main/BL/Type_PriorityFactor/Attribute_BusinessType.qbl b/_Main/BL/Type_PriorityFactor/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..8aac689
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.456067060][414382.0.456067059][414382.0.456067061]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactor/Attribute_Desc.qbl b/_Main/BL/Type_PriorityFactor/Attribute_Desc.qbl
new file mode 100644
index 0000000..bb97070
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/Attribute_Desc.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Desc
+{
+  #keys: '3[414382.0.440655066][414382.0.440655065][414382.0.440655067]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactor/Attribute_Name.qbl b/_Main/BL/Type_PriorityFactor/Attribute_Name.qbl
new file mode 100644
index 0000000..80792db
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414382.0.440655046][414382.0.440655045][414382.0.440655047]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactor/Attribute_coefficient.qbl b/_Main/BL/Type_PriorityFactor/Attribute_coefficient.qbl
new file mode 100644
index 0000000..732396f
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/Attribute_coefficient.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute coefficient
+{
+  #keys: '3[414382.0.456067070][414382.0.456067069][414382.0.456067071]'
+  Description: '浼樺厛鍥犲瓙绯绘暟'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PriorityFactor/StaticMethod_GetDataByBusinessType.qbl b/_Main/BL/Type_PriorityFactor/StaticMethod_GetDataByBusinessType.qbl
new file mode 100644
index 0000000..128d2cc
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/StaticMethod_GetDataByBusinessType.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDataByBusinessType (
+  GlobalOTDTable owner,
+  String businessType
+) as owning PriorityFactors
+{
+  TextBody:
+  [*
+    // NBoTk Sep-18-2023 (created)
+    
+    list := selectset( owner,PriorityFactor,p,
+                       p.BusinessType() = businessType
+                       );
+    info("list size :"  + [String]list.Size());
+    return &list;
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactor/StaticMethod_InitData.qbl b/_Main/BL/Type_PriorityFactor/StaticMethod_InitData.qbl
new file mode 100644
index 0000000..45688a6
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/StaticMethod_InitData.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod InitData (
+  GlobalOTDTable owner
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-15-2023 (created)
+    
+    info(" init PriorutyFactor");
+    
+    // businessType
+    // result := "闆嗗洟闈㈡澘;涓撲笟鏄剧ず浜嬩笟閮�;澶栧崠CELL;闈炴樉;杩愬姩鍋ュ悍;杩愬姩鍋ュ悍浜嬩笟閮�;鎵嬫満浜嬩笟閮�;鐗圭鏄剧ず;姹借溅鐢靛瓙浜嬩笟閮�;杞﹁浇鏄剧ず浜嬩笟閮�;IT浜嬩笟閮�";
+    businessTypeList := construct( structured[String]);
+    businessTypeList.Add( "闆嗗洟闈㈡澘");
+    businessTypeList.Add( "涓撲笟鏄剧ず浜嬩笟閮�");
+    businessTypeList.Add( "澶栧崠CELL");
+    businessTypeList.Add( "闈炴樉");
+    businessTypeList.Add( "杩愬姩鍋ュ悍");
+    businessTypeList.Add( "杩愬姩鍋ュ悍浜嬩笟閮�");
+    businessTypeList.Add( "鎵嬫満浜嬩笟閮ㄩ潰鏉�");
+    businessTypeList.Add( "鐗圭鏄剧ず");
+    businessTypeList.Add( "姹借溅鐢靛瓙浜嬩笟閮ㄩ潰鏉�");
+    businessTypeList.Add( "杞﹁浇鏄剧ず浜嬩笟閮�");
+    businessTypeList.Add( "IT浜嬩笟閮�");
+    
+    traverse( businessTypeList,Elements,b)
+    {
+        owner.PriorityFactor(relnew,Name := "瀹㈡埛绛栫暐" ,Desc := "灏嗕簨涓氶儴璁$畻鐨勪紭鍏堢骇锛屾寜璇ョ粏鍒嗛」姣斾緥闃舵纭畾璇ラ」寰楀垎銆傚锛�81%鈮鈮�100% 5鍒嗭紝61%鈮鈮�80% 4鍒�", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "瀹㈡埛绛夌骇" ,Desc := "鏍规嵁闇�姹傛暟鎹腑瀹㈡埛锛屽尮閰嶅鎴风瓑绾�",BusinessType := b);
+        owner.PriorityFactor(relnew,Name := "澶у紶鐩堝埄姘村钩" ,Desc := "1銆佽幏鍙栧鎴�*SKU澶у紶鐩堝埄鏁� 2銆佸畾涔夊鎴�*SKU澶у紶鐩堝埄鏁伴樁姊緱鍒� 3銆佸尮閰嶉渶姹傛暟鎹腑瀹㈡埛鍙奡KU鏁版嵁锛屽緱鍒板搴旈樁姊緱鍒�", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "缁嗗垎甯傚満绛夌骇" ,Desc := "1銆佽幏鍙栧鎴�*SKU瀵瑰簲缁嗗垎甯傚満绛夌骇 2銆佸尮閰嶉渶姹傛暟鎹腑瀹㈡埛鍙奡KU瀵瑰簲缁嗗垎甯傚満璇勫垎绛夌骇锛屽緱鍒板搴旈樁姊緱鍒�", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "闇�姹傜被鍨�" ,Desc := "鍖归厤涓嶅悓闇�姹傜绫伙紝寰楀埌瀵瑰簲寰楀垎", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "璁㈠崟涓嬪崟鏃堕棿" ,Desc := "鏍规嵁闇�姹傝鍗曚腑涓嬪崟鏃堕棿涓庨渶姹傛椂闂村樊鍊硷紝鍖归厤闃舵寰楀垎", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "浜у搧绛夌骇" ,Desc := "1銆佽幏鍙栧鎴�*SKU DOI&DSI鏁� 2銆佸畾涔夊鎴�*SKUDOI&DSI鏁伴樁姊緱鍒� 3銆佸尮閰嶉渶姹傛暟鎹腑瀹㈡埛鍙奡KU鏁版嵁锛屽緱鍒板搴旈樁姊緱鍒�", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "DOI" ,Desc := "1銆佽幏鍙栧鎴�*SKU DOI&DSI鏁� 2銆佸畾涔夊鎴�*SKUDOI&DSI鏁伴樁姊緱鍒� 3銆佸尮閰嶉渶姹傛暟鎹腑瀹㈡埛鍙奡KU鏁版嵁锛屽緱鍒板搴旈樁姊緱鍒�", BusinessType := b );
+        owner.PriorityFactor(relnew,Name := "DSI" ,Desc := "1銆佽幏鍙栧鎴�*SKU DOI&DSI鏁� 2銆佸畾涔夊鎴�*SKUDOI&DSI鏁伴樁姊緱鍒� 3銆佸尮閰嶉渶姹傛暟鎹腑瀹㈡埛鍙奡KU鏁版嵁锛屽緱鍒板搴旈樁姊緱鍒�", BusinessType := b );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactor/_ROOT_Type_PriorityFactor.qbl b/_Main/BL/Type_PriorityFactor/_ROOT_Type_PriorityFactor.qbl
new file mode 100644
index 0000000..fcac9ad
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactor/_ROOT_Type_PriorityFactor.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PriorityFactor
+{
+  #keys: '5[414382.0.440655008][414382.0.440655006][0.0.0][414382.0.440655007][414382.0.440655009]'
+  BaseType: Object
+  StructuredName: 'PriorityFactors'
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_BusinessType.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..ec15488
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414382.0.444830097][414382.0.444830096][414382.0.444830098]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeTarget.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeTarget.qbl
new file mode 100644
index 0000000..9ae65b9
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeTarget.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GradeTarget
+{
+  #keys: '3[414382.0.440655126][414382.0.440655125][414382.0.440655127]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeValueStr.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeValueStr.qbl
new file mode 100644
index 0000000..e84d510
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradeValueStr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GradeValueStr
+{
+  #keys: '3[414382.0.440655139][414382.0.440655138][414382.0.440655140]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_GradingName.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradingName.qbl
new file mode 100644
index 0000000..e38eb27
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_GradingName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GradingName
+{
+  #keys: '3[414382.0.440655086][414382.0.440655085][414382.0.440655087]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_GroupName.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_GroupName.qbl
new file mode 100644
index 0000000..7dc0270
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_GroupName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute GroupName
+{
+  #keys: '3[414382.0.444830133][414382.0.444830132][414382.0.444830134]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_IsBusinessType.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_IsBusinessType.qbl
new file mode 100644
index 0000000..b5b33ba
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_IsBusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsBusinessType
+{
+  #keys: '3[414382.0.444830107][414382.0.444830106][414382.0.444830108]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_IsRange.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_IsRange.qbl
new file mode 100644
index 0000000..8b4b84c
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_IsRange.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsRange
+{
+  #keys: '3[414382.0.440655096][414382.0.440655095][414382.0.440655097]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorDesc.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorDesc.qbl
new file mode 100644
index 0000000..265d712
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorDesc.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityFactorDesc
+{
+  #keys: '3[414382.0.452050072][414382.0.452050071][414382.0.452050073]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorName.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorName.qbl
new file mode 100644
index 0000000..6d4a629
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_PriorityFactorName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityFactorName
+{
+  #keys: '3[414382.0.444830222][414382.0.444830221][414382.0.444830223]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMax.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMax.qbl
new file mode 100644
index 0000000..4193c14
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMax.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RangeMax
+{
+  #keys: '3[414382.0.440655106][414382.0.440655105][414382.0.440655107]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMin.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMin.qbl
new file mode 100644
index 0000000..1af51cb
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_RangeMin.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RangeMin
+{
+  #keys: '3[414382.0.440655116][414382.0.440655115][414382.0.440655117]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Attribute_coefficient.qbl b/_Main/BL/Type_PriorityFactorDetails/Attribute_coefficient.qbl
new file mode 100644
index 0000000..e23d822
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Attribute_coefficient.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute coefficient
+{
+  #keys: '3[414382.0.444850041][414382.0.444850040][414382.0.444850042]'
+  Description: '浼樺厛鍥犲瓙绯绘暟'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Function_CalcGradeValueStr.qbl b/_Main/BL/Type_PriorityFactorDetails/Function_CalcGradeValueStr.qbl
new file mode 100644
index 0000000..b002f55
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Function_CalcGradeValueStr.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcGradeValueStr
+{
+  TextBody:
+  [*
+    // NBoTk Sep-18-2023 (created)
+    
+    
+    value := [String]this.GradeTarget();
+    
+    if(this.IsRange())
+    {
+        value := [String]this.RangeMin() + "~" + [String]this.RangeMax();
+    } 
+    
+    this.GradeValueStr( value );
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/Function_CalcIsBusinessType.qbl b/_Main/BL/Type_PriorityFactorDetails/Function_CalcIsBusinessType.qbl
new file mode 100644
index 0000000..96a9f70
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/Function_CalcIsBusinessType.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIsBusinessType
+{
+  TextBody:
+  [*
+    // NBoTk Sep-17-2023 (created)
+    
+    value := true;
+    
+    if( this.GroupName() <> "" )
+    {
+        value := false;
+    }
+    
+    this.IsBusinessType( value );
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_ClearTestData.qbl b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_ClearTestData.qbl
new file mode 100644
index 0000000..7df229b
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_ClearTestData.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ClearTestData (
+  GlobalOTDTable owner
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-18-2023 (created)
+    
+    info(1111 );
+    owner.PriorityFactorDetails(relflush );
+    info(2222);
+    owner.PriorityFactor(relflush );
+    info(3333 );
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_CreateTestData.qbl b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_CreateTestData.qbl
new file mode 100644
index 0000000..1c95944
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_CreateTestData.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateTestData (
+  GlobalOTDTable owner
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-18-2023 (created)
+    
+    info( "init data" );
+    PriorityFactor::InitData( owner);
+    PriorityFactorDetails::InitData( owner);
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_GetDataByBusinessType.qbl b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_GetDataByBusinessType.qbl
new file mode 100644
index 0000000..3b64a2a
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_GetDataByBusinessType.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDataByBusinessType (
+  GlobalOTDTable owner,
+  String businessType
+) as owning PriorityFactorDetailss
+{
+  TextBody:
+  [*
+    // NBoTk Sep-18-2023 (created)
+    
+    list := selectset( owner,PriorityFactorDetails,p,
+                       p.BusinessType() = businessType
+                       );
+    info("list size :"  + [String]list.Size());
+    return &list;
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl
new file mode 100644
index 0000000..4ecde5e
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod InitData (
+  GlobalOTDTable owner
+)
+{
+  TextBody:
+  [*
+    // NBoTk Sep-17-2023 (created)
+    
+    info(" init PriorutyFactorDetails" );
+    
+    
+    
+    traverse( owner, PriorityFactor , p)
+    {
+        isBusinessType := false;
+        if( p.BusinessType() <> "闆嗗洟闈㈡澘" )
+        {
+            isBusinessType := true;
+        }
+      
+        owner.PriorityFactorDetails(relnew,BusinessType := p.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
+                                     IsRange := false,GradingName := "澶х泩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := p.Name());
+        owner.PriorityFactorDetails(relnew,BusinessType := p.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
+                                     IsRange := false,GradingName := "灏忕泩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := p.Name());
+        owner.PriorityFactorDetails(relnew,BusinessType := p.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 0,
+                                     IsRange := false,GradingName := "鎸佸钩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := p.Name());
+        owner.PriorityFactorDetails(relnew,BusinessType := p.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -3,
+                                     IsRange := false,GradingName := "灏忎簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := p.Name());
+        owner.PriorityFactorDetails(relnew,BusinessType := p.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -5,
+                                     IsRange := false,GradingName := "澶т簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := p.Name());
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PriorityFactorDetails/_ROOT_Type_PriorityFactorDetails.qbl b/_Main/BL/Type_PriorityFactorDetails/_ROOT_Type_PriorityFactorDetails.qbl
new file mode 100644
index 0000000..7c4a1f4
--- /dev/null
+++ b/_Main/BL/Type_PriorityFactorDetails/_ROOT_Type_PriorityFactorDetails.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PriorityFactorDetails
+{
+  #keys: '5[414382.0.440655013][414382.0.440655011][0.0.0][414382.0.440655012][414382.0.440655014]'
+  BaseType: Object
+  StructuredName: 'PriorityFactorDetailss'
+}
diff --git a/_Main/BL/Type_ProductInStockingPointInPeriod/Attribute_mrpCalverNo.qbl b/_Main/BL/Type_ProductInStockingPointInPeriod/Attribute_mrpCalverNo.qbl
new file mode 100644
index 0000000..772e248
--- /dev/null
+++ b/_Main/BL/Type_ProductInStockingPointInPeriod/Attribute_mrpCalverNo.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MRPCalverNo
+{
+  #keys: '3[414384.0.796031432][414384.0.796031431][414384.0.796031433]'
+  Description: 'MRP璁$畻鐗堟湰鍙�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl b/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl
new file mode 100644
index 0000000..10c1f0c
--- /dev/null
+++ b/_Main/BL/Type_ProductInStockingPointInPeriod/StaticMethod_GetByMRPCalverNo.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetByMRPCalverNo (
+  MacroPlan parent,
+  String mrpCalverNo
+) as owning ProductInStockingPointInPeriods
+{
+  Description: '鏍规嵁MRP璁$畻鐗堟湰鍙疯幏鍙栧緟澶勭悊鏁版嵁'
+  TextBody:
+  [*
+    // yypsybs Sep-12-2023 (created)
+    result := selectset( parent, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip,
+                         pispip.ProductInStockingPoint_MP().Product_MP().ID().StartsWith( "E" )
+                         and pispip.MRPCalverNo() = mrpCalverNo );
+    return &result;
+  *]
+}
diff --git a/_Main/BL/Type_ProductInStockingPointInPeriod/_ROOT_Type_ProductInStockingPointInPeriod.qbl b/_Main/BL/Type_ProductInStockingPointInPeriod/_ROOT_Type_ProductInStockingPointInPeriod.qbl
new file mode 100644
index 0000000..48d9cd9
--- /dev/null
+++ b/_Main/BL/Type_ProductInStockingPointInPeriod/_ROOT_Type_ProductInStockingPointInPeriod.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ProductInStockingPointInPeriod #extension
+{
+}
diff --git a/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl b/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl
new file mode 100644
index 0000000..d5c7a95
--- /dev/null
+++ b/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Specs
+{
+  #keys: '3[414384.0.803580062][414384.0.803580061][414384.0.803580063]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl b/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl
new file mode 100644
index 0000000..4ffd0db
--- /dev/null
+++ b/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SaleBudget
+{
+  #keys: '5[414384.0.803544585][414384.0.803544583][0.0.0][414384.0.803544584][414384.0.803544586]'
+  BaseType: Object
+  Description: '閿�鍞绠�'
+  StructuredName: 'SaleBudgets'
+}
diff --git a/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl b/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl
new file mode 100644
index 0000000..e9287e9
--- /dev/null
+++ b/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SaleBudgetItem
+{
+  #keys: '5[414384.0.803544590][414384.0.803544588][0.0.0][414384.0.803544589][414384.0.803544591]'
+  BaseType: Object
+  Description: '閿�鍞绠楁槑缁�'
+  StructuredName: 'SaleBudgetItems'
+}
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
new file mode 100644
index 0000000..1c3a3e5
--- /dev/null
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -0,0 +1,185 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeCompare (
+  MacroPlans macroPlans,
+  CapacityAndSaleBudgeFilterItems items,
+  CapacityAndSaleBudgeFilterYears years,
+  CapacityAndSaleBudgeFilterMonths months,
+  MPSync mpSync,
+  MacroPlan mappingParent
+)
+{
+  Description: 'todo : mappingParent鏀逛负mpSync'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    // ====涓嶉�夋椂榛樿鍏ㄩ��====
+    if( years.Size() = 0 ) {
+      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
+    }
+    if( months.Size() = 0 ) {
+      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
+    }
+    traverse( macroPlans, Elements, item ) {
+      info( "scenario : " + item.ScenarioName() );
+    }
+    traverse( items, Elements, item ) {
+      info( "item : " + item.ItemName() );
+    }
+    traverse( years, Elements, item ) {
+      info( "year : " + [String]item.YearNo() );
+    }
+    traverse( months, Elements, item ) {
+      info( "month : " + [String]item.MonthNo() );
+    }
+    // ====娓呯悊鏃ф暟鎹�====
+    this.CapacityAndSaleBudgeCompareItemRow( relflush );
+    this.CapacityAndSaleBudgeCompareItemColumn( relflush );
+    // ====姹囨�绘墍鏈夊嚭鐜扮殑浜у搧====
+    productCodeList := construct( Strings );
+    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
+    traverse( historyData, Elements, one ) {
+      productCodeList.Add( one.ProductCode() );
+    }
+    traverse( macroPlans, Elements, macroPlan ) {
+      traverse( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip ) {
+        productCodeList.Add( pispip.ProductInStockingPoint_MP().Product_MP().ID() );
+      }
+    }
+    productCodeList := selectuniquevalues( productCodeList, Elements, item, item );
+    info( "product count : " + [String]productCodeList.Size() )
+    // ====鏍规嵁浜у搧鏌ヤ簨涓氶儴鍜岀粍缁囩紪鐮侊紝鐒跺悗鎸変簨涓氶儴鍜岀粍缁囩紪鐮佹眹鎬�====
+    traverse( productCodeList, Elements, productCode ) {
+      bom := MappingBOM::CreateTestData( mappingParent, [String](productCode.Length() mod 3), [String](productCode.Length() mod 4) );
+    //  bom := select( mappingParent, MappingBOM, bom, bom.ProductCode() = productCode );
+      if( not isnull( bom ) ) {
+        businessType := bom.BusinessType();
+        orgCode := bom.OrganCode();
+        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, businessType, orgCode );
+        // 璁板綍姣忚鍖呭惈鍝簺product
+        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
+      }
+    }
+    // ====浠庡乏鍚戝彸鐢熸垚鍒楀ご涓庡唴瀹�====
+    // 浜嬩笟閮紝缁勭粐
+    info( "dealing businessType and orgCode" )
+    columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜嬩笟閮�" );
+    columnOrgCode := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "缁勭粐缂栫爜" );
+    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+      cell := columnBusinessType.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.BusinessType() );
+      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      cell := columnOrgCode.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.OrgCode() );
+      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+    }
+    // 闈㈡澘鍒嗛厤閲� - 骞村害棰勭畻 
+    // 鏍煎紡锛� 闈㈡澘鍒嗛厤閲� - 骞� - 鏈堬紙1-12 & total锛� - 骞村害棰勭畻/scenarioName
+    info( "dealing 闈㈡澘鍒嗛厤閲�" )
+    if( CapacityAndSaleBudgeFilterItem::Contains( items, "闈㈡澘鍒嗛厤閲�" ) ) {
+      // 鍘嗗彶鏁版嵁
+      traverse( months, Elements, month ) {
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-total-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( years, Elements, year ) {
+        traverse( macroPlans, Elements, macroPlan ) {
+          traverse( months, Elements, month ) {
+            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
+                                                                                    "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+            }
+          }
+          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
+                                                                                 "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+          }
+        }
+      }
+    }
+    // 骞村害閿�鍞
+    info( "dealing 閿�鍞" )
+    if( CapacityAndSaleBudgeFilterItem::Contains( items, "閿�鍞" ) ) {
+      // 鍘嗗彶鏁版嵁
+      traverse( months, Elements, month ) {
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-total-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( years, Elements, year ) {
+        traverse( macroPlans, Elements, macroPlan ) {
+          traverse( months, Elements, month ) {
+            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+            }
+          }
+          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+          }
+        }
+      }
+    }
+    // 澶у紶鐩堝埄棰�
+    info( "dealing 澶у紶鐩堝埄棰�" )
+    traverse( years, Elements, year ) {
+      // 鍘嗗彶鏁版嵁
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( macroPlans, Elements, macroPlan ) {
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+    }
+    // 浜у搧鐩堝埄棰�
+    info( "dealing 浜у搧鐩堝埄棰�" )
+    traverse( years, Elements, year ) {
+      // 鍘嗗彶鏁版嵁
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( macroPlans, Elements, macroPlan ) {
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+    }
+    
+    
+    info( "done" );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
index 3dddc43..4e6377b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
@@ -13,7 +13,7 @@
       [
         Image: 'ELEMENT_BLUE'
         Taborder: 0
-        Title: 'Filling Capacity Scheme List'
+        Title: '澶栧崠CELL'
         Tooltip: 'Filling Capacity Scheme List'
       ]
     }
@@ -25,6 +25,17 @@
       [
         Image: 'ELEMENT_ORANGE'
         Taborder: 1
+        Title: '濉骇鏂规鍒楄〃'
+      ]
+    }
+    Component MenuSalesFillingSchemeHistorical
+    {
+      #keys: '[414382.0.455751651]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ELEMENT_ORANGE'
+        Taborder: 2
         Title: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
       ]
     }
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
index 3aa17b6..3bd914f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
@@ -11,7 +11,8 @@
     [*
       // Open view
       //ApplicationMacroPlanner.OpenView( 'Filling Capacity Scheme List',ButtonSalesFillingCapacity);
-      ApplicationMacroPlanner.OpenView( 'View Sales Segments', ButtonSalesFillingCapacity );
+      
+      ApplicationMacroPlanner.OpenView( 'FillingCapacityOrder', ButtonSalesFillingCapacity );
     *]
     GroupServerCalls: false
   }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
new file mode 100644
index 0000000..2d1e1f4
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeHistorical
+Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeHistorical_OnClick
+{
+  #keys: '[414382.0.455751650]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      //ApplicationMacroPlanner.OpenView( "FillingCapacitySchemeList",ButtonSalesFillingCapacity);
+      ApplicationMacroPlanner.OpenView( "FillingCapacityOrderHistorical");
+    *]
+    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
index 0fd125b..0ad306d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
@@ -11,8 +11,7 @@
     [*
       // Open view
       //ApplicationMacroPlanner.OpenView( "FillingCapacitySchemeList",ButtonSalesFillingCapacity);
-      ApplicationMacroPlanner.OpenViewAndFocusButton( "FillingCapacitySchemeList");
-      //Application.OpenForm( "FormFillingScheme");
+      ApplicationMacroPlanner.OpenView( "FillingCapacitySchemeList");
     *]
     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 075a217..72e5ee3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -13,5 +13,35 @@
         #child: ActionBarPageSales
       ]
     }
+    Component DataHolderCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814451217]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterItem]*'
+      Properties:
+      [
+        Taborder: 40
+      ]
+    }
+    Component DataHolderCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814441070]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterMonth]*'
+      Properties:
+      [
+        Taborder: 41
+      ]
+    }
+    Component DataHolderCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814441076]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterYear]*'
+      Properties:
+      [
+        Taborder: 42
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def
new file mode 100644
index 0000000..66db189
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_List174.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component List174
+{
+  #keys: '[414724.0.53086425]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor936
+    {
+      #keys: '[414724.0.53086426]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_OrderRecord]'
+        Source: 'DataHolder248'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage349
+    Component DataSetLevel386
+    {
+      #keys: '[414724.0.53086431]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu108
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDateTime","title":"OrderDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderQty","title":"OrderQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastHitQty","title":"ForecastHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastNoHitQty","title":"ForecastNoHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastNoHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"Unit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerCode","title":"CustomerCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerCode"}}]'
+        ContextMenu: 'listContextMenu108'
+        SortCriteria: 'OperateTime'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def
new file mode 100644
index 0000000..78634a1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel570.def
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+Component Panel570
+{
+  #keys: '[414724.0.53023821]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FORE
+    {
+      #keys: '[414724.0.53023837]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FORE
+    {
+      #keys: '[414724.0.53023852]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        MaxRows: 0
+        NumberOfColumns: 20
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FORE
+    {
+      #keys: '[414724.0.53023864]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鎼滅储'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def
new file mode 100644
index 0000000..fe73275
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_Panel650.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel650
+{
+  #keys: '[414724.0.52964252]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label300
+    {
+      #keys: '[414724.0.52964268]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def
new file mode 100644
index 0000000..3d07bba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listActionBarPage349.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage349
+{
+  #keys: '[414724.0.53086428]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def
new file mode 100644
index 0000000..b83f144
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Component_listContextMenu108.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu108
+{
+  #keys: '[414724.0.53086433]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def
new file mode 100644
index 0000000..745284f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderResultEx_OnCreated
+{
+  #keys: '[414724.0.101910615]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      ds_Month_FORE.Date(Date::ActualDate());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def
new file mode 100644
index 0000000..b6cdf5d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form234/Response_Panel570_btn_Query_FORE_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: Panel570/btn_Query_FORE
+Response OnClick () id:Response_Panel570_btn_Query_FORE_OnClick
+{
+  #keys: '[414724.0.100771014]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractor338.FixedFilter( "( object.ID().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )"  
+                                                   + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FORE.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.OrderDateTime() < " + ds_Month_FORE.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.OrderDateTime() >= " + ds_Month_FORE.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
new file mode 100644
index 0000000..53c000e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderResultEx
+{
+  #keys: '[414724.0.51403684]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel650
+    #child: Panel570
+    #child: List174
+    Component DataHolder248
+    {
+      #keys: '[414724.0.51434769]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_OrderRecord]*'
+      Children:
+      [
+        Component DataExtractor338
+        {
+          #keys: '[414724.0.52813717]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            FixedFilter: 'object.OperateType()<>"鍙嶇"'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_OrderRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+    Title: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def"
new file mode 100644
index 0000000..dc4c04e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_ListPRData\043844.def"
@@ -0,0 +1,106 @@
+Quintiq file version 2.0
+Component ListPRData id:ListPRData_844
+{
+  #keys: '[414384.0.789711874]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPRData
+    {
+      #keys: '[414384.0.789711875]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'MacroPlan'
+        Source: 'MacroPlan'
+        Taborder: 0
+        Transformation: 'PRData'
+      ]
+    }
+    Component DataSetLevelPRData
+    {
+      #keys: '[414384.0.789711876]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPRData_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProduceRequiredDate","title":"ProduceRequiredDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProduceRequiredDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendBy","title":"SendBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendTIme","title":"SendTIme","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendTIme"}}]'
+        ContextMenu: 'listContextMenuPRData'
+        SortCriteria: 'BusinessType;MRPCalverNo'
+        Taborder: 1
+      ]
+    }
+    #child: listActionBarPagePRData_1
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 1
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRData_844_WebMenu_OnClick
+    {
+      #keys: '[414384.0.789711869]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[2651.0.25404553]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRData_844_WebButton_OnClick
+    {
+      #keys: '[414384.0.789711868]'
+      Initiator: 'WebButton'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[6763.0.7953347]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRData_844_WebMenu_OnClick_870
+    {
+      #keys: '[414384.0.789711867]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument checked
+        {
+          #keys: '[6763.0.7953392]'
+          Binding: 'this.Checked()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRData_844_WebButton_OnClick_870
+    {
+      #keys: '[414384.0.789711866]'
+      Initiator: 'WebButton'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument checked
+        {
+          #keys: '[6763.0.7953437]'
+          Binding: 'this.Checked()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
new file mode 100644
index 0000000..29e3432
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPRDataButton
+{
+  #keys: '[414384.0.798052026]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonSendPR
+    {
+      #keys: '[414384.0.798052096]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ARROW_RIGHT'
+        Label: 'Send checked PRs'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listActionBarPagePRData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listActionBarPagePRData\0431.def"
new file mode 100644
index 0000000..166e7ca
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listActionBarPagePRData\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePRData id:listActionBarPagePRData_1
+{
+  #keys: '[414384.0.789711881]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def"
new file mode 100644
index 0000000..204fe6d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Component_listContextMenuPRData\0431.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component listContextMenuPRData id:listContextMenuPRData_1
+{
+  #keys: '[414384.0.789711877]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuCall
+    {
+      #keys: '[414384.0.796101349]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'MEDIA_PLAY_GREEN'
+        Taborder: 3
+        Title: 'Send selected PRs'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged\043774.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged\043774.def"
new file mode 100644
index 0000000..2e992ec
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged\043774.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: DataHolderChecked_187
+Response OnDataChanged () id:Response_ListPRData_844_DataHolderChecked_OnDataChanged_774
+{
+  #keys: '[414384.0.799231412]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      //traverse ( this.Data(), Elements, e ) {
+      //  info( "閫変腑鐨勭墿鏂欏彿锛�", e.MatCode() );
+      //}
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def
new file mode 100644
index 0000000..8411a9a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: ListPRData_844
+Response OnClick (
+  structured[PRData] selection
+) id:Response_ListPRData_844_MenuCall_OnClick
+{
+  #keys: '[414384.0.793461398]'
+  CanBindMultiple: false
+  DefinitionID => /ListPRData_844/Responsedef_ListPRData_844_WebMenu_OnClick
+  Initiator: 'MenuCall'
+  Precondition:
+  [*
+    return PRData::CanCall( selection, feedback );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      productIdsOver14Days := PRData::ProductIdOver14Days( selection );
+      if( productIdsOver14Days <> "" ) {
+        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁鐜板湪閲婃斁锛燂紙宸查噴鏀剧殑灏嗚璺宠繃锛�" ) = 0 ) {
+          PRData::DoCall( GlobalOTDTable, selection, ApplicationMacroPlanner.GetUserName() );
+        }
+      } else if( WebMessageBox::Question( "鏄惁鍙戦�侀�変腑鐨勬暟鎹紵锛堝凡閲婃斁鐨勫皢琚烦杩囷級" ) = 0 ) {
+        PRData::DoCall( GlobalOTDTable, selection, ApplicationMacroPlanner.GetUserName() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged\043613.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged\043613.def"
new file mode 100644
index 0000000..20e3571
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged\043613.def"
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListPRData_844
+Response OnUserCheckedChanged () id:Response_ListPRData_844_OnUserCheckedChanged_613
+{
+  #keys: '[414384.0.798051611]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      info( "checked 0 PRs" );
+      DataHolderChecked.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def
new file mode 100644
index 0000000..5783a47
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListPRData_844
+Response OnUserCheckedChanged (
+  structured[PRData] checkeditems
+) id:Response_ListPRData_844_OnUserCheckedChanged
+{
+  #keys: '[414384.0.798051163]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      info( "checked " + [String]checkeditems.Size() + " PRs" );
+      DataHolderChecked.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def
new file mode 100644
index 0000000..f626708
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_OnCreated.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormPRData_OnCreated
+{
+  #keys: '[414384.0.793421050]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      if( not isnull( MacroPlan ) ) {
+        MacroPlan.PRData( relflush );
+        PRData::TestData( MacroPlan );
+      }
+      if( not isnull( GlobalOTDTable ) ) {
+        GlobalOTDTable.PRHistoryData( relflush );
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def
new file mode 100644
index 0000000..c885be4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: PanelPRDataButton/ButtonSendPR
+Response OnClick () id:Response_PanelPRDataButton_ButtonSendPR_OnClick
+{
+  #keys: '[414384.0.799260793]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return PRData::CanCall( DataHolderChecked.Data(), feedback );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      productIdsOver14Days := PRData::ProductIdOver14Days( DataHolderChecked.Data() );
+      if( productIdsOver14Days <> "" ) {
+        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁鐜板湪閲婃斁锛燂紙宸查噴鏀剧殑灏嗚璺宠繃锛�" ) = 0 ) {
+          PRData::DoCall( GlobalOTDTable, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+        }
+      } else if( WebMessageBox::Question( "鏄惁鍙戦�侀�変腑鐨勬暟鎹紵锛堝凡閲婃斁鐨勫皢琚烦杩囷級" ) = 0 ) {
+        PRData::DoCall( GlobalOTDTable, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def"
new file mode 100644
index 0000000..7696374
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/_ROOT_Component_FormPRData\043633.def"
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPRData
+{
+  #keys: '[414384.0.789711717]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPRData_844
+    #child: PanelPRDataButton
+    Component DataHolderChecked id:DataHolderChecked_187
+    {
+      #keys: '[414384.0.799231414]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[PRData]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Title: 'PR'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
new file mode 100644
index 0000000..93bc5b0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011646]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudge
+    {
+      #keys: '[414384.0.813011647]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudge'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudge
+    Component DataSetLevelCapacityAndSaleBudge
+    {
+      #keys: '[414384.0.813011652]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudge
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpec","title":"LineAndSpec","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpec"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudge'
+        SortCriteria: 'BusinessType;OrgCode;ProductCode'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def
new file mode 100644
index 0000000..4362de8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011649]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def
new file mode 100644
index 0000000..73bbf94
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011654]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
new file mode 100644
index 0000000..99ec0c4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudge_OnCreated
+{
+  #keys: '[414384.0.813000551]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      GlobalOTDTable.InitTestData();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
new file mode 100644
index 0000000..b3e0a3c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudge
+{
+  #keys: '[414384.0.811822656]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudge
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
new file mode 100644
index 0000000..1309dca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ButtonCapacityAndSaleBudgeCompare
+Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonCapacityAndSaleBudgeCompare_OnClick
+{
+  #keys: '[414384.0.818241703]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ScenarioManager.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
+                                                   MPSync, 
+                                                   MacroPlan );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
new file mode 100644
index 0000000..499f57c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeCompare
+{
+  #keys: '[414384.0.818241648]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component ButtonCapacityAndSaleBudgeCompare
+    {
+      #keys: '[414384.0.818241675]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: '鍒锋柊'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..84bcffe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422398]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814422399]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterItem'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterItem
+    Component DataSetLevelCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814422404]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterItem
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ItemName","title":"ItemName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ItemName"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterItem'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..b8d3d7e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422401]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..2ac7d83
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422406]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def"
new file mode 100644
index 0000000..8dd9009
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterItem
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterItem] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged_364
+{
+  #keys: '[414384.0.814442050]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterItem.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def
new file mode 100644
index 0000000..d8fc395
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterItem
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441975]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterItem.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
new file mode 100644
index 0000000..c5f4133
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterItem_OnCreated
+{
+  #keys: '[414384.0.813090410]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterItem::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..407564c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814110958]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterItem
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮椤圭瓫閫�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..13a9e02
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421655]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814421656]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterMonth'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterMonth
+    Component DataSetLevelCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814421661]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterMonth
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthNo","title":"MonthNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthNo"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterMonth'
+        SortCriteria: 'MonthNo'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..18b4412
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421658]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..61a19a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421663]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def"
new file mode 100644
index 0000000..2d0371a
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterMonth
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterMonth] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged_608
+{
+  #keys: '[414384.0.814441861]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterMonth.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def
new file mode 100644
index 0000000..dd5e9e0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterMonth
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441723]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterMonth.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
new file mode 100644
index 0000000..46cc025
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterMonth_OnCreated
+{
+  #keys: '[414384.0.813021080]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterMonth::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..8328a22
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814110924]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterMonth
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮鏈堜唤绛涢��'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..f51357d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421895]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814421896]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterYear'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterYear
+    Component DataSetLevelCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814421901]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterYear
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear'
+        SortCriteria: 'YearNo'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..517785d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421898]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..063e725
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421903]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def"
new file mode 100644
index 0000000..7f76b04
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterYear
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterYear] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged_316
+{
+  #keys: '[414384.0.814441614]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterYear.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def
new file mode 100644
index 0000000..ca51e21
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterYear
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441542]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterYear.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
new file mode 100644
index 0000000..6c61e95
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterYear_OnCreated
+{
+  #keys: '[414384.0.814422656]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterYear::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..54553b8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814110885]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterYear
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮骞翠唤绛涢��'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def
index d951132..7ff6bcd 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Component_ListFillingCapacityOrder.def
@@ -29,7 +29,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"鐗堟湰鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"鍟嗗搧缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"閿�鍞儴闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"鏁伴噺鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelBigSheetQuantity","title":"闈㈡澘澶у紶鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelBigSheetQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"閿�鍞","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"棰勬祴闇�姹傛棩鏈�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandDate","title":"闇�姹傛棩鏈�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderType","title":"璁㈠崟绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderType"}}]'
         ContextMenu: 'listContextMenuFillingCapacityOrder'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def
index ebf5356..594ffdc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/_ROOT_Component_FormFillingCapacityOrder.def
@@ -11,6 +11,6 @@
   ]
   Properties:
   [
-    Title: 'Filling Capacity Orders'
+    Title: '濉骇璁㈠崟鍒楄〃'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def
index 9982fb6..7023bea 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/Component_ListFillingSchemeDetail.def
@@ -28,7 +28,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"鐗堟湰鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"閿�鍞儴闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"鏁伴噺鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelBigSheetQuantity","title":"闈㈡澘澶у紶鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelBigSheetQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"閿�鍞","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"棰勬祴闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandDate","title":"闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderType","title":"璁㈠崟绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderType"}}]'
         ContextMenu: 'listContextMenuFillingSchemeDetail'
         Taborder: 2
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def"
index 39f6e98..556ddb8 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder802/_ROOT_Component_FormFillingSchemeDetail\043802.def"
@@ -36,6 +36,6 @@
   ]
   Properties:
   [
-    Title: 'Filling Capacity Orders'
+    Title: '濉骇鏂规璇︽儏'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
index 529f05f..5ea0d0a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
@@ -28,7 +28,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"鐗堟湰鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"璁㈠崟鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"鍟嗗搧缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ServiceType","title":"涓氬姟绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ServiceType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"鏁伴噺鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelBigSheetQuantity","title":"闈㈡澘澶у紶鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelBigSheetQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"閿�鍞","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"棰勬祴闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandDate","title":"闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandDate"}}]'
         ContextMenu: 'listContextMenuCustomerAndFillingCapacityOrder'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
index 7a7dea3..a456ad1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
@@ -11,6 +11,6 @@
   ]
   Properties:
   [
-    Title: 'Customer And Forecast Order'
+    Title: '璁㈠崟鍒楄〃'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def
index 30b376c..ebdc6ed 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Component_ListFillingScheme.def
@@ -28,7 +28,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SchemeName","title":"鏂规鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SchemeName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"閿�鍞儴闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SchemeDate","title":"鏂规鐢熸垚鏃堕棿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SchemeDate"}}]'
         ContextMenu: 'Menurelease'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def
index 7b75d26..cbe1b9f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/Response_ListFillingScheme_OnClick.def
@@ -12,20 +12,8 @@
     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
index b95b12f..77502a9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingScheme/_ROOT_Component_FormFillingScheme.def
@@ -19,4 +19,8 @@
       ]
     }
   ]
+  Properties:
+  [
+    Title: '濉骇鏂规鍒楄〃'
+  ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def
new file mode 100644
index 0000000..f825db9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_ListForecastForHedging.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListForecastForHedging
+{
+  #keys: '[412960.0.117650662]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorForecastForHedging453
+    {
+      #keys: '[412960.0.117650663]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Forecast]'
+        Source: 'DataHolderForecastForHedging'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageForecastForHedging
+    Component DataSetLevelForecastForHedging
+    {
+      #keys: '[412960.0.117650668]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuForecastForHedging
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}}]'
+        ContextMenu: 'listContextMenuForecastForHedging'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def
new file mode 100644
index 0000000..cc6a096
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelForecastForHedging
+{
+  #keys: '[412960.0.117670724]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListForecastForHedging
+    #child: PanelForecastForHedging961
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def
new file mode 100644
index 0000000..4940eca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_PanelForecastForHedging961.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component PanelForecastForHedging961
+{
+  #keys: '[412960.0.124780919]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DateSelectorForecastForHedging
+    {
+      #keys: '[412960.0.124781002]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Date: 2023-01-01
+        DateFormat: 'YMM'
+        Label: '鎴鏃ユ湡'
+        MinDate: 2023-01-01
+        Taborder: 1
+      ]
+    }
+    Component ButtonForecastForHedging
+    {
+      #keys: '[412960.0.124781317]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        BadgeTextColor: 'blue'
+        ButtonSize: 'compact'
+        Label: '  鎼滅储  '
+        Taborder: 2
+      ]
+    }
+    Component EditFieldForecastForHedging
+    {
+      #keys: '[412960.0.124781382]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 0
+      ]
+    }
+    Component LabelForecastForHedging
+    {
+      #keys: '[412960.0.124781423]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鎼滅储'
+        Taborder: 3
+        Text: '鎼滅储'
+        Visible: false
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    SizeRatio: 0
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def
new file mode 100644
index 0000000..c92b3a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listActionBarPageForecastForHedging.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageForecastForHedging
+{
+  #keys: '[412960.0.117650665]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def
new file mode 100644
index 0000000..3da0a0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Component_listContextMenuForecastForHedging.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuForecastForHedging
+{
+  #keys: '[412960.0.117650670]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def
new file mode 100644
index 0000000..7e09df5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelForecastForHedging961/ButtonForecastForHedging
+Response OnClick () id:Response_PanelForecastForHedging961_ButtonForecastForHedging_OnClick
+{
+  #keys: '[412960.0.124781470]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorForecastForHedging.FixedFilter( 
+                                                   "( object.ID().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.ProductID().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+      //                                             + " or " + "object.Quantity().AsString().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.UnitOfMeasureName().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SalesSegmentName().LikeUserLocale( " + EditFieldForecastForHedging.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.EndDate() < " + DateSelectorForecastForHedging.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.EndDate() >= " + DateSelectorForecastForHedging.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def
new file mode 100644
index 0000000..2d9b51d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelForecastForHedging961/DateSelectorForecastForHedging
+Response OnCreated () id:Response_PanelForecastForHedging961_DateSelectorForecastForHedging_OnCreated
+{
+  #keys: '[412960.0.124961321]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      this.Date( Date::ActualDate() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def
new file mode 100644
index 0000000..d3b3f75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecastForHedging/_ROOT_Component_FormForecastForHedging.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormForecastForHedging
+{
+  #keys: '[412960.0.116513237]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelForecastForHedging
+    Component DataHolderForecastForHedging
+    {
+      #keys: '[412960.0.117670741]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Forecast]*'
+      Children:
+      [
+        Component DataExtractorForecastForHedging
+        {
+          #keys: '[412960.0.117620894]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'SalesDemand.astype(Forecast)'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍐插噺鍔熻兘涓嬬殑棰勬祴鏁版嵁鐣岄潰'
+    Image: 'PURCHASE_ORDER'
+    Title: '棰勬祴鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def
new file mode 100644
index 0000000..726a92c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSDIP.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component ListSDIP #extension
+{
+  Children:
+  [
+    Component DataSetLevelSDIP #extension
+    {
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsRestricted","title":"ImgIsRestricted","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsRestricted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MasterSalesDemand.UnitOfMeasureName","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MasterSalesDemand.UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"QuantityInSalesDemandUOM","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"QuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantityInSalesDemandUOM","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demamd","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2 )"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity()-object.FulfilledQuantity(), 0.0)"}}]}}]'
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def
new file mode 100644
index 0000000..3d7315d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSDIP.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component PanelSDIP #extension
+{
+  Children:
+  [
+    #child: ListSDIP
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def
new file mode 100644
index 0000000..743b727
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_PanelSalesDemands.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+Component PanelSalesDemands #extension
+{
+  #error 102458: "Class Component with id 'PanelSalesDemands' cannot find its child with id 'PanelAllSalesDemands'. The file / folder structure might be corrupted due to integration."
+  Children:
+  [
+    Component DataHolderSalesDemands #extension
+    {
+      Children:
+      [
+        Component DataExtractorSDFromNavPanel #extension
+        {
+          Properties:
+          [
+            Source: 'DataHolderSalesDemandFromNavPanel'
+          ]
+        }
+      ]
+    }
+    #child: PanelSDIP
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def
new file mode 100644
index 0000000..697d046
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/_ROOT_Component_FormForecasts.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: LibMacroPlannerWebUI
+OrphanComponent FormForecasts #extension
+{
+  Children:
+  [
+    #child: PanelSalesDemands
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def
new file mode 100644
index 0000000..6795199
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_ListHedgingOfLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListHedgingOfLog
+{
+  #keys: '[414724.0.28070551]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorHedgingOfLog883
+    {
+      #keys: '[414724.0.28070552]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_HedgingRecord]'
+        Source: 'DataHolderHedgingOfLog'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageHedgingOfLog
+    Component DataSetLevelHedgingOfLog
+    {
+      #keys: '[414724.0.28070557]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuHedgingOfLog
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Serial","title":"Serial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Serial"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReverseQty","title":"ReverseQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReverseQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AuthorizeQty","title":"AuthorizeQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AuthorizeQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateQty","title":"OperateQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateType","title":"OperateType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Operator","title":"Operator","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Operator"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OperateTime","title":"OperateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OperateTime"}}]'
+        ContextMenu: 'listContextMenuHedgingOfLog'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def
new file mode 100644
index 0000000..ed7d295
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog
+{
+  #keys: '[414724.0.28070480]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderHedgingOfLog
+    {
+      #keys: '[414724.0.28070513]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_HedgingRecord]*'
+      Children:
+      [
+        Component DataExtractorHedgingOfLog
+        {
+          #keys: '[414724.0.28070527]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_HedgingRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: ListHedgingOfLog
+    #child: PanelHedgingOfLog761
+    #child: PanelHedgingOfLog593
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def
new file mode 100644
index 0000000..58cf03b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog593.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog593
+{
+  #keys: '[414724.0.32210907]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUCode
+    {
+      #keys: '[414724.0.32210935]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: 'SKU缂栫爜锛欰AAAAAAAA'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def
new file mode 100644
index 0000000..dded053
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_PanelHedgingOfLog761.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelHedgingOfLog761
+{
+  #keys: '[414724.0.26973497]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component LabelHedgingOfLog
+    {
+      #keys: '[414724.0.26973515]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        FixedSize: false
+        Taborder: 0
+        Text: '鏃ュ織椤甸潰'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'content'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def
new file mode 100644
index 0000000..21d6e75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listActionBarPageHedgingOfLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageHedgingOfLog
+{
+  #keys: '[414724.0.28070554]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def
new file mode 100644
index 0000000..255ce0a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Component_listContextMenuHedgingOfLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuHedgingOfLog
+{
+  #keys: '[414724.0.28070559]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def
new file mode 100644
index 0000000..88f5a2f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/Response_OnCreated.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormHedgingOfLog_OnCreated
+{
+  #keys: '[414724.0.32481133]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
new file mode 100644
index 0000000..2b5e9aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormHedgingOfLog
+{
+  #keys: '[414724.0.28070348]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelHedgingOfLog
+    Component lb_ForecastQty
+    {
+      #keys: '[414724.0.31031550]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 1
+        Text: '鍘熸潗鏂欑殑棰勬祴鏁伴噺锛�0'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍐插噺缁撴灉-鏃ュ織'
+    Image: 'DOCUMENT_REFRESH'
+    Title: '鍙嶇鎺堟潈鍒楄〃鏄庣粏椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def
index 017d092..84aa507 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/Component_ListHistoricalFillingCapacityOrder.def
@@ -28,7 +28,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"鐗堟湰鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"璁㈠崟鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"鍟嗗搧缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderType","title":"璁㈠崟绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FillingType","title":"濉骇绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FillingType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"RewindsQuantityToReduced","title":"寰呭噺鍐叉暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"RewindsQuantityToReduced"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"鏁伴噺鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesAmount","title":"閿�鍞","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesAmount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"璁㈠崟鏃ユ湡","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastDemandDate","title":"棰勬祴闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastDemandDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProfitabilityLevel","title":"鐩堝埄姘村钩","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProfitabilityLevel"}}]'
         ContextMenu: 'listContextMenuHistoricalFillingCapacityOrder'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def
index 9a378bc..4562d53 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalFillingCapacityOrder/_ROOT_Component_FormHistoricalFillingCapacityOrder.def
@@ -9,4 +9,8 @@
   [
     #child: ListHistoricalFillingCapacityOrder
   ]
+  Properties:
+  [
+    Title: '濉骇璁㈠崟鍒楄〃'
+  ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def
index 9abf0cb..5c5ae1b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/Component_ListHistoricalSalesOrders.def
@@ -28,7 +28,7 @@
       ]
       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"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VerNo","title":"鐗堟湰鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VerNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"濉骇鍘嗗彶鍟嗗搧缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Customer","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Customer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"鏁伴噺鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderDate","title":"璁㈠崟鏃ユ湡","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderDate"}}]'
         ContextMenu: 'listContextMenuHistoricalSalesOrders'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def
index 0b63738..2bddaac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHistoricalSalesOrders/_ROOT_Component_FormHistoricalSalesOrders.def
@@ -11,6 +11,6 @@
   ]
   Properties:
   [
-    Title: 'Historical Sales Orders'
+    Title: '澶栧崠CELL鍘嗗彶璁㈠崟'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def
new file mode 100644
index 0000000..54d1eea
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component PanelKpiMatrixButton #extension
+{
+  Children:
+  [
+    Component ButtonKpiMatrixRefresh #extension
+    {
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def
new file mode 100644
index 0000000..fe53993
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: KpiTrackerWeb
+OrphanComponent FormKpiMatrix #extension
+{
+  Children:
+  [
+    #child: PanelKpiMatrixButton
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def
new file mode 100644
index 0000000..a9fc454
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_ListMaterialPurchase.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMaterialPurchase
+{
+  #keys: '[414724.0.33312250]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorMaterialPurchase593
+    {
+      #keys: '[414724.0.33312251]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_MaterialPurchase]'
+        Source: 'DataHolderMaterialPurchase'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageMaterialPurchase
+    Component DataSetLevelMaterialPurchase
+    {
+      #keys: '[414724.0.33312256]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuMaterialPurchase
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductSubclassType","title":"ProductSubclassType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductSubclassType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Qty","title":"Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Qty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"Unit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WarehouseCode","title":"WarehouseCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WarehouseCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandTime","title":"DemandTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandTime"}}]'
+        ContextMenu: 'listContextMenuMaterialPurchase'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def
new file mode 100644
index 0000000..228bfb8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelMaterialPurchase
+{
+  #keys: '[414724.0.32581841]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_StartTime
+    {
+      #keys: '[414724.0.32581870]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        NumberOfColumns: 50
+        Taborder: 0
+        Text: '寮�濮嬫椂闂达細2023-03-26 12:24:46'
+      ]
+    }
+    #child: PanelMaterialPurchase613
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def
new file mode 100644
index 0000000..25dd39f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_PanelMaterialPurchase613.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component PanelMaterialPurchase613
+{
+  #keys: '[414724.0.32732360]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_Issuing
+    {
+      #keys: '[414724.0.32702204]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍙戝竷鎸夐挳'
+        Image: 'GOLDFISH'
+        Label: '鍙戝竷'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    MinimumColumns: 10
+    Orientation: 'horizontal'
+    Style: 'content'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def
new file mode 100644
index 0000000..96c5f0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listActionBarPageMaterialPurchase.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageMaterialPurchase
+{
+  #keys: '[414724.0.33312253]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def
new file mode 100644
index 0000000..672eb72
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Component_listContextMenuMaterialPurchase.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuMaterialPurchase
+{
+  #keys: '[414724.0.33312258]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def
new file mode 100644
index 0000000..039fd11
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/Response_PanelMaterialPurchase613_btn_Issuing_OnClick.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: PanelMaterialPurchase613/btn_Issuing
+Response OnClick () id:Response_PanelMaterialPurchase613_btn_Issuing_OnClick
+{
+  #keys: '[414724.0.32883517]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      nExecute := WebMessageBox::Question("纭瑕佸彂甯冨綋鍓嶇殑鎵�鏈夐噰璐鍗曞悧锛�");
+      
+      if( nExecute = 0)
+      {
+        OutMsg :="";
+        bResult := H_FunctionClass::SM_MaterialPurchaseIssuer(OutMsg,MacroPlan,"-",ApplicationMacroPlanner.GetUserName());
+        if( OutMsg.Length()>0)
+        {
+          if(bResult)
+          {
+            WebMessageBox::Success( OutMsg);
+          }
+          else
+          {
+            WebMessageBox::Warning( OutMsg);
+          }
+        }   
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
new file mode 100644
index 0000000..9c8ca6c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMaterialPurchase
+{
+  #keys: '[414724.0.32392142]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component lb_Title
+    {
+      #keys: '[414724.0.32644779]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+        Taborder: 0
+        Text: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+      ]
+    }
+    #child: PanelMaterialPurchase
+    Component DataHolderMaterialPurchase
+    {
+      #keys: '[414724.0.32795597]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_MaterialPurchase]*'
+      Children:
+      [
+        Component DataExtractorMaterialPurchase
+        {
+          #keys: '[414724.0.32795611]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_MaterialPurchase'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: ListMaterialPurchase
+  ]
+  Properties:
+  [
+    Description: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+    Image: 'DOG'
+    Title: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
new file mode 100644
index 0000000..1298999
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
@@ -0,0 +1,106 @@
+Quintiq file version 2.0
+Component ListPRHistoryData id:ListPRHistoryData_844
+{
+  #keys: '[414384.0.789711912]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPRHistoryData
+    {
+      #keys: '[414384.0.789711913]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'PRHistoryData'
+      ]
+    }
+    Component DataSetLevelPRHistoryData
+    {
+      #keys: '[414384.0.789711914]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPRHistoryData_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MRPCalverNo","title":"MRPCalverNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MRPCalverNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendStatus","title":"SendStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReleaseBy","title":"ReleaseBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReleaseBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SendDate","title":"SendDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SendDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveStatus","title":"ReceiveStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveTime","title":"ReceiveTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiveError","title":"ReceiveError","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiveError"}}]'
+        ContextMenu: 'listContextMenuPRHistoryData'
+        SortCriteria: 'BusinessType;MRPCalverNo'
+        Taborder: 1
+      ]
+    }
+    #child: listActionBarPagePRHistoryData_1
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 1
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRHistoryData_844_WebMenu_OnClick
+    {
+      #keys: '[414384.0.789711907]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[2651.0.25404553]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRHistoryData_844_WebButton_OnClick
+    {
+      #keys: '[414384.0.789711906]'
+      Initiator: 'WebButton'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[6763.0.7953347]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRHistoryData_844_WebMenu_OnClick_799
+    {
+      #keys: '[414384.0.789711905]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument checked
+        {
+          #keys: '[6763.0.7953392]'
+          Binding: 'this.Checked()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPRHistoryData_844_WebButton_OnClick_801
+    {
+      #keys: '[414384.0.789711904]'
+      Initiator: 'WebButton'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument checked
+        {
+          #keys: '[6763.0.7953437]'
+          Binding: 'this.Checked()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def
new file mode 100644
index 0000000..8a0a6c7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_PanelPRHistoryButton.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPRHistoryButton
+{
+  #keys: '[414384.0.799483156]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonResendPRA
+    {
+      #keys: '[414384.0.799483157]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ARROW_RIGHT'
+        Label: 'Resend checked PRs'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listActionBarPagePRHistoryData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listActionBarPagePRHistoryData\0431.def"
new file mode 100644
index 0000000..d27e02c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listActionBarPagePRHistoryData\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePRHistoryData id:listActionBarPagePRHistoryData_1
+{
+  #keys: '[414384.0.789711919]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def"
new file mode 100644
index 0000000..fd4d7de
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_listContextMenuPRHistoryData\0431.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component listContextMenuPRHistoryData id:listContextMenuPRHistoryData_1
+{
+  #keys: '[414384.0.789711915]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuCall id:MenuCall_94
+    {
+      #keys: '[414384.0.793461623]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'MEDIA_PLAY_GREEN'
+        Taborder: 3
+        Title: 'Call'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_DataHolderChecked_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_DataHolderChecked_OnDataChanged.def
new file mode 100644
index 0000000..06af3f1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_DataHolderChecked_OnDataChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: DataHolderChecked
+Response OnDataChanged () id:Response_FormPRData_DataHolderChecked_OnDataChanged
+{
+  #keys: '[414384.0.799483137]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      //traverse ( this.Data(), Elements, e ) {
+      //  info( "閫変腑鐨勭墿鏂欏彿锛�", e.MatCode() );
+      //}
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuCall_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuCall_OnClick.def
new file mode 100644
index 0000000..e86c379
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_MenuCall_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: ListPRHistoryData_844
+Response OnClick (
+  structured[PRHistoryData] selection
+) id:Response_ListPRHistoryData_844_MenuCall_OnClick
+{
+  #keys: '[414384.0.793461657]'
+  CanBindMultiple: false
+  DefinitionID => /ListPRHistoryData_844/Responsedef_ListPRHistoryData_844_WebMenu_OnClick
+  Initiator: 'MenuCall'
+  QuillAction
+  {
+    Body:
+    [*
+      productIdsOver14Days := PRHistoryData::ProductIdOver14Days( selection );
+      if( productIdsOver14Days <> "" ) {
+        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁閲嶆柊閲婃斁锛�" ) = 0 ) {
+          PRHistoryData::ReCall( selection, ApplicationMacroPlanner.GetUserName() );
+        }
+      } else if( WebMessageBox::Question( "鏄惁閲嶆柊閲婃斁閫変腑鐨勫唴瀹癸紵" ) = 0 ) {
+        PRHistoryData::ReCall( selection, ApplicationMacroPlanner.GetUserName() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged\043635.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged\043635.def"
new file mode 100644
index 0000000..a7ae6e0
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged\043635.def"
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListPRHistoryData_844
+Response OnUserCheckedChanged () id:Response_ListPRHistoryData_844_OnUserCheckedChanged_635
+{
+  #keys: '[414384.0.799575492]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      info( "checked 0 PRs" );
+      DataHolderChecked.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged.def
new file mode 100644
index 0000000..3e250e5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_ListPRHistoryData_844_OnUserCheckedChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListPRHistoryData_844
+Response OnUserCheckedChanged (
+  structured[PRHistoryData] checkeditems
+) id:Response_ListPRHistoryData_844_OnUserCheckedChanged
+{
+  #keys: '[414384.0.799483356]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      info( "checked " + [String]checkeditems.Size() + " PRs" );
+      DataHolderChecked.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def
new file mode 100644
index 0000000..52c3bd2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonResendPRA_OnClick.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: PanelPRHistoryButton/ButtonResendPRA
+Response OnClick () id:Response_PanelPRHistoryButton_ButtonResendPRA_OnClick
+{
+  #keys: '[414384.0.799483155]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    info( DataHolderChecked.Data().Size() );
+    return DataHolderChecked.Data().Size() > 0;
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      productIdsOver14Days := PRHistoryData::ProductIdOver14Days( DataHolderChecked.Data() );
+      if( productIdsOver14Days <> "" ) {
+        if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁閲嶆柊閲婃斁锛�" ) = 0 ) {
+          PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+        }
+      } else if( WebMessageBox::Question( "鏄惁閲嶆柊閲婃斁閫変腑鐨勫唴瀹癸紵" ) = 0 ) {
+        PRHistoryData::ReCall( DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/_ROOT_Component_FormPRHistoryData.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/_ROOT_Component_FormPRHistoryData.def
new file mode 100644
index 0000000..379d005
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/_ROOT_Component_FormPRHistoryData.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPRHistoryData
+{
+  #keys: '[414384.0.789711755]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPRHistoryData_844
+    #child: PanelPRHistoryButton
+    Component DataHolderChecked
+    {
+      #keys: '[414384.0.799483139]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[PRHistoryData]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Title: 'PR History'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_ListPriorityFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_ListPriorityFactor.def
new file mode 100644
index 0000000..5880d9b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_ListPriorityFactor.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListPriorityFactor
+{
+  #keys: '[414382.0.453382063]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorPriorityFactor
+    {
+      #keys: '[414382.0.453382064]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[PriorityFactorDetails]'
+        Source: 'DataHolderPriorityFactorSelect'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPagePriorityFactor
+    Component DataSetLevelPriorityFactor
+    {
+      #keys: '[414382.0.453382069]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuPriorityFactor
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityFactorName","title":"PriorityFactorName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityFactorName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"coefficient","title":"coefficient","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"coefficient"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriorityFactorDesc","title":"PriorityFactorDesc","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PriorityFactorDesc"}}]'
+        ContextMenu: 'listContextMenuPriorityFactor'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPriorityFactor_WebMenu_OnClick
+    {
+      #keys: '[414382.0.452290439]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[1187.0.7063875]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_PanelPriorityFactorSelect.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_PanelPriorityFactorSelect.def
new file mode 100644
index 0000000..905d4a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_PanelPriorityFactorSelect.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component PanelPriorityFactorSelect
+{
+  #keys: '[414382.0.447270206]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component BusinessTypeSelectStringList
+    {
+      #keys: '[414382.0.447270221]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: '浜嬩笟閮�: '
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listActionBarPagePriorityFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listActionBarPagePriorityFactor.def
new file mode 100644
index 0000000..2c9ba6f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listActionBarPagePriorityFactor.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPagePriorityFactor
+{
+  #keys: '[414382.0.453382066]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listContextMenuPriorityFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listContextMenuPriorityFactor.def
new file mode 100644
index 0000000..484aad4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Component_listContextMenuPriorityFactor.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component listContextMenuPriorityFactor
+{
+  #keys: '[414382.0.453382071]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuTestData
+    {
+      #keys: '[414382.0.452290464]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'GEAR'
+        Taborder: 3
+        Title: 'Test'
+      ]
+    }
+    Component MenuClearTestData
+    {
+      #keys: '[414382.0.453953843]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Taborder: 4
+        Title: 'ClearTestData'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnCreated.def
new file mode 100644
index 0000000..64ef34c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: BusinessTypeSelectStringList
+Response OnCreated () id:Response_FormPriorityFactor_BusinessTypeSelectStringList_OnCreated
+{
+  #keys: '[414382.0.454113391]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
+      this.Strings(strings);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnSelectionChanged.def
new file mode 100644
index 0000000..d45eac2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_BusinessTypeSelectStringList_OnSelectionChanged.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: BusinessTypeSelectStringList
+Response OnSelectionChanged () id:Response_FormPriorityFactor_BusinessTypeSelectStringList_OnSelectionChanged
+{
+  #keys: '[414382.0.454113392]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      list := PriorityFactor::GetDataByBusinessType( GlobalOTDTable, BusinessTypeSelectStringList.Text());
+      DataHolderPriorityFactorSelect.Data(&list);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuClearTestData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuClearTestData_OnClick.def
new file mode 100644
index 0000000..45d4098
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuClearTestData_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListPriorityFactor
+Response OnClick () id:Response_ListPriorityFactor_MenuClearTestData_OnClick
+{
+  #keys: '[414382.0.453592300]'
+  CanBindMultiple: false
+  DefinitionID => /ListPriorityFactor/Responsedef_ListPriorityFactor_WebMenu_OnClick
+  Initiator: 'MenuClearTestData'
+  QuillAction
+  {
+    Body:
+    [*
+      PriorityFactorDetails::ClearTestData( GlobalOTDTable);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuTestData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuTestData_OnClick.def
new file mode 100644
index 0000000..c7d9f86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_ListPriorityFactor_MenuTestData_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListPriorityFactor
+Response OnClick () id:Response_ListPriorityFactor_MenuTestData_OnClick
+{
+  #keys: '[414382.0.453471285]'
+  CanBindMultiple: false
+  DefinitionID => /ListPriorityFactor/Responsedef_ListPriorityFactor_WebMenu_OnClick
+  Initiator: 'MenuTestData'
+  QuillAction
+  {
+    Body:
+    [*
+      PriorityFactorDetails::CreateTestData( GlobalOTDTable);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_PanelPriorityFactorSelect_BusinessTypeSelectStringList_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_PanelPriorityFactorSelect_BusinessTypeSelectStringList_OnCreated.def
new file mode 100644
index 0000000..85e7767
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_PanelPriorityFactorSelect_BusinessTypeSelectStringList_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelPriorityFactorSelect/BusinessTypeSelectStringList
+Response OnCreated () id:Response_PanelPriorityFactorSelect_BusinessTypeSelectStringList_OnCreated
+{
+  #keys: '[414382.0.446101961]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
+      this.Strings(strings);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def
new file mode 100644
index 0000000..26acdc7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPriorityFactor
+{
+  #keys: '[414382.0.447270044]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListPriorityFactor
+    Component DataHolderPriorityFactorSelect
+    {
+      #keys: '[414382.0.453562359]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[PriorityFactor]*'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component BusinessTypeSelectStringList
+    {
+      #keys: '[414382.0.454113393]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: '浜嬩笟閮�: '
+        Taborder: 0
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactorGrading/_ROOT_Component_FormPriorityFactorGrading.def b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactorGrading/_ROOT_Component_FormPriorityFactorGrading.def
new file mode 100644
index 0000000..6f24830
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactorGrading/_ROOT_Component_FormPriorityFactorGrading.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormPriorityFactorGrading
+{
+  #keys: '[414382.0.447270082]'
+  BaseType: 'WebForm'
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def
new file mode 100644
index 0000000..fbb5054
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListReleaseRecord
+{
+  #keys: '[414724.0.35732464]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorReleaseRecord690
+    {
+      #keys: '[414724.0.35732465]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_ReleaseRecord]'
+        Source: 'DataHolderReleaseRecord'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageReleaseRecord
+    Component DataSetLevelReleaseRecord
+    {
+      #keys: '[414724.0.35732470]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuReleaseRecord
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Issuer","title":"Issuer","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Issuer"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IssuingDate","title":"IssuingDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IssuingDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FinishDate","title":"FinishDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FinishDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Status","title":"Status","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Status"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VCode","title":"VCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Serial","title":"Serial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Serial"}}]'
+        ContextMenu: 'listContextMenuReleaseRecord'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def
new file mode 100644
index 0000000..6ef25a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_ListReleaseRecord243.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListReleaseRecord243
+{
+  #keys: '[414724.0.41061843]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorReleaseRecord404
+    {
+      #keys: '[414724.0.41061844]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_MaterialPurchase]'
+        Source: 'DataHolderReleaseRecord319'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageReleaseRecord199
+    Component DataSetLevelReleaseRecord707
+    {
+      #keys: '[414724.0.41061849]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuReleaseRecord690
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"H_ReleaseRecord_ID","title":"H_ReleaseRecord_ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"H_ReleaseRecord_ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"H_HedgingRecord_ID","title":"H_HedgingRecord_ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"H_HedgingRecord_ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Qty","title":"Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Qty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Status","title":"Status","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Status"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IssuingDate","title":"IssuingDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IssuingDate"}}]'
+        ContextMenu: 'listContextMenuReleaseRecord690'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def
new file mode 100644
index 0000000..ae7d74e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord
+{
+  #keys: '[414724.0.37022508]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dtMonth
+    {
+      #keys: '[414724.0.37110654]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def
new file mode 100644
index 0000000..c45790c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord108.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord108
+{
+  #keys: '[414724.0.37293164]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderReleaseRecord
+    {
+      #keys: '[414724.0.37293178]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_ReleaseRecord]*'
+      Children:
+      [
+        Component DataExtractorReleaseRecord
+        {
+          #keys: '[414724.0.37293193]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_ReleaseRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    #child: ListReleaseRecord
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def
new file mode 100644
index 0000000..5c158ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_PanelReleaseRecord527.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelReleaseRecord527
+{
+  #keys: '[414724.0.41061788]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DataHolderReleaseRecord319
+    {
+      #keys: '[414724.0.41061799]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_MaterialPurchase]*'
+      Children:
+      [
+        Component DataExtractorReleaseRecord661
+        {
+          #keys: '[414724.0.41061814]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_MaterialPurchase'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    #child: ListReleaseRecord243
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def
new file mode 100644
index 0000000..6f4ec7e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageReleaseRecord
+{
+  #keys: '[414724.0.35732467]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def
new file mode 100644
index 0000000..66121a1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listActionBarPageReleaseRecord199.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageReleaseRecord199
+{
+  #keys: '[414724.0.41061846]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def
new file mode 100644
index 0000000..d2cf3cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuReleaseRecord
+{
+  #keys: '[414724.0.35732472]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def
new file mode 100644
index 0000000..833cb86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Component_listContextMenuReleaseRecord690.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuReleaseRecord690
+{
+  #keys: '[414724.0.41061851]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def
new file mode 100644
index 0000000..f4cc29c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_ListReleaseRecord_OnSelectionChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListReleaseRecord
+Response OnSelectionChanged (
+  H_ReleaseRecord selection
+) id:Response_ListReleaseRecord_OnSelectionChanged
+{
+  #keys: '[414724.0.69081721]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorReleaseRecord661.FixedFilter( "object.H_ReleaseRecord_ID() = " + selection.ID().AsQUILL());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def
new file mode 100644
index 0000000..5fc1173
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormReleaseRecord_OnCreated
+{
+  #keys: '[414724.0.37110847]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      dtMonth.Date(Date::Today());
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def
new file mode 100644
index 0000000..5161dff
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/Response_PanelReleaseRecord_dtMonth_OnChanged.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelReleaseRecord/dtMonth
+Response OnChanged () id:Response_PanelReleaseRecord_dtMonth_OnChanged
+{
+  #keys: '[414724.0.71871659]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractorReleaseRecord.FixedFilter( "object.IssuingDate().Date() < " + dtMonth.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.IssuingDate().Date() >= " + dtMonth.Date().StartOfMonth().AsQUILL());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
new file mode 100644
index 0000000..28f9120
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormReleaseRecord
+{
+  #keys: '[414724.0.36870764]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component LabelReleaseRecord
+    {
+      #keys: '[414724.0.36933216]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        NumberOfColumns: 20
+        Taborder: 0
+        Text: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+      ]
+    }
+    #child: PanelReleaseRecord
+    #child: PanelReleaseRecord108
+    #child: PanelReleaseRecord527
+  ]
+  Properties:
+  [
+    Description: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+    Image: 'BULL'
+    Title: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
new file mode 100644
index 0000000..a826c6e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component Panel261
+{
+  #keys: '[414724.0.44249978]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_OK_FAAC
+    {
+      #keys: '[414724.0.44279077]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'OK'
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btn_Cancel_FAAC
+    {
+      #keys: '[414724.0.44279090]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DELETE'
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
new file mode 100644
index 0000000..f043a99
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component PanelOptimizerGeneral718
+{
+  #keys: '[414724.0.43041017]'
+  BaseType => //PanelOptimizerGeneral
+  Children:
+  [
+    Component CheckboxRunPeggingAfterOptRun
+    {
+      #keys: '[144528.1.1789128457]'
+      BaseType => //PanelOptimizerGeneral/CheckboxRunPeggingAfterOptRun
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+    Component EditFieldMinSalesDemandQtyThreshold
+    {
+      #keys: '[144528.1.1789128515]'
+      BaseType => //PanelOptimizerGeneral/EditFieldMinSalesDemandQtyThreshold
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+    Component EditFieldUsagePercentTripCleanup
+    {
+      #keys: '[144528.1.1789128517]'
+      BaseType => //PanelOptimizerGeneral/EditFieldUsagePercentTripCleanup
+      IsDerived: true
+      Properties:
+      [
+        Visible: false
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
new file mode 100644
index 0000000..49964fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelTop
+{
+  #keys: '[414724.0.43072496]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUCode_FAAC
+    {
+      #keys: '[414724.0.43602743]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'TM070RDH10-2322'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
new file mode 100644
index 0000000..9d296a3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelTop0001
+{
+  #keys: '[414724.0.43233506]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelTop
+    #child: PanelTop612
+    #child: PanelTop264
+    #child: PanelTop597
+    #child: PanelTop846
+    #child: PanelTop104
+    #child: PanelTop360
+    #child: PanelTop744
+    #child: PanelTop820
+  ]
+  Properties:
+  [
+    Border: true
+    Style: 'content'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
new file mode 100644
index 0000000..2d52f9c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop104
+{
+  #keys: '[414724.0.43764561]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomName_FAAC
+    {
+      #keys: '[414724.0.43764592]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Description: '瀹㈡埛鍚嶇О'
+        Label: '瀹㈡埛鍚嶇О'
+        NumberOfColumns: 30
+        PlaceHolder: '璇疯緭鍏�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 7
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
new file mode 100644
index 0000000..9d587c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop264
+{
+  #keys: '[414724.0.43764392]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Util_FAAC
+    {
+      #keys: '[414724.0.43764416]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鍗曚綅'
+        Label: '鍗曚綅'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'PCS'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
new file mode 100644
index 0000000..6e7e7dc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+Component PanelTop360
+{
+  #keys: '[414724.0.43764343]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component np_Qty_FAAC
+    {
+      #keys: '[414724.0.43764374]'
+      BaseType: 'WebNumberPicker'
+      Properties:
+      [
+        Label: '鏁伴噺'
+        MaximumColumns: 50
+        Min: '0'
+        NumberOfColumns: 23
+        Step: 100
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
new file mode 100644
index 0000000..861f761
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop597
+{
+  #keys: '[414724.0.43764439]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddsl_OperateType_FAAC
+    {
+      #keys: '[414724.0.44398642]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '鍙嶇'
+        Label: '鍔ㄤ綔绫诲瀷'
+        NumberOfColumns: 26
+        Strings: '鍙嶇;鎺堟潈'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 5
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
new file mode 100644
index 0000000..855b473
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop612
+{
+  #keys: '[414724.0.43764662]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Operator_FAAC
+    {
+      #keys: '[414724.0.43764687]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '鎿嶄綔浜�'
+        Label: '鎿嶄綔浜�'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: '鏉庡彲'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 8
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
new file mode 100644
index 0000000..6408506
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelTop744
+{
+  #keys: '[414724.0.43764285]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUName_FAAC
+    {
+      #keys: '[414724.0.43764315]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'T1鍨嬫ā缁�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
new file mode 100644
index 0000000..8d132dd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component PanelTop820
+{
+  #keys: '[414724.0.79122768]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_NeedDate
+    {
+      #keys: '[414724.0.79122804]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Label: '闇�姹傛棩鏈�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
new file mode 100644
index 0000000..07e3ec6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTop846
+{
+  #keys: '[414724.0.43764508]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomID_FAAC
+    {
+      #keys: '[414724.0.43764542]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛ID'
+        NumberOfColumns: 30
+        PlaceHolder: '璇疯緭鍏�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 6
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
new file mode 100644
index 0000000..e01820f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmAuthorizeAndCountersign_OnCreated
+{
+  #keys: '[414724.0.80341563]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      /**********************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈�*******************/
+      //瀹氫箟涓嬩竴涓槦鏈�
+      nTargetWeenNum := 5;
+      nTodayWeekNum := Date::ActualDate().DayOfWeek();
+      nAddDays := 0;
+      if( nTodayWeekNum <= nTargetWeenNum)
+      {
+        nAddDays := nTargetWeenNum-nTodayWeekNum;
+      }
+      else
+      {
+        nAddDays := 7 - nTodayWeekNum+nTargetWeenNum;
+      }
+      // 涓嬩竴涓槦鏈熺殑鏃ユ湡
+      dtNeedDate := Date::ActualDate() + nAddDays;
+      /******************************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈� 缁撴潫***********************/
+      ds_NeedDate.Date(dtNeedDate);
+      
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SKUCode_FAAC.Text(StrValue.Element( 0));
+        lb_SKUName_FAAC.Text("浜у搧");
+        lb_Operator_FAAC.Text("");
+        lb_Util_FAAC.Text(StrValue.Element( 1));
+        txt_CustomID_FAAC.Text(StrValue.Element( 2));
+        txt_CustomName_FAAC.Text(StrValue.Element( 3));
+        lb_Operator_FAAC.Text(ApplicationMacroPlanner.GetUserName());
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
new file mode 100644
index 0000000..353774e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: Panel261/btn_Cancel_FAAC
+Response OnClick () id:Response_Panel261_btn_Cancel_FAAC_OnClick
+{
+  #keys: '[414724.0.90212874]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      FrmAuthorizeAndCountersign.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
new file mode 100644
index 0000000..c34f055
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: Panel261/btn_OK_FAAC
+Response OnClick () id:Response_Panel261_btn_OK_FAAC_OnClick
+{
+  #keys: '[414724.0.56302031]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      strQty := np_Qty_FAAC.Number().AsQUILL();
+      Qty := 0;
+      if( strQty.FindString( ".",0)>0)
+      {
+        Qty := [Number]strQty.SubString( 0,strQty.FindString( ".",0));
+      }
+      else
+      {
+        Qty := [Number]strQty;
+      }
+      OperateMsg :="";
+      OperateResult := H_FunctionClass::SM_OrderReverseOrAuthorize(  MacroPlan,lb_Util_FAAC.Text() ,"-",ds_NeedDate.Date() ,txt_CustomID_FAAC.Text(),lb_SKUCode_FAAC.Text(),Qty,
+                                                            lb_Operator_FAAC.Text(),txt_CustomName_FAAC.Text(),OperateMsg,ddsl_OperateType_FAAC.Text());
+      
+      if( OperateMsg.Length()>0)
+      {
+        if( OperateResult)
+        {
+          WebMessageBox::Success( OperateMsg);
+        }
+        else
+        {
+          WebMessageBox::Warning( OperateMsg);
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
new file mode 100644
index 0000000..69e5e49
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmAuthorizeAndCountersign
+{
+  #keys: '[414724.0.41821648]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component lb_Title_FRMAAC
+    {
+      #keys: '[414724.0.41841127]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '璁㈠崟鍙嶆綔鎺堟潈鏂板椤�'
+        Taborder: 0
+        Text: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
+      ]
+    }
+    #child: PanelTop0001
+    #child: Panel261
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鎺堟潈鍜屽弽绛�'
+    Image: 'DOCUMENTS_NEW'
+    Title: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def
new file mode 100644
index 0000000..585fd28
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel227.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+Component Panel227
+{
+  #keys: '[414724.0.44768889]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_OK_FAACM
+    {
+      #keys: '[414724.0.44768900]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'OK'
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btn_Cancel_FAACM
+    {
+      #keys: '[414724.0.44768918]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DELETE'
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 12
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def
new file mode 100644
index 0000000..8f8ecba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel368.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel368
+{
+  #keys: '[414724.0.44768637]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddsl_OperateType_FAACM
+    {
+      #keys: '[414724.0.44768691]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        InitialValue: '鍙嶇'
+        Label: '鎿嶄綔绫诲瀷'
+        NumberOfColumns: 26
+        Strings: '鍙嶇;鎺堟潈'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 7
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def
new file mode 100644
index 0000000..2cf1300
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel418.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel418
+{
+  #keys: '[414724.0.44768711]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomID_FAACM
+    {
+      #keys: '[414724.0.44768737]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛ID'
+        NumberOfColumns: 30
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 8
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def
new file mode 100644
index 0000000..834c7f3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel445.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+Component Panel445
+{
+  #keys: '[414724.0.44768544]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component np_Qty_FAACM
+    {
+      #keys: '[414724.0.44768568]'
+      BaseType: 'WebNumberPicker'
+      Properties:
+      [
+        Label: '鏁伴噺'
+        MaximumColumns: 50
+        Min: '0'
+        NumberOfColumns: 23
+        Step: 100
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 5
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def
new file mode 100644
index 0000000..88c30e0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel455.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel455
+{
+  #keys: '[414724.0.44768353]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SUK_FAACM
+    {
+      #keys: '[414724.0.44768369]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'TM070RDH10-23'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def
new file mode 100644
index 0000000..9bc250f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel488.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel488
+{
+  #keys: '[414724.0.44768844]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Operator_FAACM
+    {
+      #keys: '[414724.0.44768867]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鎿嶄綔浜�'
+        Taborder: 0
+        Text: '鏉庡彲'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 11
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def
new file mode 100644
index 0000000..9f57250
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel504.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel504
+{
+  #keys: '[414724.0.45008336]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label861
+    {
+      #keys: '[414724.0.45008373]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def
new file mode 100644
index 0000000..92f48e1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel523.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel523
+{
+  #keys: '[414724.0.44768447]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialCode_FAACM
+    {
+      #keys: '[414724.0.44768476]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍘熸枡缂栫爜'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'A1'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def
new file mode 100644
index 0000000..98be692
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel616.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel616
+{
+  #keys: '[414724.0.44768757]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component txt_CustomName_FAACM
+    {
+      #keys: '[414724.0.44768782]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瀹㈡埛鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 9
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def
new file mode 100644
index 0000000..977afd4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel645.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel645
+{
+  #keys: '[414724.0.44768399]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SKUName_FAACM
+    {
+      #keys: '[414724.0.44768428]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU鍚嶇О'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'T1鍨嬫ā缁�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def
new file mode 100644
index 0000000..00ec1d8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel694.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel694
+{
+  #keys: '[414724.0.44768495]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialName
+    {
+      #keys: '[414724.0.44768519]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍘熸枡鍚嶇О'
+        Taborder: 0
+        Text: '鐜荤拑'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def
new file mode 100644
index 0000000..c842a7b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel890.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component Panel890
+{
+  #keys: '[414724.0.44768586]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_Unit_FAACM
+    {
+      #keys: '[414724.0.44768614]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鍗曚綅'
+        NumberOfColumns: 30
+        Taborder: 0
+        Text: 'PCS'
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 6
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def
new file mode 100644
index 0000000..0abe7a4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Component_Panel972.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel972
+{
+  #keys: '[414724.0.44768802]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_MaterialType_FAACM
+    {
+      #keys: '[414724.0.44768826]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '鐗╂枡绫诲瀷'
+        Taborder: 0
+        Text: '鍘熸潗鏂�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 10
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
new file mode 100644
index 0000000..c03f661
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmAuthorizeAndCountersign_Material_OnCreated
+{
+  #keys: '[414724.0.113356318]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SUK_FAACM.Text(StrValue.Element( 0));
+        lb_MaterialCode_FAACM.Text(StrValue.Element( 1));
+        lb_Unit_FAACM.Text(StrValue.Element( 2));
+        lb_Operator_FAACM.Text(ApplicationMacroPlanner.GetUserName());
+      }
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        txt_CustomID_FAACM.Text(StrValue.Element( 2));
+        txt_CustomName_FAACM.Text(StrValue.Element( 3));
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def
new file mode 100644
index 0000000..211cd7d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_Cancel_FAACM_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel227/btn_Cancel_FAACM
+Response OnClick () id:Response_Panel227_btn_Cancel_FAACM_OnClick
+{
+  #keys: '[414724.0.65725554]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      FrmAuthorizeAndCountersign_Material.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def
new file mode 100644
index 0000000..4f8495f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_Panel227_btn_OK_FAACM_OnClick.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: Panel227/btn_OK_FAACM
+Response OnClick () id:Response_Panel227_btn_OK_FAACM_OnClick
+{
+  #keys: '[414724.0.61672228]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      strQty := np_Qty_FAACM.Number().AsQUILL();
+      Qty := 0;
+      if( strQty.FindString( ".",0)>0)
+      {
+        Qty := [Number]strQty.SubString( 0,strQty.FindString( ".",0));
+      }
+      else
+      {
+        Qty := [Number]strQty;
+      }
+      OperateMsg :="";
+      OperateResult := H_FunctionClass::SM_MaterialReverse(   MacroPlan,"-",txt_CustomID_FAACM.Text(),lb_MaterialCode_FAACM.Text(),Qty,
+                                                            lb_Operator_FAACM.Text(),OperateMsg,ddsl_OperateType_FAACM.Text());
+      
+      if( OperateMsg.Length()>0)
+      {
+        if( OperateResult)
+        {
+          WebMessageBox::Success( OperateMsg);
+        }
+        else
+        {
+          WebMessageBox::Warning( OperateMsg);
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
new file mode 100644
index 0000000..748bae7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmAuthorizeAndCountersign_Material
+{
+  #keys: '[414724.0.44768276]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel455
+    #child: Panel645
+    #child: Panel523
+    #child: Panel694
+    #child: Panel445
+    #child: Panel890
+    #child: Panel368
+    #child: Panel418
+    #child: Panel616
+    #child: Panel972
+    #child: Panel488
+    #child: Panel227
+    #child: Panel504
+  ]
+  Properties:
+  [
+    Description: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+    Title: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def
new file mode 100644
index 0000000..975cea9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_List710.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List710
+{
+  #keys: '[414724.0.56301766]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor332
+    {
+      #keys: '[414724.0.56301767]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_ErrorLogs]'
+        Source: 'DataHolder674'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage361
+    Component DataSetLevel407
+    {
+      #keys: '[414724.0.56301772]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu619
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EClassName","title":"EClassName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EClassName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EFunctionName","title":"EFunctionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EFunctionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EDateTime","title":"EDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorNr","title":"ErrorNr","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorNr"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DeveloperInformation","title":"DeveloperInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DeveloperInformation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DetailedInformation","title":"DetailedInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DetailedInformation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"GeneralInformation","title":"GeneralInformation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"GeneralInformation"}}]'
+        ContextMenu: 'listContextMenu619'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def
new file mode 100644
index 0000000..fb73e77
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listActionBarPage361.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage361
+{
+  #keys: '[414724.0.56301769]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def
new file mode 100644
index 0000000..2ae4bcb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/Component_listContextMenu619.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu619
+{
+  #keys: '[414724.0.56301774]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def
new file mode 100644
index 0000000..23776ce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmErrorLogs/_ROOT_Component_FrmErrorLogs.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmErrorLogs
+{
+  #keys: '[414724.0.56301712]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: List710
+    Component DataHolder674
+    {
+      #keys: '[414724.0.56301734]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_ErrorLogs]*'
+      Children:
+      [
+        Component DataExtractor131
+        {
+          #keys: '[414724.0.56301746]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_ErrorLogs'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '閿欒鏃ュ織'
+    Image: 'WARNING'
+    Title: '閿欒鏃ュ織'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def
new file mode 100644
index 0000000..f24ffbd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_List832.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List832
+{
+  #keys: '[414724.0.53475318]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor470
+    {
+      #keys: '[414724.0.53475319]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Product_MP]'
+        Source: 'dh_FM_PruductMP'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage456
+    Component DataSetLevel707
+    {
+      #keys: '[414724.0.53475324]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu892
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventoryLevels","title":"TotalInventoryLevels","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventoryLevels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsProductCategory","title":"IsProductCategory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsProductCategory"}}]'
+        ContextMenu: 'listContextMenu892'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
new file mode 100644
index 0000000..987148b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component Panel418
+{
+  #keys: '[414724.0.50254946]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lb_SUK_FM
+    {
+      #keys: '[414724.0.53353887]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: 'SKU缂栫爜锛�'
+        NumberOfColumns: 20
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FM
+    {
+      #keys: '[414724.0.53353923]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        NumberOfColumns: 15
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FM
+    {
+      #keys: '[414724.0.52966648]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鏌ヨ'
+        Taborder: 2
+      ]
+    }
+    Component btn_Add_FM
+    {
+      #keys: '[414724.0.53385964]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'ADD2'
+        Label: '鏂板鍙嶇/鎺堟潈'
+        Taborder: 3
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def
new file mode 100644
index 0000000..77621e3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel456.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel456
+{
+  #keys: '[414724.0.53325925]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label632
+    {
+      #keys: '[414724.0.53325937]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '鍘熸枡鍒楄〃椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def
new file mode 100644
index 0000000..fd9f86e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listActionBarPage456.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage456
+{
+  #keys: '[414724.0.53475321]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def
new file mode 100644
index 0000000..9da1efe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_listContextMenu892.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu892
+{
+  #keys: '[414724.0.53475326]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def
new file mode 100644
index 0000000..4b24dec
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnSelectionChanged.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: List832
+Response OnSelectionChanged (
+  Product_MP selection
+) id:Response_List832_OnSelectionChanged
+{
+  #keys: '[414724.0.113297034]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmMaterial",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(lb_SUK_FM.Text()+";"+ selection.ID() +";"+selection.UnitOfMeasureName()+";");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
new file mode 100644
index 0000000..1704689
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmMaterial_OnCreated
+{
+  #keys: '[414724.0.93205703]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        StrValue := SelectItem.Value().Tokenize( ";");
+        lb_SUK_FM.Text(StrValue.Element( 0));
+        de_dh_FM_ProductMP.FixedFilter( "object.ParentID()="+lb_SUK_FM.Text());
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
new file mode 100644
index 0000000..6d50114
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel418/btn_Add_FM
+Response OnClick () id:Response_Panel418_btn_Add_FM_OnClick
+{
+  #keys: '[414724.0.93205915]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Application.OpenForm( "FrmAuthorizeAndCountersign_Material","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def
new file mode 100644
index 0000000..822a47c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Query_FM_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: Panel418/btn_Query_FM
+Response OnClick () id:Response_Panel418_btn_Query_FM_OnClick
+{
+  #keys: '[414724.0.113144268]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      de_dh_FM_ProductMP.FixedFilter( "object.ID().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" );
+      //                                             + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )"  
+      //                                             + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" 
+      //                                             + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FM.Text().AsQUILL() + " )" );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
new file mode 100644
index 0000000..899892b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmMaterial
+{
+  #keys: '[414724.0.53175071]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel456
+    #child: Panel418
+    #child: List832
+    Component dh_FM_PruductMP
+    {
+      #keys: '[414724.0.53475285]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Product_MP]*'
+      Children:
+      [
+        Component de_dh_FM_ProductMP
+        {
+          #keys: '[414724.0.53475299]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'Product_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鍘熸枡鍒楄〃椤�'
+    Title: '鍘熸枡鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
new file mode 100644
index 0000000..a5ffa10
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component Panel383
+{
+  #keys: '[414724.0.86151558]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FOF
+    {
+      #keys: '[414724.0.86151747]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+        Visible: false
+      ]
+    }
+    Component txt_QueryContent_FOF
+    {
+      #keys: '[414724.0.86151766]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+        Visible: false
+      ]
+    }
+    Component btn_Query_FOF
+    {
+      #keys: '[414724.0.88914059]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鏌ヨ'
+        Image: 'VIEW'
+        Label: '鏌ヨ'
+        Taborder: 2
+        Visible: false
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    MinimumColumns: 80
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
new file mode 100644
index 0000000..9fb6eb2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+Component Panel647
+{
+  #keys: '[414724.0.86151576]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_Add_Order_FOF
+    {
+      #keys: '[414724.0.87342042]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Label: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Taborder: 1
+      ]
+    }
+    Component btn_Add_Material_FOF
+    {
+      #keys: '[414724.0.86151707]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Label: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Taborder: 2
+      ]
+    }
+    Component btn_InitialData
+    {
+      #keys: '[414724.0.93657921]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
+        Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    MinimumColumns: 20
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
new file mode 100644
index 0000000..46d28e9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+Component Panel849
+{
+  #keys: '[414724.0.87341748]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: Panel383
+    #child: Panel647
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def
new file mode 100644
index 0000000..6145b74
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel961.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel961
+{
+  #keys: '[414724.0.93502088]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label800
+    {
+      #keys: '[414724.0.93502160]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '棰勬祴鍒楄〃椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
new file mode 100644
index 0000000..bc95d75
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component liH_Forecast
+{
+  #keys: '[414724.0.106554517]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor980
+    {
+      #keys: '[414724.0.106554518]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_Forecast]'
+        Source: 'dh_FOF_H_Forecast'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage729
+    Component DataSetLevel204
+    {
+      #keys: '[414724.0.106554523]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu367
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NeedTime","title":"NeedTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NeedTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Util","title":"Util","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Util"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"CustomName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"Department","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
+        ContextMenu: 'listContextMenu367'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 6
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def
new file mode 100644
index 0000000..7c8d9bb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage729.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage729
+{
+  #keys: '[414724.0.106554520]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
new file mode 100644
index 0000000..320820a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963
+{
+  #keys: '[414724.0.86151897]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def
new file mode 100644
index 0000000..979e4f8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu367.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu367
+{
+  #keys: '[414724.0.106554525]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
new file mode 100644
index 0000000..5f3683c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687
+{
+  #keys: '[414724.0.86151902]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
new file mode 100644
index 0000000..4104d43
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component list_ForecastView_FOF
+{
+  #keys: '[414724.0.86151894]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component de_list_ForecastView_FOF
+    {
+      #keys: '[414724.0.86151895]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[SalesDemandBase]'
+        Source: 'dh_FOF_Data'
+        Taborder: 0
+        Transformation: 'Elements.astype(Forecast)'
+      ]
+    }
+    #child: listActionBarPage963
+    Component DataSetLevel191
+    {
+      #keys: '[414724.0.86151900]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgNotLinkedToPeriod","title":"ImgNotLinkedToPeriod","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgNotLinkedToPeriod"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsPostponed","title":"ImgIsPostponed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsPostponed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"Quantity UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Original Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NettedQuantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NettedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfillment","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round(2)"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue(object.NettedQuantity()-object.FulfilledQuantity(),0.0).Round(2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Priority.Name","title":"Priority","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Priority.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandUncertaintyPercentage","title":"Uncertainty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandUncertaintyPercentage"}}]'
+        ContextMenu: 'listContextMenu687'
+        FixedFilter: 'object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 4
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
new file mode 100644
index 0000000..9800a96
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnClose () id:Response_FrmOrderForecast_OnClose
+{
+  #keys: '[414724.0.91684618]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebForm_OnClose'
+  QuillAction
+  {
+    Body:
+    [*
+      // 娓呯┖閫夋嫨椤�
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( not isnull( SelectItem))
+      {
+        SelectItem.Value("");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
new file mode 100644
index 0000000..4991801
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderForecast_OnCreated
+{
+  #keys: '[414724.0.91471552]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      // 鍒濆鍖栨煡璇㈠弬鏁版湀浠�
+      ds_Month_FOF.Date(Date::ActualDate());
+      // 棰勬祴鏁版嵁2姝ゅ鐞嗭紙绛涢��+瀹㈡埛鍚嶇О鎻愬彇锛�
+      if( MacroPlan.H_Forecast(relget ).Size()>0)
+      {
+        MacroPlan.H_Forecast(relget ).Delete( 0,MacroPlan.H_Forecast(relget ).Size()-1);
+      }
+      //AllData:= selectset( MacroPlan, Product_MP.SalesDemand.astype( Forecast ),object,object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() 
+      //                     and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
+      //                     and object.Quantity()>0 );
+      //
+      //CustomName:="";
+      //DepartMent:="";
+      //idx:=0;
+      //traverse( AllData,Elements,Obj,not isnull(Obj))
+      //{
+      //  idx:=Obj.SalesSegmentName().FindString( "_",0);
+      //  if(idx>0)
+      //  {
+      //    DepartMent:=Obj.SalesSegmentName().SubString( 0,idx+1);
+      //    CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
+      //  }
+      //  else
+      //  {
+      //    CustomName :=Obj.SalesSegmentName();
+      //  }
+      //  
+      //   ArrayData:=Obj.SalesSegmentName().SubString( 0,Obj.SalesSegmentName().FindString( "_",0)+1);
+      //   MacroPlan.H_Forecast(relnew,OrderCode := H_FunctionClass::SM_GenerateID( "OF"),
+      //                          SKU := Obj.ProductID(),
+      //                          CustomCode := CustomName,
+      //                         CustomName := CustomName,
+      //                         Util:=Obj.UnitOfMeasureName(),
+      //                         NeedTime:=Obj.EndDate(),
+      //                         ForecastQty:=[Number]Obj.Quantity().Round( 0),
+      //                         Department:=DepartMent);
+      //}
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
new file mode 100644
index 0000000..41a29a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: Panel383/btn_Query_FOF
+Response OnClick () id:Response_Panel383_btn_Query_FOF_OnClick
+{
+  #keys: '[414724.0.91472695]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      MacroPlan.H_Forecast(relnew, CustomName := "灏忕背",CustomCode := "XM001",ForecastQty := 100,Department := "閿�鍞�1閮�",
+                                         NeedTime := Date::ActualDate(),OrderCode := "00010101",SKU := "ANNDDSSSS",Util := "PCS");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
new file mode 100644
index 0000000..b54e053
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_Add_Material_FOF
+Response OnClick () id:Response_Panel647_btn_Add_Material_FOF_OnClick
+{
+  #keys: '[414724.0.86152486]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
new file mode 100644
index 0000000..dae89b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_Add_Order_FOF
+Response OnClick () id:Response_Panel647_btn_Add_Order_FOF_OnClick
+{
+  #keys: '[414724.0.86152095]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      {
+        Application.OpenForm( "FrmAuthorizeAndCountersign","popout");
+      }
+      else
+      {
+        WebMessageBox::Information( "璇烽�夋嫨涓�椤归娴嬪悗鍐嶇偣鍑绘寜閽紒");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
new file mode 100644
index 0000000..1804c2e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: Panel647/btn_InitialData
+Response OnClick () id:Response_Panel647_btn_InitialData_OnClick
+{
+  #keys: '[414724.0.93657952]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      // 娌℃湁鐢ㄧ殑鎸夐挳鍜屽嚱鏁帮紝鍙负浜嗘祴璇曠敓鎴愬亣鏁版嵁銆�
+      StrCustoms:="XM_2023,灏忕背;HW_2023,鍗庝负;OV_2023,VIVO;OP_2023,OPPO;HX_2023,娴蜂俊;YJ_2023,涓�鍔�;HE_2023,娴峰皵;GL_2023,鏍煎姏;";
+      ArrayCustom := StrCustoms.Tokenize( ";"); //8涓鎴�
+      idx :=0;
+      for( i:=0;i<20;i:=i+1)
+      {
+        idx :=Number::Random( 0,7);
+        arrCustomInfo := ArrayCustom.Element( idx).Tokenize( ",");
+        MacroPlan.H_Forecast(relnew, CustomName := arrCustomInfo.Element( 1),CustomCode := arrCustomInfo.Element( 0),ForecastQty := Number::Random( 100,5000),
+                              Department := "閿�鍞�1閮�",NeedTime := Date::ActualDate(),OrderCode := H_FunctionClass::SM_GenerateID( "OF") ,SKU := "SKU-CP-2023-N"+(Number::Random( 1000,9999)).AsQUILL(),Util := "PCS");  
+        
+      }
+      // 鐢熸垚棰勬祴 瀹炴椂鏁版嵁锛屽弽绛炬暟鎹紝鎺堟潈鏁版嵁锛堝弽绛� 鎺堟潈榛樿涓�0锛屽鑷姩鍒涘缓锛岃繖閲屼笉鍐嶆坊鍔狅級
+       traverse(MacroPlan,H_Forecast ,Obj,not isnull(Obj) )
+      {
+        MacroPlan.H_OrderForecastRealQty(relnew,CustomID := Obj.CustomCode(),CustomName := Obj.CustomName(),ForecatsQty := Obj.ForecastQty(),
+                                          ForecatsRealQty := Obj.ForecastQty(),ID := H_FunctionClass::SM_GenerateID( "OF"),Month := Date::ActualDate(),
+                                          OrderCode := Obj.OrderCode(),SKU := Obj.SKU(),Unit := Obj.Util());
+                                          
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
new file mode 100644
index 0000000..0fbfea6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: liH_Forecast
+Response OnDoubleClick (
+  H_Forecast selection
+) id:Response_liH_Forecast_OnDoubleClick
+{
+  #keys: '[414724.0.111761136]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
new file mode 100644
index 0000000..7f12e18
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: liH_Forecast
+Response OnSelectionChanged (
+  H_Forecast selection
+) id:Response_liH_Forecast_OnSelectionChanged
+{
+  #keys: '[414724.0.111760968]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
new file mode 100644
index 0000000..3d85f54
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: list_ForecastView_FOF
+Response OnDoubleClick (
+  Forecast selection
+) id:Response_list_ForecastView_FOF_OnDoubleClick
+{
+  #keys: '[414724.0.92081867]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      CustomID := "NO";
+      CustonName :="鏈姄鍙栧埌";
+      SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
+      Application.OpenForm( "FrmMaterial","popout");
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
new file mode 100644
index 0000000..582090d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: list_ForecastView_FOF
+Response OnSelectionChanged (
+  Forecast selection
+) id:Response_list_ForecastView_FOF_OnSelectionChanged
+{
+  #keys: '[414724.0.91684287]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+      }
+      CustomID := "NO";
+      CustonName :="鏈姄鍙栧埌";
+      SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
new file mode 100644
index 0000000..17a5ad7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
@@ -0,0 +1,132 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderForecast
+{
+  #keys: '[414724.0.86131780]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel849
+    #child: list_ForecastView_FOF
+    Component dh_FOF_Data
+    {
+      #keys: '[414724.0.86151860]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[SalesDemandBase]*'
+      Children:
+      [
+        Component de_dh_FOF_Data
+        {
+          #keys: '[414724.0.86151875]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[SalesDemandBase]'
+            Source: 'dh_FOF_ChildrenData'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+        Component DataExtractor819
+        {
+          #keys: '[414724.0.107645127]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 1
+            Transformation: 'SalesDemand'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+    #child: Panel961
+    Component dh_FOF_ChildrenData
+    {
+      #keys: '[414724.0.106541535]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[SalesDemandBase]*'
+      Children:
+      [
+        Component de_FOF_ChildrenData_0
+        {
+          #keys: '[414724.0.106541577]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[Product_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderProduct'
+            Taborder: 0
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+        Component de_FOF_ChildrenData_1
+        {
+          #keys: '[414724.0.106541594]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[StockingPoint_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderStockingPoint'
+            Taborder: 1
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+        Component de_FOF_ChildrenData_2
+        {
+          #keys: '[414724.0.106541611]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[SalesSegment_MP]'
+            Source: 'ApplicationMacroPlanner.DataHolderSalesSegment'
+            Taborder: 2
+            Transformation: 'Elements.SalesDemand'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    Component dh_FOF_H_Forecast
+    {
+      #keys: '[414724.0.109053093]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_Forecast]*'
+      Children:
+      [
+        Component de_dh_FOF_H_Foecast
+        {
+          #keys: '[414724.0.106582442]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_Forecast'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 5
+      ]
+    }
+    #child: liH_Forecast
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟棰勬祴椤甸潰'
+    Image: 'GOLDFISH'
+    Title: '棰勬祴鍒楄〃椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def
new file mode 100644
index 0000000..8a9e630
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_List782.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List782
+{
+  #keys: '[414724.0.51431908]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor569
+    {
+      #keys: '[414724.0.51431909]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_OrderRecord]'
+        Source: 'DataHolder570'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage195
+    Component DataSetLevel473
+    {
+      #keys: '[414724.0.51431914]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu526
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderQty","title":"OrderQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReverseQty","title":"ReverseQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReverseQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AuthorizeQty","title":"AuthorizeQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AuthorizeQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastHitQty","title":"ForecastHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastNoHitQty","title":"ForecastNoHitQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastNoHitQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerCode","title":"CustomerCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerCode"}}]'
+        ContextMenu: 'listContextMenu526'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def
new file mode 100644
index 0000000..efc9c10
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel445.def
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+Component Panel445
+{
+  #keys: '[414724.0.51402312]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FOR
+    {
+      #keys: '[414724.0.50290636]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        DateFormat: 'YMM'
+        Label: '鏈堜唤'
+        Taborder: 0
+      ]
+    }
+    Component txt_QueryContent_FOR
+    {
+      #keys: '[414724.0.50221115]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        NumberOfColumns: 20
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FOR
+    {
+      #keys: '[414724.0.51431855]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鎼滅储'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def
new file mode 100644
index 0000000..5261db6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_Panel576.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel576
+{
+  #keys: '[414724.0.50290602]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label531
+    {
+      #keys: '[414724.0.50290614]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def
new file mode 100644
index 0000000..e66c687
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listActionBarPage195.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage195
+{
+  #keys: '[414724.0.51431911]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def
new file mode 100644
index 0000000..67992d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Component_listContextMenu526.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu526
+{
+  #keys: '[414724.0.51431916]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def
new file mode 100644
index 0000000..b632d2a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmOrderResult_OnCreated
+{
+  #keys: '[414724.0.51432652]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ds_Month_FOR.Date(Date::Today());
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def
new file mode 100644
index 0000000..ccc66fa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/Response_Panel445_btn_Query_FOR_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: Panel445/btn_Query_FOR
+Response OnClick () id:Response_Panel445_btn_Query_FOR_OnClick
+{
+  #keys: '[414724.0.103696532]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataExtractor568.FixedFilter( "( object.ID().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )"  
+                                                   + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FOR.Text().AsQUILL() + " ) )" 
+                                                   + "and" + "( object.OrderDateTime() < " + ds_Month_FOR.Date().StartOfNextMonth().AsQUILL() + 
+                                                   " and " + "object.OrderDateTime() >= " + ds_Month_FOR.Date().StartOfMonth().AsQUILL() + " )"
+                                                   );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
new file mode 100644
index 0000000..8dfdddb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmOrderResult
+{
+  #keys: '[414724.0.51340846]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel576
+    #child: Panel445
+    #child: List782
+    Component DataHolder570
+    {
+      #keys: '[414724.0.50261398]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_OrderRecord]*'
+      Children:
+      [
+        Component DataExtractor568
+        {
+          #keys: '[414724.0.50291048]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_OrderRecord'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+    Title: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
new file mode 100644
index 0000000..47bbf7d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmRAShow
+{
+  #keys: '[414724.0.87341476]'
+  BaseType: 'WebForm'
+  Properties:
+  [
+    Description: '鍘熸枡鍙嶇鍜屾巿鏉冨睍绀�'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
new file mode 100644
index 0000000..a540a2e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListData_FT
+{
+  #keys: '[414724.0.58710447]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor206
+    {
+      #keys: '[414724.0.58710448]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[Product_MP]'
+        Source: 'DataHolder623'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage748
+    Component DataSetLevel675
+    {
+      #keys: '[414724.0.58710453]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CanBeExported","title":"CanBeExported","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"CanBeExported"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayIndex","title":"DisplayIndex","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"DisplayIndex"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasMaturation","title":"HasMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasConversionFactor","title":"HasConversionFactor","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasConversionFactor"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","title":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasParent","title":"HasParent","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasParent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasPlanning","title":"HasPlanning","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasPlanning"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasProductLevel","title":"HasProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasRecipe","title":"HasRecipe","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasRecipe"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLife","title":"HasShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLifeOrMaturation","title":"HasShelfLifeOrMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasShelfLifeOrMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasValidProductLevel","title":"HasValidProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasValidProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IconName","title":"IconName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IconName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgHasSalesDemand","title":"ImgHasSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgHasSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsActive","title":"ImgIsActive","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsActive"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IndentationSymbol","title":"IndentationSymbol","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IndentationSymbol"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsByProduct","title":"IsByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedByProduct","title":"IsDerivedByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedExcludeFromFulfillmentKPI","title":"IsDerivedExcludeFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedExcludeFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPI","title":"IsExcludedFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromOptimization","title":"IsExcludedFromOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsImbalance","title":"IsImbalance","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsImbalance"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsIncludedInBalancing","title":"IsIncludedInBalancing","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsIncludedInBalancing"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLeaf","title":"IsLeaf","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsLeaf"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsManuallyConfigured","title":"IsManuallyConfigured","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsManuallyConfigured"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsPlannedAfterOptimization","title":"IsPlannedAfterOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsPlannedAfterOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsProductCategory","title":"IsProductCategory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsProductCategory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSoftDeleted","title":"IsSoftDeleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSoftDeleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSystem","title":"IsSystem","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSystem"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsed","title":"IsUsed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsedInProcess","title":"IsUsedInProcess","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsedInProcess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsValidData","title":"IsValidData","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsValidData"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIBalanceViolationMeta","title":"KPIBalanceViolationMeta","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIBalanceViolationMeta"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMaximumInventory","title":"KPIMaximumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMaximumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMinimumInventory","title":"KPIMinimumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMinimumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPITargetInventory","title":"KPITargetInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPITargetInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaturationDays","title":"MaturationDays","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaturationDays"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinSalesDemandQuantity","title":"MinSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MinSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaxSalesDemandQuantity","title":"MaxSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MaxSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfProductInStockingPoint","title":"NumberOfProductInStockingPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfProductInStockingPoint"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfShelfLifeViolations","title":"NumberOfShelfLifeViolations","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfShelfLifeViolations"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ParentID","title":"ParentID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ParentID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevere","title":"SanityCheckDataMostSevere","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevere"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevereCount","title":"SanityCheckDataMostSevereCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevereCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataTotalViolationCount","title":"SanityCheckDataTotalViolationCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataTotalViolationCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShelfLife","title":"ShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventoryLevels","title":"TotalInventoryLevels","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventoryLevels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventorySupply","title":"TotalInventorySupply","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventorySupply"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalSalesDemand","title":"TotalSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Type","title":"Type","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Type"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
new file mode 100644
index 0000000..a7dc33b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+Component Panel675
+{
+  #keys: '[414724.0.58893964]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonClear
+    {
+      #keys: '[414724.0.58893989]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'ClearDtaa'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
new file mode 100644
index 0000000..20c42d7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage748
+{
+  #keys: '[414724.0.58710450]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
new file mode 100644
index 0000000..5042401
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623
+{
+  #keys: '[414724.0.58710455]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
new file mode 100644
index 0000000..8ea5738
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: Panel675/ButtonClear
+Response OnClick () id:Response_Panel675_ButtonClear_OnClick
+{
+  #keys: '[414724.0.58894009]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      try{
+        H_FunctionClass::UpdateAuthorizeRealQty( MacroPlan);
+        /*
+        ExecuteCount :=0;
+        while(not isnull(MacroPlan.H_ReverseRealQty(relget ).First())  and ExecuteCount<20)
+        {
+          MacroPlan.H_ErrorLogs(relnew,EClassName := "1",EDateTime := DateTime::ActualGMTTime(),EFunctionName := ExecuteCount.AsQUILL());
+          ExecuteCount:=ExecuteCount+1;
+          MacroPlan.H_ReverseRealQty(relget ).First().Delete();
+        }
+        */
+      }
+      onerror{
+        MacroPlan.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
+                             DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                             GeneralInformation := e.GeneralInformation());
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
new file mode 100644
index 0000000..77d883c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmTEST
+{
+  #keys: '[414724.0.57640752]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListData_FT
+    Component DataHolder623
+    {
+      #keys: '[414724.0.57601078]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[Product_MP]*'
+      Children:
+      [
+        Component DataExtractor391
+        {
+          #keys: '[414724.0.58771962]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'Product_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    #child: Panel675
+  ]
+  Properties:
+  [
+    Description: '娴嬭瘯绐椾綋锛屾煡鐪嬫暟鎹娇鐢�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def
new file mode 100644
index 0000000..2c4828b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component pnlContent #extension
+{
+  Children:
+  [
+    Component LabelCurrentStep #extension
+    {
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def
new file mode 100644
index 0000000..78fcf7f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: SOPWorkflowWeb
+OrphanComponent SWF_DialogCeateNextStepDefinitionDependency #extension
+{
+  Children:
+  [
+    #child: pnlContent
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrder.vw b/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrder.vw
new file mode 100644
index 0000000..21e8b5a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrder.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
+    {
+    }
+    page: ''
+    group: ''
+    index: 14
+    image: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'FillingCapacityOrder'
+  name: 'FillingCapacityOrder'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw b/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw
new file mode 100644
index 0000000..e8b9ad7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    page: ''
+    group: ''
+    index: 0
+    image: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'FillingCapacityOrderHistorical'
+  name: 'FillingCapacityOrderHistorical'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw b/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw
new file mode 100644
index 0000000..7bb36cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Test_for_hedging.vw
@@ -0,0 +1,183 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_legacy_1
+      {
+        title: 'Currencies'
+        shown: true
+        componentID: 'FormCurrency'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 6
+        }
+        components
+        {
+          FormCurrency_PanelCurrency
+          {
+            sizeRatio: 1
+          }
+          FormCurrency_ListCurrency
+          {
+          }
+          FormCurrency_DataSetLevelCurrency
+          {
+            groupDepth: -1
+            sort: 'DESC:IsBase,Name'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 33
+            }
+            column_Base
+            {
+              columnId: 'Base'
+              dataPath: 'Base'
+              dataType: 'string'
+              title: '鍩虹'
+              index: 1
+              subtotals: ''
+              width: 30
+            }
+            column_InUse
+            {
+              columnId: 'InUse'
+              dataPath: 'InUse'
+              dataType: 'string'
+              title: 'InUse'
+              index: 2
+              subtotals: ''
+              width: 30
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Symbol
+            {
+              columnId: 'Symbol'
+              dataPath: 'Symbol'
+              dataType: 'string'
+              title: '璞″緛'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_legacy_2
+      {
+        title: 'Currency rates'
+        shown: true
+        componentID: 'FormCurrencyRates'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 7
+          columnSpan: 6
+        }
+        components
+        {
+          FormCurrencyRates_ListCurrencyRate
+          {
+          }
+          FormCurrencyRates_DataSetLevelCurrencyRate
+          {
+            groupDepth: -1
+            sort: 'DESC:Start'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 33
+            }
+            column_Start
+            {
+              columnId: 'Start'
+              dataPath: 'Start'
+              dataType: 'date'
+              title: '寮�濮�'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Rate
+            {
+              columnId: 'Rate'
+              dataPath: 'Rate'
+              dataType: 'real'
+              title: '閫熷害'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_legacy_3
+      {
+        title: 'Currency rates chart'
+        shown: true
+        componentID: 'FormCurrencyRatesChart'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 9
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormCurrencyRatesChart_DashboardChartCurrencyRates
+          {
+            SynchronizationGroup: ''
+          }
+          FormCurrencyRatesChart_DashboardChartCurrencyRates_legend
+          {
+            LegendItems:
+            [
+            ]
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: 'applicationDevelopmentActionBarPageDef'
+    group: ''
+    index: 0
+    image: 'APPLICATION_SERVER_PREFERENCES'
+    description: ''
+  }
+  formatversion: 2
+  id: 'Test_for_hedging'
+  name: 'Test for hedging'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
index 27e4778..237ed78 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.52'
+    BuildVersion: '2022.3.0.72'
     Description: 'Quintiq Macro Planner'
     ProjectKind: 'WebClient'
   }
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
new file mode 100644
index 0000000..c31c665
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
@@ -0,0 +1,205 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_legacy_1
+      {
+        title: 'Scenario manager'
+        shown: true
+        componentID: 'FormScenarioManager'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 5
+        }
+        components
+        {
+          FormScenarioManager_ListScenario
+          {
+          }
+          FormScenarioManager_DataSetLevelScenario
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 90
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 197
+            }
+            column_ChangedBy
+            {
+              columnId: 'ChangedBy'
+              dataPath: 'ChangedBy'
+              dataType: 'string'
+              title: 'Changed by'
+              index: 2
+              subtotals: ''
+              width: 91
+            }
+            column_ChangedOn
+            {
+              columnId: 'ChangedOn'
+              dataPath: 'ChangedOn'
+              dataType: 'datetime'
+              title: 'Changed on'
+              index: 3
+              subtotals: ''
+              width: 99
+            }
+            column_StorageMode
+            {
+              columnId: 'StorageMode'
+              dataPath: 'StorageMode'
+              dataType: 'string'
+              title: 'StorageMode'
+              index: 4
+              subtotals: ''
+              width: 40
+            }
+          }
+        }
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: '鎻忚堪'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'CHART_HI_LO'
+    page: 'ActionBarPageScenarioComparison'
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: 'Capacity___sale_budge'
+  name: 'Capacity & sale budge'
+  isglobal: false
+  isroot: true
+}
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrder.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrder.vw
new file mode 100644
index 0000000..e143a99
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrder.vw
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    index: 0
+  }
+  formatversion: 2
+  id: 'FillingCapacityOrder'
+  name: 'FillingCapacityOrder'
+  isglobal: false
+  isroot: false
+}
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw
new file mode 100644
index 0000000..1323ac5
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/FillingCapacityOrderHistorical.vw
@@ -0,0 +1,434 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormCustomerAndForecastOrder
+      {
+        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 9
+          columnSpan: 4
+        }
+        components
+        {
+          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
+          {
+          }
+          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ServiceType
+            {
+              columnId: 'ServiceType'
+              dataPath: 'ServiceType'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormHistoricalSalesOrders
+      {
+        title: 'QTIANMA_JITUAN::FormHistoricalSalesOrders'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormHistoricalSalesOrders'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 1
+          columnSpan: 4
+        }
+        components
+        {
+          FormHistoricalSalesOrders_ListHistoricalSalesOrders
+          {
+          }
+          FormHistoricalSalesOrders_DataSetLevelHistoricalSalesOrders
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_OrderDate
+            {
+              columnId: 'OrderDate'
+              dataPath: 'OrderDate'
+              dataType: 'date'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormFillingCapacityOrder
+      {
+        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 5
+          columnSpan: 4
+        }
+        components
+        {
+          FormFillingCapacityOrder_ListFillingCapacityOrder
+          {
+          }
+          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_OrderType
+            {
+              columnId: 'OrderType'
+              dataPath: 'OrderType'
+              dataType: 'string'
+              index: 12
+              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
+    {
+    }
+    page: ''
+    group: ''
+    index: 15
+    image: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'FillingCapacityOrderHistorical'
+  name: 'FillingCapacityOrderHistorical'
+  isglobal: false
+  isroot: true
+}
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Priority_Factor.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Priority_Factor.vw
new file mode 100644
index 0000000..cfc6d88
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Priority_Factor.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
+    {
+    }
+    page: ''
+    group: ''
+    index: 13
+    image: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'Priority_Factor'
+  name: 'Priority Factor'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3