chaiyunying
2023-10-31 135b749777d8b87f0f670794ab408d0f9bf61028
Merge branch 'dev' into dev_cyy20231026
已重命名5个文件
已添加53个文件
已修改41个文件
已删除8个文件
3613 ■■■■■ 文件已修改
.gitattributes 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_TotalIdentification.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_InitializedData.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_InitializedData.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_InitializedData.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_InitializedData.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_InitializedData.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_InitTestDataByYear.qbl 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan#127.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeChart.qbl 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_Address.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_AttributeName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_AttributeValue.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_Port.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_PostRequestBody.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/StaticMethod_TestForApiRequest.qbl 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/_ROOT_Type_GlobalParameters.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_Critical.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcCritical.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/Attribute_Critical.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/Function_CalcCritical.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoASync.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingActualPISPIPData.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingExternalSupplyData.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingInventoryValueAndCostData.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingOperationBOMDataRouting.qbl 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingProductInLaneData.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRData/StaticMethod_GeneratesTheSpecifiedXMLColumn#56.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/Component_swTop.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/Component_swTopMost.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/_ROOT_Component_frmStandardAnalysis633.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupScenarioComparisonViews_ButtonAnnualPro.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_PanelGeneral#549.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Response_TIANMA_JITUAN_PanelGeneral_549_dsPlanningStart_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlContent.def 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_ClickBtnOk.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_Edit.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_New.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnOk_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlContent_IsApi_OnChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/_ROOT_Component_DialogGlobalParameters.def 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged#774.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged#613.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_pButton.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonCreateData_OnClick.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonExportDetail_OnClick#971.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonGenerateTestData_OnClick#19.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_pFilterCriteria.def 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_pFilterCriteria_ButtonCapacityAndSaleBudgeChartTest_OnClick#603.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_pButton.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_pButton_ButtonCapacityAndSaleBudgeCompare_OnClick#231.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_pButton_ButtonExportCompare_OnClick#325.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCh#171.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserChecke.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_ListGlobalParameters.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_PanelGlobalParameters.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listActionBarPageGlobalParameters.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listContextMenuGlobalParameters.def 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuDelete_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuEdit_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuNew_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_listContextMenuGlobalParameters_MenuInitial_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/_ROOT_Component_FormGlobalParameters.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Capacity___sale_budge.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/PR_DATA.vw 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/全局参数.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/年度产销复盘.vw 562 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ModelSettings/Common/Dev-23/_ROOT_Role_Dev-23.properties 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ModelSettings/Common/Dev-25/_ROOT_Role_Dev-25.properties 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ModelSettings/Common/Dev-27/_ROOT_Role_Dev-27.properties 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test.pdm 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitattributes
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
*.pdm filter=lfs diff=lfs merge=lfs -text
_Main/BL/Relations/Relation_GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters
{
  #keys: '1[412960.0.369930029]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.369930031][412960.0.369930030][412960.0.369930032]'
    Cardinality: '0to1'
    ObjectDefinition: GlobalParameters
    OwningSide: 'Reference'
  }
  RelationSide.RightSide GlobalParameters
  {
    #keys: '3[412960.0.369930034][412960.0.369930033][412960.0.369930035]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_TotalIdentification.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalIdentification
{
  #keys: '3[414702.1.286051925][414702.1.286051924][414702.1.286051926]'
  Description: '标识位(判断是否加和)'
  ValueType: Number
}
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -10,9 +10,11 @@
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( parent, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    if( isnull( value ) ) {
    if ( isnull( value ) ) {
      value := parent.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );  
    }
    }
    return value;
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_InitializedData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializedData (
  GlobalOTDSOP globalOTDSOP,
  const GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDSOP.CapacityAndSaleBudgeFilterBusinessType( relflush );
    businessTypes := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, tempGMPMP, true, tempGMPMP.BusinessType() );
    traverse ( businessTypes, Elements, bt ) {
      globalOTDSOP.CapacityAndSaleBudgeFilterBusinessType( relnew, BusinessType := bt );
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_InitializedData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializedData (
  GlobalOTDSOP globalOTDSOP
)
{
  Description: '初始化对比项'
  TextBody:
  [*
    globalOTDSOP.CapacityAndSaleBudgeFilterItem( relflush );
    globalOTDSOP.CapacityAndSaleBudgeFilterItem( relnew, ItemName := "面板分配量" );
    globalOTDSOP.CapacityAndSaleBudgeFilterItem( relnew, ItemName := "销售额" );
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_InitializedData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializedData (
  GlobalOTDSOP globalOTDSOP
)
{
  Description: '初始化年份'
  TextBody:
  [*
    globalOTDSOP.CapacityAndSaleBudgeFilterMonth( relflush );
    for( i := 1; i <= 12; i++ ) {
      globalOTDSOP.CapacityAndSaleBudgeFilterMonth( relnew, MonthNo := i );
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_InitializedData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializedData (
  GlobalOTDSOP globalOTDSOP,
  const GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDSOP.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relflush );
    organCodes := selectuniquevalues( globalOTDTable, Global_MappingOperation, tempGMO, true, tempGMO.OrganCode() );
    traverse ( organCodes, Elements, oc ) {
      globalOTDSOP.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relnew, PlaceOfProductionOfArray := oc );
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_InitializedData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializedData (
  GlobalOTDSOP globalOTDSOP
)
{
  Description: '初始化年份'
  TextBody:
  [*
    // yypsybs Sep-15-2023 (created)
    globalOTDSOP.CapacityAndSaleBudgeFilterYear( relflush );
    nowYear := Date::Today().Year();
    for( i := nowYear - 10; i <= nowYear + 5; i++ ) {
      globalOTDSOP.CapacityAndSaleBudgeFilterYear( relnew, YearNo := i );
    }
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_InitTestDataByYear.qbl
@@ -2,28 +2,45 @@
#parent: #root
Method InitTestDataByYear (
  MacroPlan macroPlan,
  CapacityAndSaleBudgeFilterYears years
  GlobalOTDSOP globalOTDSOP,
  CapacityAndSaleBudgeFilterYears years,
  CapacityAndSaleBudgeFilterBusinessTypes businessTypes,
  CapacityAndSaleBudgeFilterPlaceOfProductionOfArrays placeOfProductionOfArrays,
  Product_MPs product_MPs
)
{
  TextBody:
  [*
    // yypsybs Oct-7-2023 (created)
    productCodeList := selectuniquevalues( macroPlan, Product_MP, item, item.ID() );
    debuginfo( "productCodeList : " + [String]productCodeList.Size() );
    product_MPs := selectset( product_MPs, Elements, tempPMP, tempPMP.IsLeaf() and not tempPMP.IsSystem() );
    
    this.Global_MappingAnnualBudgetData( relflush );
    debuginfo( "create Global_MappingAnnualBudgetData test data" );
    id := 1;
    traverse( years, Elements, year ) {
      for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
        productCode := productCodeList.Element( i - 1 );
    if ( years.Size() = 0 ) {
      years := selectset( globalOTDSOP, CapacityAndSaleBudgeFilterYear, tempCASBFY,
                          tempCASBFY.YearNo() = Date::ActualDate().Year()     or
                          tempCASBFY.YearNo() = Date::ActualDate().Year() - 1 or
                          tempCASBFY.YearNo() = Date::ActualDate().Year() + 1
                         );
    }
    if ( businessTypes.Size() = 0 ) {
      businessTypes := selectset( globalOTDSOP, CapacityAndSaleBudgeFilterBusinessType, tempCASBFBT, true );
    }
    if ( placeOfProductionOfArrays.Size() = 0 ) {
      placeOfProductionOfArrays := selectset( globalOTDSOP, CapacityAndSaleBudgeFilterPlaceOfProductionOfArray, tempCASBFPOPOA, true );
    }
    traverse ( years, Elements, year ) {
      traverse ( product_MPs, Elements, pmp ) {
        businessType             := businessTypes.Element( Number::Random( 0, businessTypes.Size() - 1 ) ).BusinessType();
        placeOfProductionOfArray := placeOfProductionOfArrays.Element( Number::Random( 0, placeOfProductionOfArrays.Size() - 1 ) ).PlaceOfProductionOfArray();
        mappingAnnualBudget := this.Global_MappingAnnualBudgetData( relnew, 
                                                                    ID := [String]id,
                                                                    YearNo := [String]year.YearNo(),
                                                                    BusinessType := "事业部" + [String](productCode.Length() mod 3),
                                                                    OrganCode := "I13",
                                                                    ProductID := productCode);
        id := id + 1;
                                                                    ID           := OS::GenerateGUIDAsString(),
                                                                    YearNo       := [String]year.YearNo(),
                                                                    BusinessType := businessType,
                                                                    OrganCode    := placeOfProductionOfArray,
                                                                    ProductID    := pmp.ID()
                                                                   );
        mappingAnnualBudget.MonthlyModCapacity1( [String]Real::Random( 20000.0, 30000.0 ) );
        mappingAnnualBudget.MonthlyModCapacity2( [String]Real::Random( 20000.0, 30000.0 ) );
        mappingAnnualBudget.MonthlyModCapacity3( [String]Real::Random( 20000.0, 30000.0 ) );
@@ -62,7 +79,5 @@
        mappingAnnualBudget.MonthlySales12(  [String]Real::Random( 20000.0, 30000.0 ) );
      }
    }
    result2 := selectset( this, Global_MappingAnnualBudgetData, item, true );
    debuginfo( "test MappingAnnualBudget size : " + [String]result2.Size() );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan#127.qbl
@@ -101,14 +101,6 @@
      Global_MappingOperationCost::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist );
    }
    
    //if ( isDOI_DSI ) {
    //  Global_MappingDOI_DSI::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_DOI_DSI" );
    //}
    //
    //if ( isCustomerGrade ) {
    //  Global_MappingCustomerGrade::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_CustomerGrade" );
    //}
    if ( isStockingPoint_MP ) {
      Global_MappingStockingPoint_MP::SynchronizeMacroPlanData( this, macroPlan, executionUser );
    }
_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeChart.qbl
@@ -15,73 +15,47 @@
  Description: '按入参处理数据,产生需要的CapacityAndSaleBudgeChartElement'
  TextBody:
  [*
    // yypsybs Sep-19-2023 (created)
    // true, false
    //info( saleOrCapacity );
    // æœˆ;季度;半年;å¹´
    //info( groupBy );
    // é¢æ¿åŸºåœ°;事业部
    //info( byBusinessTypeOrByOrgCode );
    //traverse( businessTypes, Elements, businessType ) {
    //  info( "businessType : " + businessType.BusinessType() );
    //}
    //traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
    //  info( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
    //}
    //traverse( macroPlans, Elements, macroPlan ) {
    //  info( "macroPlan : " + macroPlan.ScenarioName() );
    //}
    info( "产能/销售额:", saleOrCapacity, "    æ—¶é—´åˆ†ç»„:", groupBy, "    åŸºåœ°/事业部:", byBusinessTypeOrByOrgCode );
    // å¹´ä»½ä¸é€‰æ—¶å…¨é€‰
    if( years.Size() = 0 ) {
      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, true, item.YearNo() );
    if ( years.Size() = 0 ) {
      years := selectset( this, CapacityAndSaleBudgeFilterYear, tempCASBFY, tempCASBFY.YearNo() = Date::ActualDate().Year() );
    }
    //traverse( years, Elements, year ) {
    //  debuginfo( "yearNo : " + [String]year.YearNo() );
    //}
    // æœˆä»½ä¸é€‰æ—¶å…¨é€‰
    if( months.Size() = 0 ) {
    if ( months.Size() = 0 ) {
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, true, item.MonthNo() );
    }
    //traverse( months, Elements, month ) {
    //  debuginfo( "monthNo : " + [String]month.MonthNo() );
    //}
    
    // ====清理旧数据====
    this.CapacityAndSaleBudgeChartRow( relflush );
    this.CapacityAndSaleBudgeChartElement( relflush );
    
    // ====按面板基地和事业部对产品进行筛选分组====
    historyData := selectset( otdTable, Global_MappingAnnualBudgetData, item, true );
    if( businessTypes.Size() > 0 ) {
    targeGlobal_MappingAnnualBudgetDatas := selectset( otdTable, Global_MappingAnnualBudgetData, tempGMABD, true );
    if ( businessTypes.Size() > 0 ) {
      businessTypeStrings := selectuniquevalues( businessTypes, Elements, item, true, item.BusinessType() );
      historyData := selectset( historyData, Elements, item, businessTypeStrings.Find( item.BusinessType() ) > -1 );
      targeGlobal_MappingAnnualBudgetDatas := selectset( targeGlobal_MappingAnnualBudgetDatas, Elements, item, businessTypeStrings.Find( item.BusinessType() ) > -1 );
    }
    if( placeOfProductionOfArrays.Size() > 0 ) {
    if ( placeOfProductionOfArrays.Size() > 0 ) {
      placeOfProductionOfArrayStrings := selectuniquevalues( placeOfProductionOfArrays, Elements, item, true, item.PlaceOfProductionOfArray() );
      historyData := selectset( historyData, Elements, item, placeOfProductionOfArrayStrings.Find( item.OrgCodeFromBom() ) > -1 );
      targeGlobal_MappingAnnualBudgetDatas := selectset( targeGlobal_MappingAnnualBudgetDatas, Elements, item, placeOfProductionOfArrayStrings.Find( item.OrganCode() ) > -1 );
    }
    //info( "historyData : " + [String]historyData.Size() );
    traverse( historyData, Elements, item ) {
      row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, item.BusinessType(), item.OrgCodeFromBom() );
    info( "选中的个数:", targeGlobal_MappingAnnualBudgetDatas.Size() );
    traverse ( targeGlobal_MappingAnnualBudgetDatas, Elements, gmabd ) {
      row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, gmabd.BusinessType(), gmabd.OrganCode() );
      // è®°å½•每行包含哪些product
      CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, item.ProductID() );
      CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, gmabd.ProductID() );
    }
    rows := selectset( this, CapacityAndSaleBudgeChartRow, item, true );
    //info( "rows : " + [String]rows.Size() );
    placeOfProductionOfArrayList := selectuniquevalues( historyData, Elements, item, item.OrgCodeFromBom() );
    //traverse( placeOfProductionOfArrayList, Elements, item ) {
    //  info( "placeOfProduction : " + item );
    //}
    businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
    //traverse( businessTypeList, Elements, item ) {
    //  info( "businessType : " + item );
    //}
    placeOfProductionOfArrayList := selectuniquevalues( targeGlobal_MappingAnnualBudgetDatas, Elements, tempGMABD, tempGMABD.OrganCode() );
    businessTypeList := selectuniquevalues( targeGlobal_MappingAnnualBudgetDatas, Elements, tempGMABD, tempGMABD.BusinessType() );
    // ç”Ÿæˆå›¾è¡¨å…ƒç´ 
    traverse( years, Elements, year ) {
    //  debuginfo( "process year start : " + [String]year.YearNo() );
      if( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "å¹´" ) {
    traverse ( years, Elements, year ) {
      if ( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "å¹´" ) {
        // ç›®æ ‡
        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
        traverse ( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-目标",
@@ -89,9 +63,9 @@
                                                 Quantity := ifexpr( saleOrCapacity = "销售额",
                                                                     Global_MappingAnnualBudgetData::GetSaleByYear( productCodeList, otdTable, year.YearNo() ),
                                                                     Global_MappingForecast::GetQuantityByYear( productCodeList, otdTable, year.YearNo() ) )
                                                 );
                                                );
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
          traverse ( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
@@ -286,17 +260,16 @@
    //      debuginfo( "process month end : " + [String]month.MonthNo() );
        }
      }
    //  debuginfo( "process year end : " + [String]year.YearNo() )
    }
    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
    //  info( "==↓==" );
    //  info( row.BusinessType() );
    //  info( row.PlaceOfProductionOfArray() );
    //  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true );
    //  info( elements.Size() );
    //  info( row.GetProductCodes().Concatenate( " | " ) );
    //  info( "==↑==" );
    //}
    ////info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
    ////traverse( this, CapacityAndSaleBudgeChartRow, row ) {
    ////  info( "==↓==" );
    ////  info( row.BusinessType() );
    ////  info( row.PlaceOfProductionOfArray() );
    ////  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true );
    ////  info( elements.Size() );
    ////  info( row.GetProductCodes().Concatenate( " | " ) );
    ////  info( "==↑==" );
    ////}
  *]
}
_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl
@@ -11,35 +11,22 @@
  Description: 'todo : mappingParent改为mpSync, random删了'
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    // ====不选时默认全选====
    if( years.Size() = 0 ) {
      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
    if ( years.Size() = 0 ) {
      years := selectset( this, CapacityAndSaleBudgeFilterYear, tempCASBFY, tempCASBFY.YearNo() = Date::ActualDate().Year() );
    }
    if( months.Size() = 0 ) {
    if ( months.Size() = 0 ) {
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
    }
    traverse( macroPlans, Elements, item ) {
      debuginfo( "scenario : " + item.ScenarioName() );
    }
    traverse( items, Elements, item ) {
      debuginfo( "item : " + item.ItemName() );
    }
    traverse( years, Elements, item ) {
      debuginfo( "year : " + [String]item.YearNo() );
    }
    traverse( months, Elements, item ) {
      debuginfo( "month : " + [String]item.MonthNo() );
    }
    // ====清理旧数据====
    this.CapacityAndSaleBudgeCompareItemRow( relflush );
    this.CapacityAndSaleBudgeCompareItemColumn( relflush );
    // ====汇总所有出现的产品====
    historyData := selectset( otdTable, Global_MappingAnnualBudgetData, item, true );
    debuginfo( "historyData : " + [String]historyData.Size() );
    
    traverse( historyData, Elements, one ) {
      productCode := one.ProductID();
    // ====汇总所有出现的产品====
    targetglobal_MappingAnnualBudgetData := selectset( otdTable, Global_MappingAnnualBudgetData, item, true );
    traverse ( targetglobal_MappingAnnualBudgetData, Elements, gmabd ) {
      productCode := gmabd.ProductID();
    //  Global_MappingOperationBOM::CreateTestData( otdTable, "事业部" + [String](productCode.Length() mod 3), "面板基地" + [String](productCode.Length() mod 4), productCode );
    //  boms := selectset( otdTable, Global_MappingOperationBOM, bom, bom.ProductCode() = productCode );
    //  if( boms.Size() > 0 ) {
@@ -47,17 +34,16 @@
    //    businessType := bom.BusinessType();
    //    placeOfProductionOfArray := bom.OrganCode();
        // ç›¸åŒé¢æ¿åŸºåœ°å’Œäº‹ä¸šéƒ¨çš„æ”¾ä¸€è¡Œ
        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, one.BusinessType(), one.OrgCodeFromBom() );
        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, gmabd.BusinessType(), gmabd.OrganCode() );
        // è®°å½•每行包含哪些product
        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
    //  } else {
    //    debuginfo( "no boms for product : " + productCode );
    //  }
    }
    debuginfo( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
    // ====从左向右生成列头与内容====
    // äº‹ä¸šéƒ¨ï¼Œé¢æ¿åŸºåœ°
    debuginfo( "dealing businessType and placeOfProductionOfArray" )
    columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "事业部" );
    columnPlaceOfProductionOfArray := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板基地" );
    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -66,100 +52,159 @@
      cell := columnPlaceOfProductionOfArray.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.PlaceOfProductionOfArray() );
      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    }
    // é¢æ¿åˆ†é…é‡ - å¹´åº¦é¢„ç®— (sheets)
    // æ ¼å¼ï¼š é¢æ¿åˆ†é…é‡ - å¹´ - æœˆï¼ˆ1-12 & total) - å¹´åº¦é¢„ç®—/scenarioName
    debuginfo( "dealing é¢æ¿åˆ†é…é‡" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      traverse( years, Elements, year ) {
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´" );
    if ( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      traverse ( years, Elements, year ) {
        // åŽ†å²æ•°æ®
        debuginfo( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := Global_MappingForecast::GetQuantityByMonth( row.GetProductCodes(), otdTable, DateTime::Now().Year(), month.MonthNo() );
            cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    traverse ( months, Elements, month ) {
    //      columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
    //      traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //        cellReal := Global_MappingForecast::GetQuantityByMonth( row.GetProductCodes(), otdTable, DateTime::Now().Year(), month.MonthNo() );
    //        cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //      }
    //    }
    //    columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-total-年度预算" );
    //    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //      cellReal := Global_MappingForecast::GetQuantityByYear( row.GetProductCodes(), otdTable, year.YearNo() );
    //      cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    }
        traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
          total := 0.0;
          traverse ( months, Elements, m ) {
            columnName  := "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]m.MonthNo() + "月-年度预算";
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, columnName );
            cellReal    := Global_MappingForecast::GetQuantityByMonth( casbcir.GetProductCodes(), otdTable, DateTime::Now().Year(), m.MonthNo() );
            cell        := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            total       := total + cellReal;
            cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
          }
          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-total-年度预算" );
          cell       := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
          columnYear.TotalIdentification( year.YearNo() );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
        }
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-total-年度预算" );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          cellReal := Global_MappingForecast::GetQuantityByYear( row.GetProductCodes(), otdTable, year.YearNo() );
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this,
                                                                                    "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
              cellReal := Product_MP::GetNewSupplyByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    traverse ( macroPlans, Elements, macroPlan ) {
    //      traverse ( months, Elements, month ) {
    //        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this,
    //                                                                                "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
    //        traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //          cellReal := Product_MP::GetNewSupplyByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
    //          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //        }
    //      }
    //      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this,
    //                                                                             "面板分配量-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
    //      traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //        cellReal := Product_MP::GetNewSupplyByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
    //        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //      }
    //    }
        traverse ( macroPlans, Elements, mp ) {
          traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
            total := 0.0;
            traverse ( months, Elements, m ) {
              columnName  := "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]m.MonthNo() + "月-" + mp.ScenarioName();
              columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, columnName );
              cellReal    := Product_MP::GetNewSupplyByMonth( casbcir.GetProductCodes(), mp, year.YearNo(), m.MonthNo() );
              cell        := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              total       := total + cellReal;
              cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
            }
          }
          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this,
                                                                                 "面板分配量-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := Product_MP::GetNewSupplyByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
            columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-total-" + mp.ScenarioName() );
            cell       := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
            columnYear.TotalIdentification( year.YearNo() );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
          }
        }
      }
    }
    // å¹´åº¦é”€å”®é¢
    debuginfo( "dealing é”€å”®é¢" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      traverse( years, Elements, year ) {
        debuginfo( "销售额" + [String]year.YearNo() + "å¹´" );
    if ( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      traverse ( years, Elements, year ) {
        // åŽ†å²æ•°æ®
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := Global_MappingAnnualBudgetData::GetSaleByMonth( row.GetProductCodes(), otdTable, year.YearNo(), month.MonthNo() );
            cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    traverse ( months, Elements, month ) {
    //      columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
    //      traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //        cellReal := Global_MappingAnnualBudgetData::GetSaleByMonth( row.GetProductCodes(), otdTable, year.YearNo(), month.MonthNo() );
    //        cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //      }
    //    }
    //    columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-年度预算" );
    //    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //      cellReal := Global_MappingAnnualBudgetData::GetSaleByYear( row.GetProductCodes(), otdTable, year.YearNo() );
    //      cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    }
        traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
          total := 0.0;
          traverse ( months, Elements, m ) {
            columnName  := "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]m.MonthNo() + "月-年度预算";
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, columnName );
            cellReal    := Global_MappingAnnualBudgetData::GetSaleByMonth( casbcir.GetProductCodes(), otdTable, year.YearNo(), m.MonthNo() );
            cell        := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            total       := total + cellReal;
            cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
          }
          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-total-年度预算" );
          cell       := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
          columnYear.TotalIdentification( year.YearNo() );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
        }
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-年度预算" );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          cellReal := Global_MappingAnnualBudgetData::GetSaleByYear( row.GetProductCodes(), otdTable, year.YearNo() );
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
              cellReal := Forecast::GetFulfilledBalanceByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //    traverse ( macroPlans, Elements, macroPlan ) {
    //      traverse ( months, Elements, month ) {
    //        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
    //        traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //          cellReal := Forecast::GetFulfilledBalanceByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
    //          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //        }
    //      }
    //      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
    //      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
    //        // QID 23
    //        cellReal := Forecast::GetFulfilledBalanceByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
    //        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
    //        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
    //      }
    //    }
        traverse ( macroPlans, Elements, mp ) {
          traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
            total := 0.0;
            traverse ( months, Elements, m ) {
              columnName  := "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]m.MonthNo() + "月-" + mp.ScenarioName();
              columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, columnName );
              cellReal    := Forecast::GetFulfilledBalanceByMonth( casbcir.GetProductCodes(), mp, year.YearNo(), m.MonthNo() );
              cell        := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              total       := total + cellReal;
              cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
            }
          }
          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            // QID 23
            cellReal := Forecast::GetFulfilledBalanceByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
            columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-total-" + mp.ScenarioName() );
            cell       := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
            columnYear.TotalIdentification( year.YearNo() );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
          }
        }
      }
    }
    // å¤§å¼ ç›ˆåˆ©é¢
    debuginfo( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
    traverse ( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo
        // QID 23
      traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
@@ -173,19 +218,17 @@
      }
    }
    // äº§å“ç›ˆåˆ©é¢
    debuginfo( "dealing äº§å“ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
    traverse ( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo
      traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
      // S&OP数据
      traverse( macroPlans, Elements, macroPlan ) {
      traverse ( macroPlans, Elements, macroPlan ) {
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName() );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        traverse ( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          // todo
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
@@ -194,7 +237,6 @@
    }
    
    // è®¾ç½®rowNo和columnNo
    debuginfo( "set rowNo and columnNo" );
    rowNo := 1;
    rowSorted := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, item, item.PlaceOfProductionOfArray() + "_" + item.BusinessType() );
    traverse( rowSorted, Elements, item ) {
@@ -206,6 +248,5 @@
      item.ColumnNo( columnNo );
      columnNo := columnNo + 1;
    }
    debuginfo( "done" );
  *]
}
_Main/BL/Type_GlobalParameters/Attribute_Address.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Address
{
  #keys: '3[412960.0.369930086][412960.0.369930085][412960.0.369930087]'
  Description: 'Api使用的地址'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_AttributeName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute AttributeName
{
  #keys: '3[412960.0.369930046][412960.0.369930045][412960.0.369930047]'
  Description: '变量名称'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_AttributeValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute AttributeValue
{
  #keys: '3[412960.0.369930056][412960.0.369930055][412960.0.369930057]'
  Description: '变量值'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_Port.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Port
{
  #keys: '3[412960.0.369930066][412960.0.369930065][412960.0.369930067]'
  Description: 'Api使用的端口'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_PostRequestBody.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PostRequestBody
{
  #keys: '3[412960.0.369930076][412960.0.369930075][412960.0.369930077]'
  Description: 'Api使用的post body'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/StaticMethod_TestForApiRequest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,172 @@
Quintiq file version 2.0
#parent: #root
StaticMethod TestForApiRequest (
  GlobalOTDTable owner
)
{
  TextBody:
  [*
    // Administrator Oct-26-2023 (created)
    //info( "Sales Segment Finished, Start Get StockingPoint From Api" )
    //bodynumber := "2";
    //postrequestbody := JSON::Object()
    //                    .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
    //                    .Add( "fromSystemCode", "OTDH000" + bodynumber )
    //                    .Add( "toInterfaceCode", "QIDH000" + bodynumber )
    //                    .Add( "ouZone", "OU_TMSH" )
    //                    .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
    //                    .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
    //                    .Add( "dataType", "JSON" )
    //                    .Add( "data", JSON::Object()
    //                                  .Add( "pageIndex", "1" ) ).Build();
    //
    //info( DateTime::Now().Format( "Y-M2-D2 H:m:s" ) );
    //postrequestbodystring := postrequestbody.AsString();
    //info( postrequestbodystring );
    //
    //parameter := select( owner, GlobalParameters, param, param.AttributeName() = "test" );
    //body := parameter.PostRequestBody();
    //address := parameter.Address();
    //url := parameter.AttributeValue();
    //port := [Number]parameter.Port();
    //
    //// for HTTPS requests:
    //i := HTTPInterface::Create( address, port);
    ////i := HTTPInterface::Create( address ,443);
    //info( address, url, port, body );
    //
    //i.URL(url);
    //i.SSL(false);
    ////i.SSL(true);
    ////i.SSLKeystore('MyKeystore'); // created in the Config Utility
    //
    //i.PostMethod(true); //it's a POST method
    //
    //i.Call(body); // Call's argument is for POST method's content.
    //htmlresult := i.Result();
    //info( htmlresult );
    //
    //htmlresponse := JSON::Parse( htmlresult );
    //info( htmlresponse );
    info( "Init StockingPoint For Api" )
    existparameter := select( owner, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    if( not isnull( existparameter ) ){
      existparameter.Delete();
      }
    spparameter := owner.GlobalParameters( relnew );
    spparameter.AttributeName( "StockingPoint" );
    spparameter.AttributeValue( "/otdService/https/GetStockingPointsInfo" );
    spparameter.Address( "api-uat-sgc.tianma.cn" );
    spparameter.Port( "443" );
    bodynumber := "2";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    postrequestbodystring := postrequestbody.AsString();
    spparameter.PostRequestBody( postrequestbodystring );
    info( "Init CurrencyInfo For Api" )
    existparameter := select( owner, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    if( not isnull( existparameter ) ){
      existparameter.Delete();
      }
    ciparameter := owner.GlobalParameters( relnew );
    ciparameter.AttributeName( "CurrencyInfo" );
    ciparameter.AttributeValue( "/otdService/https/GetCurrenciesInfo" );
    ciparameter.Address( "api-uat-sgc.tianma.cn" );
    ciparameter.Port( "443" );
    bodynumber := "1";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    postrequestbodystring := postrequestbody.AsString();
    ciparameter.PostRequestBody( postrequestbodystring );
    info( "Init CurrencyRates For Api" )
    existparameter := select( owner, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    if( not isnull( existparameter ) ){
      existparameter.Delete();
      }
    crparameter := owner.GlobalParameters( relnew );
    crparameter.AttributeName( "CurrencyRates" );
    crparameter.AttributeValue( "/otdService/https/GetCurrencyRatesInfo" );
    crparameter.Address( "api-uat-sgc.tianma.cn" );
    crparameter.Port( "443" );
    bodynumber := "5";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    postrequestbodystring := postrequestbody.AsString();
    crparameter.PostRequestBody( postrequestbodystring );
    info( "Init Lanes For Api" )
    existparameter := select( owner, GlobalParameters, param, param.AttributeName() = "Lanes" );
    if( not isnull( existparameter ) ){
      existparameter.Delete();
      }
    lparameter := owner.GlobalParameters( relnew );
    lparameter.AttributeName( "Lanes" );
    lparameter.AttributeValue( "/otdService/https/GetLanesInfo" );
    lparameter.Address( "api-uat-sgc.tianma.cn" );
    lparameter.Port( "443" );
    bodynumber := "3";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    postrequestbodystring := postrequestbody.AsString();
    lparameter.PostRequestBody( postrequestbodystring );
    info( "Init LaneLegs For Api" )
    existparameter := select( owner, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    if( not isnull( existparameter ) ){
      existparameter.Delete();
      }
    llparameter := owner.GlobalParameters( relnew );
    llparameter.AttributeName( "LaneLegs" );
    llparameter.AttributeValue( "/otdService/https/GetLaneLegsInfo" );
    llparameter.Address( "api-uat-sgc.tianma.cn" );
    llparameter.Port( "443" );
    bodynumber := "4";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    postrequestbodystring := postrequestbody.AsString();
    llparameter.PostRequestBody( postrequestbodystring );
  *]
}
_Main/BL/Type_GlobalParameters/_ROOT_Type_GlobalParameters.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type GlobalParameters
{
  #keys: '5[412960.0.369930026][412960.0.369930024][0.0.0][412960.0.369930025][412960.0.369930027]'
  BaseType: Object
  Description: '全局参数'
  StructuredName: 'GlobalParameterss'
}
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_Critical.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Critical
{
  #keys: '3[414882.0.72610025][414882.0.72610024][414882.0.72610026]'
  Description: '关键物料'
  ValueType: Boolean
}
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcCritical.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcCritical
{
  TextBody:
  [*
    // hongjli Oct-24-2023 (created)
    value := guard( select( this, Global_MappingProduct_MP, tempGMPMP, true ).Critical(), false );
    this.Critical(value);
  *]
}
_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingCurrencyRate_MP( relflush );
    
    bodynumber := "5";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrencyRatesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingCurrency_MP( relflush );
    
    bodynumber := "1";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrenciesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingLane( relflush );
    
    bodynumber := "3";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLanesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "Lanes" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingLaneLeg( relflush );
    
    bodynumber := "4";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLaneLegsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingProduct_MP/Attribute_Critical.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Critical
{
  #keys: '3[414882.0.72574612][414882.0.72574611][414882.0.72574613]'
  Description: '关键物料'
  ValueType: Boolean
}
_Main/BL/Type_Global_MappingProduct_MP/Attribute_KeyProduct.qbl
@@ -3,5 +3,10 @@
Attribute KeyProduct
{
  #keys: '3[414702.0.247711010][414702.0.247711009][414702.0.247711011]'
  Description:
  [*
    å·²å¼ƒç”¨
    å…³é”®ç‰©æ–™æ²¡æœ‰æ•°æ®æ¥æºï¼Œä»¥åŽä»Žå…¶ä»–属性计算得到,改为Critical
  *]
  ValueType: Boolean
}
_Main/BL/Type_Global_MappingProduct_MP/Function_CalcCritical.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Function CalcCritical
{
  TextBody:
  [*
    // renhao Oct-30-2023 (created)
    value := this.ProductMajorType()="成品" or this.ProductMajorType()="半成品";
    this.Critical(value);
  *]
}
_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingStockingPoint_MP( relflush );
    
    bodynumber := "2";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetStockingPointsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoASync.qbl
@@ -3,7 +3,7 @@
StaticMethod DoASync (
  MacroPlan macroPlan,
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
  Strings businessTypeNames
)
{
  TextBody:
@@ -12,6 +12,6 @@
    //info( "ActualPISPIP Finished, Start InventoryCost Data Broker" );
    //macroPlan.Broker_OTD_InventoryCost().Execute();
    info( "InventoryCost Data Broker Finished, Start InventoryCost Mapping" );
    macroPlan.DoASyncMappingInventoryValueAndCostData(globalOTDTable,businessTypeName);
    macroPlan.DoASyncMappingInventoryValueAndCostData(globalOTDTable,businessTypeNames);
  *]
}
_Main/BL/Type_MacroPlan/Method_DoASyncMappingActualPISPIPData.qbl
@@ -12,9 +12,10 @@
    // renhao Aug-14-2023 (created)
    listtodeal := construct( Global_MappingActualProductInStockingPointInPeriods, constcontent );
    if ( businessTypes.Size() > 0 ) {
      businessTypeName := businessTypes.Element( 0 );
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_MAPISPIPCategory.Global_MappingActualProductInStockingPointInPeriod,
      targetGlobal_ProductCategory := selectset( globalOTDTable, Global_ProductCategory, tempGPC,
                                                 exists( businessTypes, Elements, tempBTN, tempBTN = tempGPC.BusinessTypeName() ) );
      listtodeal := selectset( targetGlobal_ProductCategory,
                               Elements.Global_MappingProduct_MP.Global_MAPISPIPCategory.Global_MappingActualProductInStockingPointInPeriod,
                               tempGMPIL, 
                               ( tempGMPIL.ActualInventoryLevelEnd() > 0 ) and 
                               ( organcodelist.Find( tempGMPIL.StockingPointID().SubString( 0, 3 ) ) >= 0 ) );
@@ -35,10 +36,11 @@
        info( "Now is dealing with the " + count.AsQUILL() + "ActualPISPIP " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
        }
      //product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = actual.ProductID() and product.KeyProduct() = nuclear,true);
      if( /*not isnull( product*/ guard( actual.Global_MAPISPIPCategory().KeyProduct() = nuclear, false ) ){
      //if( guard( actual.Global_MAPISPIPCategory().KeyProduct() = nuclear, false ) ){
      if( not nuclear or (nuclear and actual.Global_MAPISPIPCategory().Critical() = nuclear) ){
      if( not isnull(businessTypes)){
      
        for( i :=0 ;i < businessTypes.Size();i++ ){
          //businessType := businessTypes.Element( i );
          if( /*product.BusinessType() = businessType and not product.IsCommon()*/ not actual.Global_MAPISPIPCategory().IsCommon() ){
            ActualProductInStockingPointInPeriod::CreateOrUpdate( this,
@@ -48,7 +50,7 @@
                                                                  actual.ActualInventoryLevelEnd(),
                                                                  actual.ManufacturedDate());
          }
        }
        
      }else{
        ActualProductInStockingPointInPeriod::CreateOrUpdate( this,
_Main/BL/Type_MacroPlan/Method_DoASyncMappingExternalSupplyData.qbl
@@ -15,9 +15,10 @@
    
    listtodeal := construct( Global_MappingInventorySupplys, constcontent );
    if ( businessTypes.Size() > 0 ) {
      businessTypeName := businessTypes.Element( 0 );
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_InventorySupplyCategory.Global_MappingInventorySupply,
      targetGlobal_ProductCategory := selectset( globalOTDTable, Global_ProductCategory, tempGPC,
                                                 exists( businessTypes, Elements, tempBTN, tempBTN = tempGPC.BusinessTypeName() ) );
      listtodeal := selectset( targetGlobal_ProductCategory,
                               Elements.Global_MappingProduct_MP.Global_InventorySupplyCategory.Global_MappingInventorySupply,
                               tempGMIS, 
                               ( tempGMIS.UserQuantity()>0 ) and 
                               ( tempGMIS.Date() >= queryStartDate ) and 
_Main/BL/Type_MacroPlan/Method_DoASyncMappingInventoryValueAndCostData.qbl
@@ -2,18 +2,22 @@
#parent: #root
Method DoASyncMappingInventoryValueAndCostData (
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
  Strings businessTypeNames
)
{
  TextBody:
  [*
    // yypsybs Aug-15-2023 (created)
    listtodeal := construct( Global_MappingStockingPointCosts, constcontent );
    if ( businessTypeName = "" ) {
    if ( businessTypeNames.Size() = 0 ) {
      listtodeal := selectset( globalOTDTable,Global_MappingStockingPointCost,item,true );
    } else {
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_StockingPointCostCategory.Global_MappingStockingPointCost, tempGMPIL, true );
      targetGlobal_ProductCategory := selectset( globalOTDTable, Global_ProductCategory, tempGPC,
                                                 exists( businessTypeNames, Elements, tempBTN, tempBTN = tempGPC.BusinessTypeName() ) );
      listtodeal := selectset( targetGlobal_ProductCategory,
                               Elements.Global_MappingProduct_MP.Global_StockingPointCostCategory.Global_MappingStockingPointCost,
                               tempGMPIL,
                               true );
    }
    totalcount := listtodeal.Size();
    
_Main/BL/Type_MacroPlan/Method_DoASyncMappingOperationBOMDataRouting.qbl
@@ -65,8 +65,11 @@
                                                        true, trash );
                    mainBOM.Quantity( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
                    mainBOM.MaxQuantityInGroup( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
                    mainBOM.MinQuantityInGroup(0);
                    mainQty := mainBOM.Quantity();
                    Transaction::Transaction().Propagate();
                    altersize := alterRows.Size();
                    // æ·»åŠ è¾…æ–™
                    traverse( alterRows, Elements, alterRow ) {
                        alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
@@ -84,14 +87,23 @@
                          trash := construct( OperationBOMs );
                          if( not isnull( mainInput ) ) {
                              alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
                              alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
                              //alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
                              //alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
                              alterBom.Quantity( mainBOM.MaxQuantityInGroup() / altersize );
                              alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
                              alterBom.MinQuantityInGroup(0);
    //                          info( "Quantity" + [String]alterBom.Quantity() )
    //                          info( "MaxQuantityInGroup" + [String]alterBom.MaxQuantityInGroup() )
                              mainQty := mainQty - alterBom.Quantity();
                          }
                      }
                      mainBOM.Quantity( mainQty );
                      Transaction::Transaction().Propagate( relation( OperationBOM, OperationInputGroup));
                      if( not isnull( mainBOM.OperationInputGroup())){
                        mainBOM.OperationInputGroup().InputGroupQuantity(mainBOM.MaxQuantityInGroup());
                        mainBOM.Quantity( mainBOM.MaxQuantityInGroup() / altersize );
                      }
                   }
                }
              }
_Main/BL/Type_MacroPlan/Method_DoASyncMappingProductInLaneData.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method DoASyncMappingProductInLaneData (
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
  Strings businessTypeNames
)
{
  Description: 'Get Product In Line data'
@@ -11,11 +11,15 @@
    // Administrator Aug-17-2023 (created)
    // list to deal
    listtodeal := construct( Global_MappingProductInLanes, constcontent );
    if ( businessTypeName = "" ) {
    if ( businessTypeNames.Size() = 0 ) {
      listtodeal := selectset( globalOTDTable, Global_MappingProductInLane, item ,true );
    } else {
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_ProductInLineCategory.Global_MappingProductInLane, tempGMPIL, true );
      targetGlobal_ProductCategory := selectset( globalOTDTable, Global_ProductCategory, tempGPC,
                                                 exists( businessTypeNames, Elements, tempBTN, tempBTN = tempGPC.BusinessTypeName() ) );
      listtodeal := selectset( targetGlobal_ProductCategory,
                               Elements.Global_MappingProduct_MP.Global_ProductInLineCategory.Global_MappingProductInLane,
                               tempGMPIL,
                               true );
    }
    totalcount := listtodeal.Size();
    info( "ProductInLane has " + totalcount.AsQUILL() + " rows in total" );
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl
@@ -45,31 +45,31 @@
    
    // åº“存点-3
    info( "Sales Segment Finished, Start Get StockingPoint From Api" )
    bodynumber := "2";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetStockingPointsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiStockingPointData( data );
    
    // è´§å¸ä¿¡æ¯-4
    info( "Get StockingPoint From Api Finished, Start Get CurrencyInfo From Api" )
    bodynumber := "1";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrenciesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurenciesData( data );
    
    //货币汇率信息-5
    info( "Get CurrencyInfo From Api Finished, Start Get CurrencyRates From Api" )
    bodynumber := "5";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrencyRatesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurencyRatesData( data );
    
@@ -93,21 +93,21 @@
    
    //车道信息-10
    info( "BOM Finished, Start Get Lanes From Api" );
    bodynumber := "3";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLanesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "Lanes" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLanesData( data );
    
    //车道运输段-11
    info( "Get Lanes From Api Finished, Start Get LaneLegs From Api" );
    bodynumber := "4";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLaneLegsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLaneLegsData( data );
    
@@ -115,7 +115,7 @@
    //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
    //macroPlan.Broker_OTD_ProductInLane().Execute();
    info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
    macroPlan.DoASyncMappingProductInLaneData(globalOTDTable,guard( businessTypeName.Element( 0 ), "" ));
    macroPlan.DoASyncMappingProductInLaneData( globalOTDTable,businessTypeName );
    
    // åœ¨åº“库存数据-13
    //info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
@@ -130,7 +130,7 @@
    macroPlan.DoASyncMappingExternalSupplyData( businessTypeName, isKeyProduct ,globalOTDTable, organcodelist );
    
    // åº“存成本-15
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable,guard( businessTypeName.Element( 0 ), "" ) );
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable,businessTypeName );
    
    // todo åˆ¶é€ æˆæœ¬-16
    info( "InventoryCost Finished, Start OperationCost Mapping" );
_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportTheFileStream (
  PRDatas toExportList
) as BinaryValue
{
  TextBody:
  [*
    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>PR</name><column><name>物料编码</name><type>String</type></column><column><name>物料名称</name><type>String</type></column><column><name>面板物料标识</name><type>String</type></column><column><name>交货日期</name><type>String</type></column><column><name>PR建议日期</name><type>String</type></column><column><name>交货数量</name><type>Number</type></column><column><name>MRP计算版本号</name><type>String</type></column><column><name>业务类型</name><type>String</type></column><column><name>组织编码</name><type>String</type></column><column><name>是否长周期</name><type>String</type></column><column><name>是否专用料</name><type>String</type></column><column><name>物料计划策略</name><type>String</type></column><column><name>提前期</name><type>Number</type></column><column><name>供应商代码</name><type>String</type></column><column><name>供应商名称</name><type>String</type></column><column><name>收货库存点</name><type>String</type></column><column><name>计量单位</name><type>String</type></column><column><name>PR数据发送状态</name><type>String</type></column><column><name>发送时间</name><type>String</type></column><column><name>发送人</name><type>String</type></column></table>';
    sc := DateToString::StandardConverter();
    sc.SetCustomConversion();
    sc.CustomFormatString( 'yyyy-MM-dd' );
    xmlDOMImplementation := XMLDOMImplementation::Create();
    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    traverse ( toExportList, Elements, prd ) {
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.ProductID(), "物料编码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.ProductName(), "物料名称" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.IsPanelMaterial(), "面板物料标识" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, sc.Convert( prd.DeliveryDate() ), "交货日期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, sc.Convert( prd.PRSuggestionDate() ), "PR建议日期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]( prd.Quantity().Round( 0 ) ), "交货数量" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.MRPCalverNo(), "MRP计算版本号" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.BusinessType(), "业务类型" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.OrganCode(), "组织编码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.IsLongLeadItem(), "是否长周期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.IsGenericMaterial(), "是否专用料" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.MaterialMRPType(), "物料计划策略" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]prd.LeadTime(), "提前期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.ProviderCode(), "供应商代码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.ProviderName(), "供应商名称" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.StockingPointID(), "收货库存点" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.UnitOfMeasure(), "计量单位" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.PRReleaseStatus(), "PR数据发送状态" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.CreateTimeString(), "发送时间" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, prd.CreateBy(), "发送人" );
    }
    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
    tableGroupHandle := TableGroupHandle::Create( "PR" );
    tableGroupHandle.Add( tableHandle );
    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return tableBinaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_PRData/StaticMethod_GeneratesTheSpecifiedXMLColumn#56.qbl
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -85,6 +85,7 @@
        Component MenuDoSync { #keys: '[414384.0.605664172]' BaseType: 'Menu' Properties: [ Image: 'CLOUD_DOWNLOAD' Text: 'DoSync' ] }
        Component menuSeparator506 { #keys: '[414702.0.137524309]' BaseType: 'Menu' Properties: [ Separator: true ] }
        Component ComponentMenuAnalysisGlobalOTDTable { #keys: '[414702.0.137524953]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysisGlobalOTDTable' Text: '' ] }
        Component ComponentMenu749 { #keys: '[414702.1.273394009]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis633' Text: '' ] }
      ]
      Properties:
      [
@@ -103,6 +104,7 @@
          c: MenuDoSync
          c: menuSeparator506
          c: ComponentMenuAnalysisGlobalOTDTable
          c: ComponentMenu749
        }
      ]
    }
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/Component_swTop.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
Component swTop
{
  #keys: '[530.0.3531806]'
  BaseType: 'swTop'
  IsDerived: true
  Children:
  [
    Component spTopLeft
    {
      #keys: '[530.0.3531807]'
      BaseType: 'spTopLeft'
      IsDerived: true
      Children:
      [
        Component Analysis
        {
          #keys: '[530.0.3532065]'
          BaseType: 'Analysis'
          IsDerived: true
          Properties:
          [
            GlobalInstance: 'GlobalOTDSOP'
          ]
        }
      ]
    }
  ]
}
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/Component_swTopMost.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
Component swTopMost
{
  #keys: '[530.0.3531801]'
  BaseType: 'swTopMost'
  IsDerived: true
  Children:
  [
    Component SplitterPane1
    {
      #keys: '[530.0.3531802]'
      BaseType: 'SplitterPane1'
      IsDerived: true
      Children:
      [
        #child: swTop
      ]
    }
  ]
}
_Main/UI/MacroPlanner/Component_frmStandardAnalysis633/_ROOT_Component_frmStandardAnalysis633.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#root
#parent: MacroPlanner
OrphanComponent frmStandardAnalysis633
{
  #keys: '[414702.1.273394023]'
  BaseType: 'frmStandardAnalysis'
  Children:
  [
    #child: swTopMost
  ]
  Properties:
  [
    Height: 740
    Image: 'BEER_GLASS'
    Title: 'Analysis GlobalOTDSOP'
    Width: 1300
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component ActionBarGroupScenarioComparisonViews #extension
{
  Children:
  [
    Component ButtonAnnualProductionAndSalesReview
    {
      #keys: '[414702.1.286513416]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'COCKTAIL'
        Label: '年度产销复盘'
        Taborder: 8
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
Component ActionBarPageScenarioComparison #extension
{
  Children:
  [
    #child: ActionBarGroupScenarioComparisonViews
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
@@ -22,7 +22,7 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PIG'
        Image: 'LEMONADE_GLASS'
        Taborder: 6
        Title: '年度产销复盘'
      ]
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupScenarioComparisonViews_ButtonAnnualPro.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ActionBarGroupScenarioComparisonViews/ButtonAnnualProductionAndSalesReview
Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupScenarioComparisonViews_ButtonAnnualProductionAndSalesReview_OnClick
{
  #keys: '[414702.1.288075432]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
  *]
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "年度产销复盘", true );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -15,6 +15,7 @@
        #child: ActionBarPagePlan
        #child: ActionBarPageInventory
        #child: ActionBarPageScenarioSelection
        #child: ActionBarPageScenarioComparison
      ]
    }
    Component DataHolderCapacityAndSaleBudgeFilterItem
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_PanelGeneral#549.def
@@ -79,5 +79,15 @@
        Taborder: 4
      ]
    }
    Component dsPlanningStart
    {
      #keys: '[414702.1.259278858]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: '计划开始时间'
        Taborder: 8
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
@@ -123,6 +123,8 @@
    macroPlanNew.IsKeyProduct( data.IsKeyProduct() );
    macroPlanNew.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() );
    
    MacroPlan.UpdateStartOfPlanning( dsPlanningStart.Date().DateTime() );
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Response_TIANMA_JITUAN_PanelGeneral_549_dsPlanningStart_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelGeneral_549/dsPlanningStart
Response OnCreated () id:Response_TIANMA_JITUAN_PanelGeneral_549_dsPlanningStart_OnCreated
{
  #keys: '[414702.1.259420402]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      this.Date( Date::ActualDate() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412960.0.370310585]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[412960.0.370310589]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[412960.0.370310591]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412960.0.370310583]'
  BaseType: 'WebPanel'
  Children:
  [
    Component editAttributeName
    {
      #keys: '[412960.0.370311392]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.AttributeName'
        Label: '参数名称'
        Taborder: 1
      ]
    }
    Component editAttributeValue
    {
      #keys: '[412960.0.370311429]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.AttributeValue'
        Label: '参数值'
        Taborder: 2
      ]
    }
    Component editAddress
    {
      #keys: '[412960.0.370311489]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.Address'
        Label: 'Api地址'
        Taborder: 3
        Visible: false
      ]
    }
    Component editPort
    {
      #keys: '[412960.0.370311527]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.Port'
        Label: 'Api端口号'
        Taborder: 4
        Visible: false
      ]
    }
    Component editPostRequestBody
    {
      #keys: '[412960.0.370311577]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.PostRequestBody'
        Label: 'Api请求主体'
        Taborder: 5
        Visible: false
      ]
    }
    Component IsApi
    {
      #keys: '[412960.0.370311617]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Description: '是否为API相关参数'
        Label: 'API配置'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_ClickBtnOk.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method ClickBtnOk () id:Method_DialogGlobalParameters_ClickBtnOk
{
  #keys: '[412960.0.370310978]'
  Body:
  [*
    // Disabled button to prevent the possibility of multiple firing
    btnOk.Enabled(false,'');
    // OnOk
    this.ApplyChanges();
    DataHolderGlobalParameters.Data().Commit();
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  GlobalParameters selection
) id:Method_DialogGlobalParameters_Edit
{
  #keys: '[412960.0.370310979]'
  Body:
  [*
    // Edits assumption
    data := shadow( selection );
    DataHolderGlobalParameters.Data( &data );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_New.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method New (
  GlobalOTDTable owner
) id:Method_DialogGlobalParameters_New
{
  #keys: '[412960.0.370310981]'
  Body:
  [*
    data := owner.GlobalParameters(relshadow);
    DataHolderGlobalParameters.Data( &data);
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[412960.0.370310595]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[412960.0.370310594]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ClickBtnOk()
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlContent_IsApi_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlContent/IsApi
Response OnChanged () id:Response_pnlContent_IsApi_OnChanged
{
  #keys: '[412960.0.370311653]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      editAddress.Visible( this.Checked() );
      editPort.Visible( this.Checked() );
      editPostRequestBody.Visible( this.Checked() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/_ROOT_Component_DialogGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogGlobalParameters
{
  #keys: '[412960.0.370310581]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderGlobalParameters
    {
      #keys: '[412960.0.370311111]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[GlobalParameters]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def
@@ -2,7 +2,7 @@
#parent: ListBusinessType
Response OnClick () id:Response_ListBusinessType_MenuNew_OnClick
{
  #keys: '[414382.0.377975353]'
  #keys: '[412960.0.373110863]'
  CanBindMultiple: false
  DefinitionID => /ListBusinessType/Responsedef_ListBusinessType_WebMenu_OnClick
  GroupServerCalls: true
_Main/UI/MacroPlannerWebApp/Component_Form633/Component_PanelPRDataButton.def
@@ -41,6 +41,8 @@
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_DataHolderChecked_OnDataChanged#774.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged#613.def
@@ -5,13 +5,12 @@
  #keys: '[414384.0.798051611]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      info( "checked 0 PRs" );
      DataHolderChecked.Data().Flush();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_OnUserCheckedChanged.def
@@ -7,13 +7,12 @@
  #keys: '[414384.0.798051163]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      info( "checked " + [String]checkeditems.Size() + " PRs" );
      DataHolderChecked.Data( checkeditems.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonExportPR_OnClick.def
@@ -13,7 +13,7 @@
  {
    Body:
    [*
      Application.Download( "PRData.xlsx", PRData::Export( MacroPlan ) );
      Application.Download( "PRData.xlsx", PRData::ExportTheFileStream( DataHolderChecked.Data() ).AsBinaryData() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -12,7 +12,6 @@
      Properties:
      [
        DataType: 'GlobalOTDTable'
        FixedFilter: '[Number]object.YearNo() = Date::ActualDate().Year()'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'Global_MappingAnnualBudgetData'
@@ -29,7 +28,7 @@
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechSort","title":"DisplayTechSort","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechSort"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessSort","title":"BusinessSort","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessSort"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductLineAndSpecification","title":"ProductLineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductLineAndSpecification"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCodeFromBom","title":"OrgCodeFromBom","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCodeFromBom"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ResolutionRatio","title":"ResolutionRatio","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ResolutionRatio"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CutsNumber","title":"CutsNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CutsNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaskNumber","title":"MaskNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaskNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity1","title":"MonthlyModCapacity1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity2","title":"MonthlyModCapacity2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity3","title":"MonthlyModCapacity3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity4","title":"MonthlyModCapacity4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity5","title":"MonthlyModCapacity5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity6","title":"MonthlyModCapacity6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity7","title":"MonthlyModCapacity7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity8","title":"MonthlyModCapacity8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity9","title":"MonthlyModCapacity9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity10","title":"MonthlyModCapacity10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity11","title":"MonthlyModCapacity11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity12","title":"MonthlyModCapacity12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity1","title":"MonthlySheetCapacity1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity2","title":"MonthlySheetCapacity2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity3","title":"MonthlySheetCapacity3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity4","title":"MonthlySheetCapacity4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity5","title":"MonthlySheetCapacity5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity6","title":"MonthlySheetCapacity6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity7","title":"MonthlySheetCapacity7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity8","title":"MonthlySheetCapacity8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity9","title":"MonthlySheetCapacity9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity10","title":"MonthlySheetCapacity10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity11","title":"MonthlySheetCapacity11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity12","title":"MonthlySheetCapacity12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales1","title":"MonthlySales1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales2","title":"MonthlySales2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales3","title":"MonthlySales3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales4","title":"MonthlySales4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales5","title":"MonthlySales5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales6","title":"MonthlySales6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales7","title":"MonthlySales7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales8","title":"MonthlySales8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales9","title":"MonthlySales9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales10","title":"MonthlySales10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales11","title":"MonthlySales11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales12","title":"MonthlySales12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales12"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechSort","title":"DisplayTechSort","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechSort"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessSort","title":"BusinessSort","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessSort"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductLineAndSpecification","title":"ProductLineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductLineAndSpecification"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCodeFromBom","title":"OrgCodeFromBom","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCodeFromBom"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ResolutionRatio","title":"ResolutionRatio","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ResolutionRatio"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CutsNumber","title":"CutsNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CutsNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaskNumber","title":"MaskNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaskNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity1","title":"MonthlyModCapacity1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity2","title":"MonthlyModCapacity2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity3","title":"MonthlyModCapacity3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity4","title":"MonthlyModCapacity4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity5","title":"MonthlyModCapacity5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity6","title":"MonthlyModCapacity6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity7","title":"MonthlyModCapacity7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity8","title":"MonthlyModCapacity8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity9","title":"MonthlyModCapacity9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity10","title":"MonthlyModCapacity10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity11","title":"MonthlyModCapacity11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlyModCapacity12","title":"MonthlyModCapacity12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlyModCapacity12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity1","title":"MonthlySheetCapacity1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity2","title":"MonthlySheetCapacity2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity3","title":"MonthlySheetCapacity3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity4","title":"MonthlySheetCapacity4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity5","title":"MonthlySheetCapacity5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity6","title":"MonthlySheetCapacity6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity7","title":"MonthlySheetCapacity7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity8","title":"MonthlySheetCapacity8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity9","title":"MonthlySheetCapacity9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity10","title":"MonthlySheetCapacity10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity11","title":"MonthlySheetCapacity11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySheetCapacity12","title":"MonthlySheetCapacity12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySheetCapacity12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales1","title":"MonthlySales1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales2","title":"MonthlySales2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales3","title":"MonthlySales3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales4","title":"MonthlySales4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales5","title":"MonthlySales5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales6","title":"MonthlySales6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales7","title":"MonthlySales7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales8","title":"MonthlySales8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales9","title":"MonthlySales9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales10","title":"MonthlySales10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales11","title":"MonthlySales11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthlySales12","title":"MonthlySales12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthlySales12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganCode"}}]'
        ContextMenu: 'listContextMenuCapacityAndSaleBudge'
        SortCriteria: 'BusinessSort;OrganCode;ProductID'
        Taborder: 2
@@ -38,6 +37,6 @@
  ]
  Properties:
  [
    Taborder: 2
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_pButton.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
Component pButton
{
  #keys: '[414702.1.268476564]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonGenerateTestData id:ButtonGenerateTestData_136
    {
      #keys: '[414702.1.266041306]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'ARROW_CIRCLE2'
        Label: '刷新筛选数据'
        Taborder: 0
      ]
    }
    Component ButtonExportDetail id:ButtonExportDetail_97
    {
      #keys: '[414702.1.266041310]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 2
      ]
    }
    Component ButtonCreateData
    {
      #keys: '[414702.1.266042204]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'ICE_CREAM'
        Label: '生成数据'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonCreateData_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: pButton/ButtonCreateData
Response OnClick () id:Response_pButton_ButtonCreateData_OnClick
{
  #keys: '[414702.1.266042218]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    flag := true;
    flag := GlobalOTDSOP.CapacityAndSaleBudgeFilterYear( relsize ) > 0                     and
            GlobalOTDSOP.CapacityAndSaleBudgeFilterBusinessType( relsize ) > 0             and
            GlobalOTDSOP.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relsize ) > 0;
    return flag;
  *]
  QuillAction
  {
    Body:
    [*
      option := WebMessageBox::Question( "请选择数据源", "数据湖|测试数据|取消" );
      if ( option = 0 ) {
        WebMessageBox::Error( "数据湖暂无数据", true );
      } else if ( option = 1 ) {
        if ( DataHolderCheckedProduct.Data().Size() = 0 ) {
          WebMessageBox::Error( "请先在左侧导航栏选择要生成测试数据的产品!", true );
        } else {
          GlobalOTDTable.InitTestDataByYear( MacroPlan,
                                             GlobalOTDSOP,
                                             DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                             DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
                                             DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
                                             DataHolderCheckedProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonExportDetail_OnClick#971.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportDetail_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: ButtonExportDetail
Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportDetail_OnClick
#parent: pButton/ButtonExportDetail_97
Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportDetail_OnClick_971
{
  #keys: '[414384.0.887310502]'
  #keys: '[414702.1.266041309]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_pButton_ButtonGenerateTestData_OnClick#19.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: pButton/ButtonGenerateTestData_136
Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonGenerateTestData_OnClick_19
{
  #keys: '[414702.1.266041305]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan ) and not isnull( GlobalOTDSOP ) and not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterItem::InitializedData( GlobalOTDSOP );
      CapacityAndSaleBudgeFilterYear::InitializedData( GlobalOTDSOP );
      CapacityAndSaleBudgeFilterMonth::InitializedData( GlobalOTDSOP );
      CapacityAndSaleBudgeFilterBusinessType::InitializedData( GlobalOTDSOP, GlobalOTDTable );
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::InitializedData( GlobalOTDSOP, GlobalOTDTable );
      GlobalOTDTable.Global_MappingAnnualBudgetData( relflush );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -8,28 +8,7 @@
  Children:
  [
    #child: ListCapacityAndSaleBudge
    Component ButtonExportDetail
    {
      #keys: '[414384.0.887310503]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
    Component ButtonGenerateTestData
    {
      #keys: '[414384.0.971540693]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '根据筛选年份生成测试数据'
        Taborder: 0
      ]
    }
    #child: pButton
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -80,6 +80,6 @@
  Properties:
  [
    ContextMenu: 'chartContextMenuCapacityAndSaleBudge'
    Taborder: 7
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_pFilterCriteria.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
Quintiq file version 2.0
Component pFilterCriteria
{
  #keys: '[414702.1.277336951]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DropDownByBusinessTypeOrByOrgCode id:DropDownByBusinessTypeOrByOrgCode_549
    {
      #keys: '[414702.1.277808126]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: '根据面板基地/事业部分组'
        Strings: '面板基地;事业部'
        Taborder: 1
      ]
    }
    Component DropDownTimeGroup id:DropDownTimeGroup_593
    {
      #keys: '[414702.1.277808195]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: '时间分组'
        Strings: '月;季度;半年;å¹´'
        Taborder: 2
      ]
    }
    Component DropDownSaleOrCapacity id:DropDownSaleOrCapacity_715
    {
      #keys: '[414702.1.277808264]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: '产能/销售额'
        Strings: '产能;销售额'
        Taborder: 3
      ]
    }
    Component ButtonCapacityAndSaleBudgeChartTest id:ButtonCapacityAndSaleBudgeChartTest_844
    {
      #keys: '[414702.1.277808330]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'PRESENTATION_CHART'
        Label: '生成图表'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_pFilterCriteria_ButtonCapacityAndSaleBudgeChartTest_OnClick#603.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def ÐÞ¸Ä
@@ -1,11 +1,10 @@
Quintiq file version 2.0
#parent: ButtonCapacityAndSaleBudgeChartTest
Response OnClick () id:Response_FormCapacityAndSaleBudgeChart_ButtonCapacityAndSaleBudgeChartTest_OnClick
#parent: pFilterCriteria/ButtonCapacityAndSaleBudgeChartTest_844
Response OnClick () id:Response_FormCapacityAndSaleBudgeChart_ButtonCapacityAndSaleBudgeChartTest_OnClick_603
{
  #keys: '[414384.0.857443403]'
  #keys: '[414702.1.277808329]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
@@ -22,5 +21,6 @@
                                              DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                              GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
@@ -8,16 +8,6 @@
  Children:
  [
    #child: ChartCapacityAndSaleBudgeChart
    Component ButtonCapacityAndSaleBudgeChartTest
    {
      #keys: '[414384.0.857443217]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '生成'
        Taborder: 6
      ]
    }
    Component DropDownYears
    {
      #keys: '[414384.0.857740648]'
@@ -25,7 +15,7 @@
      Properties:
      [
        Label: '年份'
        Taborder: 2
        Taborder: 0
        Visible: false
      ]
    }
@@ -37,7 +27,7 @@
      [
        AllowEmpty: true
        Label: '事业部'
        Taborder: 3
        Taborder: 1
        Visible: false
      ]
    }
@@ -49,46 +39,11 @@
      [
        AllowEmpty: true
        Label: '面板基地'
        Taborder: 4
        Taborder: 2
        Visible: false
      ]
    }
    Component DropDownTimeGroup
    {
      #keys: '[414384.0.857771238]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: '月'
        Label: '时间分组'
        Strings: '月;季度;半年;å¹´'
        Taborder: 1
      ]
    }
    Component DropDownByBusinessTypeOrByOrgCode
    {
      #keys: '[414384.0.857702904]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: '事业部'
        Label: '根据面板基地/事业部分组'
        Strings: '面板基地;事业部'
        Taborder: 0
      ]
    }
    Component DropDownSaleOrCapacity
    {
      #keys: '[414384.0.886240556]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: '销售额'
        Label: '销售额/产能'
        Strings: '销售额;产能'
        Taborder: 5
      ]
    }
    #child: pFilterCriteria
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -93,6 +93,6 @@
    ContextMenu: 'matrixeditorContextMenuCapacityAndSaleBudgeCompare'
    Editable: false
    Rows: 'MatrixEditorRowsCapacityAndSaleBudgeCompare'
    Taborder: 2
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_pButton.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component pButton
{
  #keys: '[414702.1.272379026]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonCapacityAndSaleBudgeCompare id:ButtonCapacityAndSaleBudgeCompare_956
    {
      #keys: '[414702.1.272313474]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'COCKTAIL'
        Label: '刷新'
        Taborder: 0
      ]
    }
    Component ButtonExportCompare id:ButtonExportCompare_364
    {
      #keys: '[414702.1.269961255]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_pButton_ButtonCapacityAndSaleBudgeCompare_OnClick#231.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def ÐÞ¸Ä
@@ -1,24 +1,20 @@
Quintiq file version 2.0
#parent: ButtonCapacityAndSaleBudgeCompare
Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonCapacityAndSaleBudgeCompare_OnClick
#parent: pButton/ButtonCapacityAndSaleBudgeCompare_956
Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonCapacityAndSaleBudgeCompare_OnClick_231
{
  #keys: '[414384.0.818241703]'
  #keys: '[414702.1.272313473]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      info( DataHolderMacroPlansForScenarioComparison.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterItem.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterYear.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterMonth.Data().Size() );
      GlobalOTDSOP.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
                                                DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
                                                DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
                                                DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_pButton_ButtonExportCompare_OnClick#325.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: ButtonExportCompare
Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonExportCompare_OnClick
#parent: pButton/ButtonExportCompare_364
Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonExportCompare_OnClick_325
{
  #keys: '[414384.0.881345276]'
  #keys: '[414702.1.269961254]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -8,27 +8,7 @@
  Children:
  [
    #child: MatrixEditorCapacityAndSaleBudgeCompare
    Component ButtonCapacityAndSaleBudgeCompare
    {
      #keys: '[414384.0.818241675]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '刷新'
        Taborder: 0
      ]
    }
    Component ButtonExportCompare
    {
      #keys: '[414384.0.881345277]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
    #child: pButton
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCh#171.def
@@ -5,12 +5,12 @@
  #keys: '[414384.0.875704514]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterYear.Data().Flush();
      DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data().Flush();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserChecke.def
@@ -1,18 +1,18 @@
Quintiq file version 2.0
#parent: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
Response OnUserCheckedChanged (
  structured[CapacityAndSaleBudgeFilterYear] checkeditems
  structured[CapacityAndSaleBudgeFilterPlaceOfProductionOfArray] checkeditems
) id:Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCheckedChanged
{
  #keys: '[414384.0.875704513]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterYear.Data( checkeditems.Copy() );
      DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data( checkeditems.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_ListGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListGlobalParameters
{
  #keys: '[412960.0.370311764]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorGlobalParameters
    {
      #keys: '[412960.0.370311765]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'GlobalParameters'
      ]
    }
    #child: listActionBarPageGlobalParameters
    Component DataSetLevelGlobalParameters
    {
      #keys: '[412960.0.370311770]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuGlobalParameters
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AttributeName","title":"AttributeName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AttributeName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AttributeValue","title":"AttributeValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AttributeValue"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Address","title":"Address","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Address"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Port","title":"Port","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Port"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PostRequestBody","title":"PostRequestBody","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PostRequestBody"}}]'
        ContextMenu: 'listContextMenuGlobalParameters'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListGlobalParameters_WebMenu_OnClick
    {
      #keys: '[412960.0.373111120]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[693.0.13162755]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_PanelGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelGlobalParameters
{
  #keys: '[412960.0.370311750]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListGlobalParameters
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listActionBarPageGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageGlobalParameters
{
  #keys: '[412960.0.370311767]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listContextMenuGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
Quintiq file version 2.0
Component listContextMenuGlobalParameters
{
  #keys: '[412960.0.370311772]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuNew id:MenuNew_21
    {
      #keys: '[412960.0.370312224]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 3
        Title: 'New'
      ]
    }
    Component MenuEdit id:MenuEdit_368
    {
      #keys: '[412960.0.370312277]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 4
        Title: 'Edit'
      ]
    }
    Component MenuDelete id:MenuDelete_832
    {
      #keys: '[412960.0.370312355]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete'
      ]
    }
    Component MenuInitial
    {
      #keys: '[412960.0.376011203]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ARROW_LOOP3'
        Taborder: 6
        Title: 'Init Api'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick (
  GlobalParameters selection
) id:Response_ListGlobalParameters_MenuDelete_OnClick
{
  #keys: '[412960.0.373113087]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuDelete'
  QuillAction
  {
    Body:
    [*
      selection.Delete();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuEdit_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick (
  GlobalParameters selection
) id:Response_ListGlobalParameters_MenuEdit_OnClick
{
  #keys: '[412960.0.373112994]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuEdit'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogGlobalParameters );
      dlg.Edit( selection );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuNew_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick () id:Response_ListGlobalParameters_MenuNew_OnClick
{
  #keys: '[412960.0.373111139]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuNew'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogGlobalParameters );
      dlg.New( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_listContextMenuGlobalParameters_MenuInitial_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: listContextMenuGlobalParameters/MenuInitial
Response OnClick () id:Response_listContextMenuGlobalParameters_MenuInitial_OnClick
{
  #keys: '[412960.0.376011242]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      GlobalParameters::TestForApiRequest( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/_ROOT_Component_FormGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormGlobalParameters
{
  #keys: '[412960.0.367611841]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelGlobalParameters
  ]
  Properties:
  [
    Description: '存放各类全局参数,目前仅包含API相关'
    Image: 'EARTH2'
    Title: 'Global Parameters'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Views/PR_DATA.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormPRHistoryData
      {
        title: 'QTIANMA_JITUAN::FormPRHistoryData'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPRHistoryData'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 15
          columnPosition: 5
          columnSpan: 8
        }
        components
        {
          FormPRHistoryData_PanelPRHistoryButton
          {
            sizeRatio: 1
          }
          FormPRHistoryData_ListPRHistoryData
          {
          }
          FormPRHistoryData_DataSetLevelPRHistoryData
          {
            groupDepth: -1
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_MRPCalverNo
            {
              columnId: 'MRPCalverNo'
              dataPath: 'MRPCalverNo'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_OrganCode
            {
              columnId: 'OrganCode'
              dataPath: 'OrganCode'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 5
              subtotals: ''
              width: 150
            }
            column_SendStatus
            {
              columnId: 'SendStatus'
              dataPath: 'SendStatus'
              dataType: 'string'
              index: 6
              subtotals: ''
              width: 150
            }
            column_ReleaseBy
            {
              columnId: 'ReleaseBy'
              dataPath: 'ReleaseBy'
              dataType: 'string'
              index: 7
              subtotals: ''
              width: 150
            }
            column_ReceiveStatus
            {
              columnId: 'ReceiveStatus'
              dataPath: 'ReceiveStatus'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_ReceiveError
            {
              columnId: 'ReceiveError'
              dataPath: 'ReceiveError'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPRData
      {
        title: 'QTIANMA_JITUAN::FormPRData'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPRData'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 15
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormPRData_PanelPRDataButton
          {
            sizeRatio: 1
          }
          FormPRData_ListPRData
          {
          }
          FormPRData_DataSetLevelPRData
          {
            groupDepth: -1
            column_MRPCalverNo
            {
              columnId: 'MRPCalverNo'
              dataPath: 'MRPCalverNo'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 3
              subtotals: ''
              width: 150
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: 'ActionBarPageData'
    group: ''
    index: 0
    image: 'BEAR'
    description: 'PR申请'
  }
  formatversion: 2
  id: 'PR_DATA'
  name: 'PR_DATA'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/È«¾Ö²ÎÊý.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
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: 277
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 2
              subtotals: ''
              width: 106
            }
            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_legacy_2
      {
        title: 'Assumptions'
        shown: true
        componentID: 'FormAssumptions'
        layout
        {
          mode: 'open'
          rowPosition: 9
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormAssumptions_ListAssumptions
          {
          }
          FormAssumptions_DataSetLevelAssumptions
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              title: '类别'
              index: 1
              subtotals: ''
              width: 108
            }
            column_Importance
            {
              columnId: 'Importance'
              dataPath: 'Importance'
              dataType: 'string'
              title: '重要性'
              index: 2
              subtotals: ''
              width: 110
            }
            column_Title
            {
              columnId: 'Title'
              dataPath: 'Title'
              dataType: 'string'
              title: '标题'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 4
              subtotals: ''
              width: 150
            }
            column_CreatedOn
            {
              columnId: 'CreatedOn'
              dataPath: 'CreatedOn'
              dataType: 'datetime'
              title: 'Created on'
              index: 5
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormScenariosKPIsComparison
      {
        title: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 6
          columnSpan: 7
        }
        components
        {
          FormScenariosKPIsComparison_MatrixEditorFinancialKPIs
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison.MatrixEditorFinancialKPIs'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_DisplayValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DisplayValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: ''
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'KPISetting.DisplayIndex'"
                  }
                }
              }
            }
          }
        }
      }
      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
    {
    }
    page: 'applicationDevelopmentActionBarPageDef'
    group: ''
    index: 4
    image: 'EARTH2'
    description: ''
  }
  formatversion: 2
  id: '全局参数'
  name: '全局参数'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/Äê¶È²úÏú¸´ÅÌ.vw
@@ -12,495 +12,59 @@
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          rowPosition: 6
          rowSpan: 8
          columnPosition: 1
          columnSpan: 2
          columnSpan: 12
        }
        components
        {
          FormCapacityAndSaleBudge_pButton
          {
            sizeRatio: 1
          }
          FormCapacityAndSaleBudge_ListCapacityAndSaleBudge
          {
          }
          FormCapacityAndSaleBudge_DataSetLevelCapacityAndSaleBudge
          {
            groupDepth: -1
            column_Deleted
            {
              columnId: 'Deleted'
              dataPath: 'Deleted'
              dataType: 'boolean'
              index: 0
              subtotals: ''
              width: 150
            }
            column_YearNo
            {
              columnId: 'YearNo'
              dataPath: 'YearNo'
              dataType: 'number'
              index: 1
              subtotals: ''
              width: 150
            }
            column_OrgCode
            {
              columnId: 'OrgCode'
              dataPath: 'OrgCode'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_DisplayTechnology
            {
              columnId: 'DisplayTechnology'
              dataPath: 'DisplayTechnology'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            sort: 'YearNo,ProductID'
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 4
              index: 0
              subtotals: ''
              width: 150
              width: 107
            }
            column_LineAndSpecification
            column_ProductID
            {
              columnId: 'LineAndSpecification'
              dataPath: 'LineAndSpecification'
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 5
              index: 1
              subtotals: ''
              width: 150
              width: 178
            }
            column_ProductCode
            column_OrganCode
            {
              columnId: 'ProductCode'
              dataPath: 'ProductCode'
              columnId: 'OrganCode'
              dataPath: 'OrganCode'
              dataType: 'string'
              index: 6
              index: 2
              subtotals: ''
              width: 150
              width: 98
            }
            column_PlaceOfProductionOfArray
            column_YearNo
            {
              columnId: 'PlaceOfProductionOfArray'
              dataPath: 'PlaceOfProductionOfArray'
              columnId: 'YearNo'
              dataPath: 'YearNo'
              dataType: 'string'
              index: 7
              index: 3
              subtotals: ''
              width: 150
            }
            column_PlaceOfProductionOfEvaporation
            {
              columnId: 'PlaceOfProductionOfEvaporation'
              dataPath: 'PlaceOfProductionOfEvaporation'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_Resolution
            {
              columnId: 'Resolution'
              dataPath: 'Resolution'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
            column_ShippingForm
            {
              columnId: 'ShippingForm'
              dataPath: 'ShippingForm'
              dataType: 'string'
              index: 10
              subtotals: ''
              width: 150
            }
            column_NumberOfCut
            {
              columnId: 'NumberOfCut'
              dataPath: 'NumberOfCut'
              dataType: 'string'
              index: 11
              subtotals: ''
              width: 150
            }
            column_CapacityEquivalent
            {
              columnId: 'CapacityEquivalent'
              dataPath: 'CapacityEquivalent'
              dataType: 'string'
              index: 12
              subtotals: ''
              width: 150
            }
            column_NumberOfMask
            {
              columnId: 'NumberOfMask'
              dataPath: 'NumberOfMask'
              dataType: 'string'
              index: 13
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth1
            {
              columnId: 'CapacityInPCSInMonth1'
              dataPath: 'CapacityInPCSInMonth1'
              dataType: 'real'
              index: 14
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth2
            {
              columnId: 'CapacityInPCSInMonth2'
              dataPath: 'CapacityInPCSInMonth2'
              dataType: 'real'
              index: 15
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth3
            {
              columnId: 'CapacityInPCSInMonth3'
              dataPath: 'CapacityInPCSInMonth3'
              dataType: 'real'
              index: 16
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth4
            {
              columnId: 'CapacityInPCSInMonth4'
              dataPath: 'CapacityInPCSInMonth4'
              dataType: 'real'
              index: 17
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth5
            {
              columnId: 'CapacityInPCSInMonth5'
              dataPath: 'CapacityInPCSInMonth5'
              dataType: 'real'
              index: 18
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth6
            {
              columnId: 'CapacityInPCSInMonth6'
              dataPath: 'CapacityInPCSInMonth6'
              dataType: 'real'
              index: 19
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth7
            {
              columnId: 'CapacityInPCSInMonth7'
              dataPath: 'CapacityInPCSInMonth7'
              dataType: 'real'
              index: 20
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth8
            {
              columnId: 'CapacityInPCSInMonth8'
              dataPath: 'CapacityInPCSInMonth8'
              dataType: 'real'
              index: 21
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth9
            {
              columnId: 'CapacityInPCSInMonth9'
              dataPath: 'CapacityInPCSInMonth9'
              dataType: 'real'
              index: 22
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth10
            {
              columnId: 'CapacityInPCSInMonth10'
              dataPath: 'CapacityInPCSInMonth10'
              dataType: 'real'
              index: 23
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth11
            {
              columnId: 'CapacityInPCSInMonth11'
              dataPath: 'CapacityInPCSInMonth11'
              dataType: 'real'
              index: 24
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSInMonth12
            {
              columnId: 'CapacityInPCSInMonth12'
              dataPath: 'CapacityInPCSInMonth12'
              dataType: 'real'
              index: 25
              subtotals: ''
              width: 150
            }
            column_CapacityInPCSTotal
            {
              columnId: 'CapacityInPCSTotal'
              dataPath: 'CapacityInPCSTotal'
              dataType: 'real'
              index: 26
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth1
            {
              columnId: 'CapacityInSheetInMonth1'
              dataPath: 'CapacityInSheetInMonth1'
              dataType: 'real'
              index: 27
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth2
            {
              columnId: 'CapacityInSheetInMonth2'
              dataPath: 'CapacityInSheetInMonth2'
              dataType: 'real'
              index: 28
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth3
            {
              columnId: 'CapacityInSheetInMonth3'
              dataPath: 'CapacityInSheetInMonth3'
              dataType: 'real'
              index: 29
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth4
            {
              columnId: 'CapacityInSheetInMonth4'
              dataPath: 'CapacityInSheetInMonth4'
              dataType: 'real'
              index: 30
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth5
            {
              columnId: 'CapacityInSheetInMonth5'
              dataPath: 'CapacityInSheetInMonth5'
              dataType: 'real'
              index: 31
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth6
            {
              columnId: 'CapacityInSheetInMonth6'
              dataPath: 'CapacityInSheetInMonth6'
              dataType: 'real'
              index: 32
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth7
            {
              columnId: 'CapacityInSheetInMonth7'
              dataPath: 'CapacityInSheetInMonth7'
              dataType: 'real'
              index: 33
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth8
            {
              columnId: 'CapacityInSheetInMonth8'
              dataPath: 'CapacityInSheetInMonth8'
              dataType: 'real'
              index: 34
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth9
            {
              columnId: 'CapacityInSheetInMonth9'
              dataPath: 'CapacityInSheetInMonth9'
              dataType: 'real'
              index: 35
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth10
            {
              columnId: 'CapacityInSheetInMonth10'
              dataPath: 'CapacityInSheetInMonth10'
              dataType: 'real'
              index: 36
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth11
            {
              columnId: 'CapacityInSheetInMonth11'
              dataPath: 'CapacityInSheetInMonth11'
              dataType: 'real'
              index: 37
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetInMonth12
            {
              columnId: 'CapacityInSheetInMonth12'
              dataPath: 'CapacityInSheetInMonth12'
              dataType: 'real'
              index: 38
              subtotals: ''
              width: 150
            }
            column_CapacityInSheetTotal
            {
              columnId: 'CapacityInSheetTotal'
              dataPath: 'CapacityInSheetTotal'
              dataType: 'real'
              index: 39
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth1
            {
              columnId: 'SaleAmountInMonth1'
              dataPath: 'SaleAmountInMonth1'
              dataType: 'real'
              index: 40
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth2
            {
              columnId: 'SaleAmountInMonth2'
              dataPath: 'SaleAmountInMonth2'
              dataType: 'real'
              index: 41
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth3
            {
              columnId: 'SaleAmountInMonth3'
              dataPath: 'SaleAmountInMonth3'
              dataType: 'real'
              index: 42
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth5
            {
              columnId: 'SaleAmountInMonth5'
              dataPath: 'SaleAmountInMonth5'
              dataType: 'real'
              index: 43
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth4
            {
              columnId: 'SaleAmountInMonth4'
              dataPath: 'SaleAmountInMonth4'
              dataType: 'real'
              index: 44
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth6
            {
              columnId: 'SaleAmountInMonth6'
              dataPath: 'SaleAmountInMonth6'
              dataType: 'real'
              index: 45
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth7
            {
              columnId: 'SaleAmountInMonth7'
              dataPath: 'SaleAmountInMonth7'
              dataType: 'real'
              index: 46
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth8
            {
              columnId: 'SaleAmountInMonth8'
              dataPath: 'SaleAmountInMonth8'
              dataType: 'real'
              index: 47
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth9
            {
              columnId: 'SaleAmountInMonth9'
              dataPath: 'SaleAmountInMonth9'
              dataType: 'real'
              index: 48
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth10
            {
              columnId: 'SaleAmountInMonth10'
              dataPath: 'SaleAmountInMonth10'
              dataType: 'real'
              index: 49
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth11
            {
              columnId: 'SaleAmountInMonth11'
              dataPath: 'SaleAmountInMonth11'
              dataType: 'real'
              index: 50
              subtotals: ''
              width: 150
            }
            column_SaleAmountInMonth12
            {
              columnId: 'SaleAmountInMonth12'
              dataPath: 'SaleAmountInMonth12'
              dataType: 'real'
              index: 51
              subtotals: ''
              width: 150
            }
            column_SaleAmountTotal
            {
              columnId: 'SaleAmountTotal'
              dataPath: 'SaleAmountTotal'
              dataType: 'real'
              index: 52
              subtotals: ''
              width: 150
              width: 84
            }
          }
        }
@@ -513,20 +77,24 @@
        layout
        {
          mode: 'open'
          rowPosition: 5
          rowSpan: 10
          columnPosition: 5
          columnSpan: 8
          rowPosition: 14
          rowSpan: 8
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormCapacityAndSaleBudgeCompare_pButton
          {
            sizeRatio: 1
          }
          FormCapacityAndSaleBudgeCompare_MatrixEditorCapacityAndSaleBudgeCompare
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            totalHeaderWidth: 67
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            columnWidth: 264
            horizontalGrid: true
            verticalGrid: true
            backendState
@@ -576,7 +144,7 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          rowSpan: 5
          columnPosition: 3
          columnSpan: 2
        }
@@ -588,6 +156,7 @@
          FormCapacityAndSaleBudgeFilterItem_DataSetLevelCapacityAndSaleBudgeFilterItem
          {
            groupDepth: -1
            sort: 'ItemName'
            column_ItemName
            {
              columnId: 'ItemName'
@@ -608,13 +177,17 @@
        layout
        {
          mode: 'open'
          rowPosition: 5
          rowSpan: 11
          rowPosition: 22
          rowSpan: 13
          columnPosition: 1
          columnSpan: 4
          columnSpan: 12
        }
        components
        {
          FormCapacityAndSaleBudgeChart_pFilterCriteria
          {
            sizeRatio: 1
          }
          FormCapacityAndSaleBudgeChart_ChartCapacityAndSaleBudgeChart
          {
            SynchronizationGroup: ''
@@ -636,7 +209,7 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          rowSpan: 5
          columnPosition: 5
          columnSpan: 2
        }
@@ -669,8 +242,8 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          columnPosition: 7
          rowSpan: 5
          columnPosition: 9
          columnSpan: 2
        }
        components
@@ -702,8 +275,8 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          columnPosition: 11
          rowSpan: 5
          columnPosition: 7
          columnSpan: 2
        }
        components
@@ -735,8 +308,8 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 4
          columnPosition: 9
          rowSpan: 5
          columnPosition: 11
          columnSpan: 2
        }
        components
@@ -759,6 +332,39 @@
          }
        }
      }
      form_FormScenarioManager
      {
        title: 'QLibMacroPlannerWebUI::FormScenarioManager'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenarioManager'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 5
          columnPosition: 1
          columnSpan: 2
        }
        components
        {
          FormScenarioManager_ListScenario
          {
          }
          FormScenarioManager_DataSetLevelScenario
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 240
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
@@ -5,7 +5,7 @@
  ProjectProperties
  {
    ApplicationComponentName: 'ApplicationMacroPlanner'
    BuildVersion: '2022.3.0.32'
    BuildVersion: '2022.3.0.34'
    Description: 'Quintiq Macro Planner'
    ProjectKind: 'WebClient'
  }
_var/_Main/ModelSettings/Common/Dev-23/_ROOT_Role_Dev-23.properties
@@ -6,6 +6,10 @@
_self.configsettype=Role
_self.description=OTD专显 éžæ˜¾ ç‰¹æ˜¾
_self.name=Dev-23
arg=template:serverargs
arg.architectdependencies=
arg.custom=""
arg.versioncontrolmode=true
domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
@@ -451,16 +455,56 @@
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
domainmodel.mdsstoragedefinitionmanager.audittraillocation=
domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=true
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
_var/_Main/ModelSettings/Common/Dev-25/_ROOT_Role_Dev-25.properties
@@ -6,6 +6,10 @@
_self.configsettype=Role
_self.description=OTD汽车电子 å¤©åŽ
_self.name=Dev-25
arg=template:serverargs
arg.architectdependencies=
arg.custom=""
arg.versioncontrolmode=true
domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
@@ -451,16 +455,56 @@
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
domainmodel.mdsstoragedefinitionmanager.audittraillocation=
domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=true
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
_var/_Main/ModelSettings/Common/Dev-27/_ROOT_Role_Dev-27.properties
@@ -6,6 +6,10 @@
_self.configsettype=Role
_self.description=OTD车载事业
_self.name=Dev-27
arg=template:serverargs
arg.architectdependencies=
arg.custom=""
arg.versioncontrolmode=true
domainmodel.ediremotedatasourcedefinition.remotestorage.destination=template:domainmodel.ediremotedatasourcedefinition
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.connection=
domainmodel.ediremotedatasourcedefinition.remotestorage.destination.parameters=
@@ -451,16 +455,56 @@
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sendingcontentcharset=UTF-8
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.sockettimeout=0
domainmodel.integratorconfig.dsendpoint.q3dspace_3dsendpoint.trustmanagername=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.jtmbrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.panelmaterialrestserver_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint=template:domainmodel.integratorconfig.quintiqendpoint
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.connectiongroupname=SERVER
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.integratorid=Q3DSpace
domainmodel.integratorconfig.quintiqendpoint.q3dspace_quintiqendpoint.outboundrequesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam1=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationparam2=
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.authenticationtype=None
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.contenttype=JSON
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.enablehttpmessagelogging=true
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.includerawcontent=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.maxconnections=10
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.portnumber=8080
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.requesttimeout=60
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.jtmbrestserver_restserver.sockettimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial=template:domainmodel.integratorconfig.restendpoint
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam1=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationparam2=
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.authenticationtype=None
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.connectiontimeout=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.contenttype=JSON
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.enablehttpmessagelogging=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.includerawcontent=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.maxconnections=10
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.passonvalidationerrors=false
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.portnumber=8080
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.proxyportnumber=0
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.receivecontentcharset=ASCII
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.requesttimeout=60
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.restschemaurl="C:\\Users\\hongjli\\Desktop\\integratorrestexample\\openapi.yaml"
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sendingcontentcharset=utf-8
domainmodel.integratorconfig.restendpoint.panelmaterialrestserver_restendpointpanelmaterial.sockettimeout=0
domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
domainmodel.mdsstoragedefinitionmanager.audittraillocation=
domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=true
domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
domainmodel.mdsstoragedefinitionmanager.dbformat=Legacy
domainmodel.mdsstoragedefinitionmanager.defaultencryptioncertificate=
_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
ÎļþÒÑɾ³ý
test.pdm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:235868634af40fbdee26a59c415745645a4cc6a0e4c25f6f023fa46526cadb9b
size 14