hongji.li
2023-09-11 588d972a935847b6b7057e167bf77f8543bbabfc
Merge branch 'dev_yx' into dev_lhj
已添加123个文件
已修改2个文件
2337 ■■■■■ 文件已修改
_Main/BL/InfoMessages.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_M.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CheckThePrecedingColumn.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyThatTheItemCodeIsNotDuplicated.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyTheTemplate.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_Comment.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_MatCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductDesc.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_StandardLT.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Function_CalcMatCode.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/StaticMethod_CreateIfNotExist.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/_ROOT_Type_MatAttrSettingAndPlanStrategyDetail.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_base64Str.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_userName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_VerifyTheFileName.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MaximumNumberOfDaysInInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinimumNumberOfDaysInStock.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_SerialNumber.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcMinProdDeliverLT.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcPlanningStrategyAuto.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcProductCount.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_CreateIfNotExist.qbl 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode#526.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_ExportTheFileStream.qbl 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTop.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTopMost.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/_ROOT_Component_frmStandardAnalysisGlobalOTDTable.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlContent.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlGeneral.def 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Method_Edit.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/_ROOT_Component_DialogCreateEditMaterialLabelingAndPlanningStrategy.def 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListChildMaterial.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy#880.def 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial#558.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterial.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport#136.def 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialLabelingAndPlanningStrategy.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialOperationButton.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageChildMaterial.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuChildMaterial.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455#1.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_O.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_O.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck#591.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedCh.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnCl.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnCl.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
Quintiq file version 2.0
#parent: #root
InfoMessages id:#InfoMessages #extension
{
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataColumn
{
  #keys: '1[414384.0.763764789]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.763764811][414384.0.763764805][414384.0.763764812][414384.0.763764806][414384.0.763764813][414384.0.763764807][414384.0.763764814][414384.0.763764808][414384.0.763764815][414384.0.763764809][414384.0.763764816][414384.0.763764810]'
    SequenceElementSuffix: 'CellInColumn'
    SequenceSuffix: 'CellInColumn'
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataCell
  {
    #keys: '3[414384.0.763764791][414384.0.763764790][414384.0.763764792]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataColumn
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataColumn
  {
    #keys: '3[414384.0.763764794][414384.0.763764793][414384.0.763764795]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataRow
{
  #keys: '1[414384.0.763764825]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataCell
  {
    #keys: '3[414384.0.763764827][414384.0.763764826][414384.0.763764828]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataRow
  {
    #keys: '3[414384.0.763764830][414384.0.763764829][414384.0.763764831]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '1[414384.0.763764737]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataRow
  {
    #keys: '3[414384.0.763764739][414384.0.763764738][414384.0.763764740]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764742][414384.0.763764741][414384.0.763764743]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '1[414384.0.763764753]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.763764775][414384.0.763764769][414384.0.763764776][414384.0.763764770][414384.0.763764777][414384.0.763764771][414384.0.763764778][414384.0.763764772][414384.0.763764779][414384.0.763764773][414384.0.763764780][414384.0.763764774]'
    SequenceElementSuffix: 'ColumnInTable'
    SequenceSuffix: 'ColumnInTable'
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataColumn
  {
    #keys: '3[414384.0.763764755][414384.0.763764754][414384.0.763764756]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764758][414384.0.763764757][414384.0.763764759]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_M.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_MatAttrSettingAndPlanStrategy_MatAttrSettingAndPlanStrategyDetail
{
  #keys: '1[414384.0.766881387]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategy
  {
    #keys: '3[414384.0.766881389][414384.0.766881388][414384.0.766881390]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDetail
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDetail
  {
    #keys: '3[414384.0.766881392][414384.0.766881391][414384.0.766881393]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategy
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTable_MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '1[414384.0.763764705]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.763764707][414384.0.763764706][414384.0.763764708]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyInputSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyInputSource
  {
    #keys: '3[414384.0.763764710][414384.0.763764709][414384.0.763764711]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '1[414384.0.763764721]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764723][414384.0.763764722][414384.0.763764724]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyInputSource
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyInputSource
  {
    #keys: '3[414384.0.763764726][414384.0.763764725][414384.0.763764727]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttrSettingAndPlanStrategy
{
  #keys: '1[414384.0.763764622]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.763764624][414384.0.763764623][414384.0.763764625]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategy
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategy
  {
    #keys: '3[414384.0.763764627][414384.0.763764626][414384.0.763764628]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method InitTestData
{
  TextBody:
  [*
    //this.MatAttrSettingAndPlanStrategy( relflush );
    // yypsybs Sep-8-2023 (created)
    mat1 := MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 1, "手机事业部", "MAT_1", "MAT_1", "TYPE_1", 233.0, "通用", "长周期" );
    MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_1", 666.0, "PROD_1_DESC" );
    MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_2", 777.0, "PROD_2_DESC" );
    mat2 := MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 2, "手机事业部", "MAT_2", "MAT_2", "TYPE_2", 233.0, "专用", "长周期" );
    MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat2, "PROD_1", 1666.0, "PROD_1_DESC" );
    MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat2, "PROD_2", 1777.0, "PROD_2_DESC" );
    MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 3, "手机事业部", "MAT_3", "MAT_3", "TYPE_1", 233.0, "通用", "短周期" );
    MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 4, "手机事业部", "MAT_4", "MAT_4", "TYPE_2", 233.0, "专用", "短周期" );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute name
{
  #keys: '3[414384.0.763764688][414384.0.763764687][414384.0.763764689]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: name
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CheckThePrecedingColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
Method CheckThePrecedingColumn (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    traverse ( this, MatAttrSettingAndPlanStrategyDataRow, masapsdr ) {
      itemCode := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" );
      targetMatAttrSettingAndPlanStrategy := select( globalOTDTable, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.MatCode() = itemCode.value() );
      if ( not isnull( targetMatAttrSettingAndPlanStrategy ) ) {
        businessType                      := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "业务类型" ).value();
        nameOfMaterial                    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料名称" ).value();
        itemClassification                := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料分类" ).value();
        LTTimeDays                        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "LT时间(天)" ).value();
        numberOfFinishedSKUs              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品SKU数量" ).value();
        finishedProductDeliveryMinLTDays  := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品交付Min-LT(天)" ).value();
        longAndShortCycleLabels           := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "长短周期标签" ).value();
        genericSpecialLabels              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "通用专用标签" ).value();
        automaticMaterialPlanningPolicies := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "自动物料计划策略" ).value();
        if ( businessType                           <> targetMatAttrSettingAndPlanStrategy.BusinessType()     or
             nameOfMaterial                         <> targetMatAttrSettingAndPlanStrategy.MatName()          or
             itemClassification                     <> targetMatAttrSettingAndPlanStrategy.MatType()          or
             [Real]LTTimeDays                       <> targetMatAttrSettingAndPlanStrategy.MatArrivalLT()     or
             [Real]numberOfFinishedSKUs             <> targetMatAttrSettingAndPlanStrategy.ProductCount()     or
             [Real]finishedProductDeliveryMinLTDays <> targetMatAttrSettingAndPlanStrategy.MinProdDeliverLT() or
             longAndShortCycleLabels                <> targetMatAttrSettingAndPlanStrategy.FlagLongTerm()     or
             genericSpecialLabels                   <> targetMatAttrSettingAndPlanStrategy.FlagGeneric()      or
             automaticMaterialPlanningPolicies      <> targetMatAttrSettingAndPlanStrategy.PlanningStrategyAuto() )
        {
          error( "导入失败,与当前系统字段不一致:", targetMatAttrSettingAndPlanStrategy.MatCode() );
        }
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
Quintiq file version 2.0
#parent: #root
Method CreateOrUpdateData (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    traverse ( this, MatAttrSettingAndPlanStrategyDataRow, masapsdr ) {
      itemCode := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" );
      targetMatAttrSettingAndPlanStrategy := select( globalOTDTable, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.MatCode() = itemCode.value() );
      if ( not isnull( targetMatAttrSettingAndPlanStrategy ) ) {
        minimumNumberOfDaysInStock     := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最小天数" ).value();
        maximumNumberOfDaysInInventory := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最大天数" ).value();
        try {
          targetMatAttrSettingAndPlanStrategy.MinimumNumberOfDaysInStock( [Number]minimumNumberOfDaysInStock );
          targetMatAttrSettingAndPlanStrategy.MaximumNumberOfDaysInInventory( [Number]maximumNumberOfDaysInInventory );
          targetMatAttrSettingAndPlanStrategy.UpdateBy( QuintiqUser::CurrentUser().Username() );
          targetMatAttrSettingAndPlanStrategy.UpdateTime( DateTime::ActualTime() );
        } onerror {
          error( "库存最小天数或库存最大天数必须为整数:", targetMatAttrSettingAndPlanStrategy.MatCode() );
        }
      } else {
        businessType                      := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "业务类型" ).value();
        createItemCode                    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" ).value();
        nameOfMaterial                    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料名称" ).value();
        itemClassification                := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料分类" ).value();
        LTTimeDays                        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "LT时间(天)" ).value();
    //    numberOfFinishedSKUs              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品SKU数量" ).value();
    //    finishedProductDeliveryMinLTDays  := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品交付Min-LT(天)" ).value();
        longAndShortCycleLabels           := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "长短周期标签" ).value();
        genericSpecialLabels              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "通用专用标签" ).value();
    //    automaticMaterialPlanningPolicies := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "自动物料计划策略" ).value();
        usersManuallySchedulePolicies     := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "用户手动计划策略" ).value();
        minimumNumberOfDaysInStock        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最小天数" ).value();
        maximumNumberOfDaysInInventory    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最大天数" ).value();
        try {
          matAttrSettingAndPlanStrategy := globalOTDTable.MatAttrSettingAndPlanStrategy( relnew,
                                                                                         BusinessType := businessType,
                                                                                         MatCode := createItemCode,
                                                                                         MatName := nameOfMaterial,
                                                                                         MatType := itemClassification,
                                                                                         MatArrivalLT := [Number]LTTimeDays,
    //                                                                                     ProductCount := [Number]numberOfFinishedSKUs,
    //                                                                                     MinProdDeliverLT := [Number]finishedProductDeliveryMinLTDays,
                                                                                         FlagLongTerm := longAndShortCycleLabels,
                                                                                         FlagGeneric := genericSpecialLabels,
    //                                                                                     PlanningStrategyAuto := automaticMaterialPlanningPolicies,
                                                                                         PlanningStrategyCustom := usersManuallySchedulePolicies,
                                                                                         MinimumNumberOfDaysInStock := [Number]minimumNumberOfDaysInStock,
                                                                                         MaximumNumberOfDaysInInventory := [Number]maximumNumberOfDaysInInventory
                                                                                        );
          matAttrSettingAndPlanStrategy.UpdateBy( QuintiqUser::CurrentUser().Username() );
          matAttrSettingAndPlanStrategy.UpdateTime( DateTime::ActualTime() );
          matAttrSettingAndPlanStrategy.SerialNumber( maxselect( globalOTDTable, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.SerialNumber() ).SerialNumber() + 1 );
        } onerror {
          error( "库存最小天数或库存最大天数必须为整数:", targetMatAttrSettingAndPlanStrategy.MatCode() );
        }
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method SynchronizeData
{
  TextBody:
  [*
    this.VerifyThatTheItemCodeIsNotDuplicated();
    globalOTDTable := this.MatAttrSettingAndPlanStrategyInputSource().GlobalOTDTable();
    this.CheckThePrecedingColumn( globalOTDTable );
    this.CreateOrUpdateData( globalOTDTable );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyThatTheItemCodeIsNotDuplicated.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Method VerifyThatTheItemCodeIsNotDuplicated
{
  TextBody:
  [*
    itemCodes := selectuniquevalues( this,
                                     MatAttrSettingAndPlanStrategyDataColumn.MatAttrSettingAndPlanStrategyDataCell,
                                     tempMASAPSDC,
                                     tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码",
                                     tempMASAPSDC.value() );
    traverse ( itemCodes, Elements, ic ) {
      icTotal := selectset( this,
                            MatAttrSettingAndPlanStrategyDataColumn.MatAttrSettingAndPlanStrategyDataCell,
                            tempMASAPSDC,
                            tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" and tempMASAPSDC.value() = ic );
      if ( icTotal.Size() > 1 ) {
        error( "存在重复物料编码:", ic );
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyTheTemplate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Method VerifyTheTemplate
{
  TextBody:
  [*
    if ( select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 0 ).name()  <> "业务类型"             or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 1 ).name()  <> "物料编码"             or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 2 ).name()  <> "物料名称"             or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 3 ).name()  <> "物料分类"             or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 4 ).name()  <> "LT时间(天)"         or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 5 ).name()  <> "成品SKU数量"          or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 6 ).name()  <> "成品交付Min-LT(天)" or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 7 ).name()  <> "长短周期标签"         or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 8 ).name()  <> "通用专用标签"         or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 9 ).name()  <> "自动物料计划策略"     or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 10 ).name() <> "用户手动计划策略"     or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 11 ).name() <> "库存最小天数"         or
         select( this, MatAttrSettingAndPlanStrategyDataColumn, tempMASAPSDC, tempMASAPSDC.columnIndex() = 12 ).name() <> "库存最大天数"
        ) {
      error( "模板解析错误" );
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
Method ParseRows
{
  TextBody:
  [*
    // yypsybs Jul-1-2023 (created)
    totalRows := 0;
    totalColumns := this.MatAttrSettingAndPlanStrategyDataColumn( relsize );
    if ( totalColumns > 0 ) {
      columnLongestList := maxset( this, MatAttrSettingAndPlanStrategyDataColumn, column, true, column.MatAttrSettingAndPlanStrategyDataCell( relsize ) );
      columnLongest := columnLongestList.First();
      totalRows := columnLongest.MatAttrSettingAndPlanStrategyDataCell( relsize );
      this.MatAttrSettingAndPlanStrategyDataRow( relflush );
      cells := construct( structured[MatAttrSettingAndPlanStrategyDataCell] );
      traverse ( this, MatAttrSettingAndPlanStrategyDataColumn, column ) {
        cells.Add( column.FirstCellInColumn() );
      }
      for ( i := 0; i < totalRows; i++ ) {
        assert( selectvalues( cells, Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ).ToString( "" ) =
                selectvalues( selectsortedset( cells, Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ), Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ).ToString( "" ),
                "Assertion error in MatAttrSettingAndPlanningStrategyDataTable::parseRows: Cells not sorted by column index" );
        row := this.MatAttrSettingAndPlanStrategyDataRow( relnew, rowNo := i );
        newCells := construct( structured[MatAttrSettingAndPlanStrategyDataCell] );
        traverse ( cells, Elements, c ) {
          row.MatAttrSettingAndPlanStrategyDataCell( relinsert, c );
          newCells.Add( c.NextCellInColumn() );
        }
        cells := &newCells;
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DoVerify (
  MatAttrSettingAndPlanStrategyDataTable toVerify
)
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    // for test
    columns := selectsortedset( toVerify, MatAttrSettingAndPlanStrategyDataColumn, column, true, column.columnIndex() );
    //traverse( columns, Elements, column ) {
    //  info( "column header of " + [String]( column.columnIndex() + 1 ) + " is " + column.name() );
    //}
    //rows := toVerify.MatAttrSettingAndPlanningStrategyDataRow( relget );
    //traverse( rows, Elements.MatAttrSettingAndPlanningStrategyDataCell, cell ) {
    //  info( cell.MatAttrSettingAndPlanningStrategyDataColumn().name() + " of row " + [String]cell.MatAttrSettingAndPlanningStrategyDataRow().rowNo() + " is " + cell.value() );
    //}
    // for test end
    expectedHeaders := MatAttrSettingAndPlanStrategyDataTable::ExpectedHeaders();
    traverse( columns, Elements, column ) {
      columnActualName := column.name();
      if( column.columnIndex() > expectedHeaders.Size() ) {
        error( "unexpected head " + columnActualName + " of column " + [String]column.columnIndex() + "." );
      }
      expectedHeader := expectedHeaders.Element( column.columnIndex() );
      if( expectedHeader <> columnActualName ) {
        error( "expected head is " + expectedHeader + " of column " + [String]column.columnIndex() + ", but found " + columnActualName + "." );
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExpectedHeaders () as owning Strings
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    value := construct( structured[String] );
    value.Add( "物料编码" );
    value.Add( "物料名称" );
    value.Add( "物料分类" );
    value.Add( "LT时间(天)" );
    value.Add( "成员SKU数量" );
    value.Add( "成品交付MinLT(天)" );
    value.Add( "长短周期标签" );
    value.Add( "通用专用标签" );
    value.Add( "智能物料计划策略" );
    value.Add( "用户决策计划策略" );
    value.Add( "修改人" );
    value.Add( "修改时间" );
    return &value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  GlobalOTDTable parent
) as String
{
  TextBody:
  [*
    // yypsybs Jul-1-2023 (created)
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
    <table>
      <name>MatAttrSettingAndPlanStrategy</name>
    ';
    //---------------------------------------------------------------------------------------------
    exportFields := MatAttrSettingAndPlanStrategyDataTable::ExportFields();
    exportHeaders := MatAttrSettingAndPlanStrategyDataTable::ExpectedHeaders();
    if( exportFields.Size() <> exportHeaders.Size() ) {
      error( "fields and headers not match" );
    }
    for( i := 0; i < exportFields.Size() ; i++ ) {
      header := exportHeaders.Element( i );
      columnStr := "<column><name>" + header + "</name><type>String</type>";
      traverse( parent, MatAttrSettingAndPlanStrategy, oldRecord ) {
        fieldName := exportFields.Element( i );
        field := Reflection::FindAttribute( "MatAttrSettingAndPlanStrategy", fieldName);
        if( not isnull( field ) ) {
          fieldValue := "";
          if( fieldValue = "" ) {
            fieldValue := guard( field.GetString( oldRecord ), "" );
          }
          if( fieldValue = "" ) {
            fieldValue := guard( [String]field.GetNumber( oldRecord ), "" );
          }
          if( fieldValue = "" ) {
            fieldValue := guard( [String]field.GetReal( oldRecord ), "" );
          }
          if( fieldValue = "" ) {
            fileDateValue := guard( field.GetDate( oldRecord ), Date::MinDate() );
            if( fileDateValue <> Date::MinDate() ) {
              conv := DateTimeToString::StandardConverter();
              conv.SetCustomConversion();
              conv.CustomFormatString( 'yyyyMMdd' );
              fieldValue := conv.Convert( fileDateValue.DateTime() );
            }
          }
          cellStr := '<cell value="' + fieldValue + '"/>';
          columnStr := columnStr + cellStr;
        } else {
          error( "no field " + fieldName + " in type MatAttrSettingAndPlanStrategy");
        }
      }
      columnStr := columnStr + "</column>";
      xmlTemplate := xmlTemplate + columnStr;
    }
    //---------------------------------------------------------------------------------------------
    xmlTemplate := xmlTemplate + "</table>";
    info( xmlTemplate );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "MatAttrSettingAndPlanStrategy.xlsx" );
    file := OSFile::Construct();
    file.Open( OS::TempPath() + "MatAttrSettingAndPlanStrategy.xlsx", "Read", true );
    data := file.ReadBinary()
    return data.AsBase64EncodedString();
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportFields () as owning Strings
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    value := construct( structured[String] );
    value.Add( "MatCode" );
    value.Add( "MatName" );
    value.Add( "MatType" );
    value.Add( "MatArrivalLT" );
    value.Add( "ProductCount" );
    value.Add( "MinProdDeliverLT" );
    value.Add( "FlagLongTerm" );
    value.Add( "FlagGeneric" );
    value.Add( "PlanningStrategyAuto" );
    value.Add( "PlanningStrategyCustom" );
    value.Add( "UpdateBy" );
    value.Add( "UpdateTime" );
    return &value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataCell
  XMLID cell { }
  Attributes:
  [
    XMLAttribute
    {
      Attribute: value
      XMLID value { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataColumn
  XMLID column { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: cell
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataCell
      XMLID MatAttrSettingAndPlanningStrategyDataCell { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataTable
  XMLID table { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: column
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataColumn
      XMLID MatAttrSettingAndPlanningStrategyDataColumn { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#root
#parent: #root
XML MatAttrSettingAndPlanStrategyDataTableXML
{
  Direction: 'ImportExport'
  Root: table
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataColumn
  XMLID column { }
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataTable
  XMLID table { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: column
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataColumn
      XMLID MatAttrSettingAndPlanningStrategyDataColumn { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#root
#parent: #root
XML MatAttrSettingAndPlanStrategyDataTableXMLHeaders
{
  Direction: 'ImportExport'
  Root: table
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '5[414384.0.763764685][414384.0.763764683][0.0.0][414384.0.763764684][414384.0.763764686]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataTables'
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_Comment.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Comment
{
  #keys: '3[414384.0.766881447][414384.0.766881446][414384.0.766881448]'
  Description: '备注'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_MatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatCode
{
  #keys: '3[414384.0.766881404][414384.0.766881403][414384.0.766881405]'
  Description: '物料编码'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductCode
{
  #keys: '3[414384.0.766881414][414384.0.766881413][414384.0.766881415]'
  Description: '成品编码'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductDesc.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductDesc
{
  #keys: '3[414384.0.766881437][414384.0.766881436][414384.0.766881438]'
  Description: '成品描述'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_StandardLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StandardLT
{
  #keys: '3[414384.0.766881424][414384.0.766881423][414384.0.766881425]'
  ValueType: Real
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Function_CalcMatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcMatCode
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := this.MatAttrSettingAndPlanStrategy().MatCode();
    this.MatCode( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/StaticMethod_CreateIfNotExist.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MatAttrSettingAndPlanStrategy parent,
  String productCode,
  Real standardLT,
  String productDesc
) as MatAttrSettingAndPlanStrategyDetail
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := select( parent, MatAttrSettingAndPlanStrategyDetail, item, item.ProductCode() = productCode );
    if( isnull( value ) ) {
      value := parent.MatAttrSettingAndPlanStrategyDetail( relnew,
                                                           ProductCode := productCode,
                                                           StandardLT := standardLT,
                                                           ProductDesc := productDesc );
    }
    return value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/_ROOT_Type_MatAttrSettingAndPlanStrategyDetail.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDetail
{
  #keys: '5[414384.0.766881384][414384.0.766881382][0.0.0][414384.0.766881383][414384.0.766881385]'
  BaseType: Object
  Description: '物料属性标签设定&物料计划策略明细'
  StructuredName: 'MatAttrSettingAndPlanStrategyDetails'
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_base64Str.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Base64Str
{
  #keys: '3[414384.0.763764696][414384.0.763764695][414384.0.763764697]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute FileName
{
  #keys: '3[414384.0.763764699][414384.0.763764698][414384.0.763764700]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsXlsx
{
  #keys: '3[414384.0.763764702][414384.0.763764701][414384.0.763764703]'
  ValueType: Boolean
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_userName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UserName
{
  #keys: '3[414384.0.775080571][414384.0.775080570][414384.0.775080572]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
Method CreateTable (
  String sheetName
) as MatAttrSettingAndPlanStrategyDataTable
{
  TextBody:
  [*
    // yypsybs Jul-1-2023 (created)
    sheet := select( this, MatAttrSettingAndPlanStrategyDataTable, table, table.name() = sheetName );
    if ( isnull( sheet ) ) {
      sheet := this.MatAttrSettingAndPlanStrategyDataTable( relnew, name := sheetName );
    }
    return sheet;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
#parent: #root
Method ParseTable
{
  TextBody:
  [*
    tableGroupHandle := TableGroupHandle::Create( this.FileName() );
    tableGroupHandle := XLS::LoadTableGroupFromBinaryData( BinaryData::FromBase64EncodedString( this.Base64Str() ), tableGroupHandle, true, this.IsXlsx() );
    sheets := tableGroupHandle.TableNames();
    traverse ( sheets, Elements, sheetName, sheetName = "物料标签" ) {
      tableHandle := tableGroupHandle.Table( sheetName );
      tableXML := TableHandle::ExportXML( tableHandle );
      MatAttrSettingAndPlanStrategyDataTable::XMLImportMatAttrSettingAndPlanStrategyDataTableXMLHeaders(  tableXML );
      matAttrSettingAndPlanStrategyDataTable := MatAttrSettingAndPlanStrategyDataTable::XMLImportMatAttrSettingAndPlanStrategyDataTableXML( tableXML );
      matAttrSettingAndPlanStrategyDataTable.ParseRows();
      matAttrSettingAndPlanStrategyDataTable.name( sheetName );
      this.MatAttrSettingAndPlanStrategyDataTable( relinsert, &matAttrSettingAndPlanStrategyDataTable );
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method SaveData
{
  TextBody:
  [*
    // yypsybs Jul-1-2023 (created)
    if( this.MatAttrSettingAndPlanStrategyDataTable( relsize ) > 0 ) {
      traverse( this, MatAttrSettingAndPlanStrategyDataTable, table ) {
        traverse( table, MatAttrSettingAndPlanStrategyDataRow, row ) {
          MatAttrSettingAndPlanStrategy::Update( this.GlobalOTDTable(), row, this.UserName() );
        }
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_VerifyTheFileName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
StaticMethod VerifyTheFileName (
  JSON uploadJson
)
{
  TextBody:
  [*
    fileNames := uploadJson.Get( "name" ).GetString().Tokenize( "." );
    fileNameSuffix := fileNames.Element( fileNames.Size() - 1 );
    if ( fileNameSuffix <> "xlsx" and fileNameSuffix <> "xls" ) {
      error( "请上传Excel文件" );
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Upload (
  GlobalOTDTable globalOTDTable,
  String filePath,
  String base64Str,
  String userName
) as MatAttrSettingAndPlanStrategyInputSource
{
  TextBody:
  [*
    globalOTDTable.MatAttrSettingAndPlanStrategyInputSource( relflush );
    fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
    inputSource := globalOTDTable.MatAttrSettingAndPlanStrategyInputSource( relnew,
                                                                            FileName  := fileName,
                                                                            Base64Str := base64Str,
                                                                            IsXlsx    := fileName.EndsWith( "xlsx" ),
                                                                            UserName  := userName );
    return inputSource;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '5[414384.0.763764693][414384.0.763764691][0.0.0][414384.0.763764692][414384.0.763764694]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyInputSources'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[414702.0.129575801][414702.0.129575800][414702.0.129575802]'
  Description: '业务类型'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Attribute FlagGeneric
{
  #keys: '3[414384.0.763764895][414384.0.763764894][414384.0.763764896]'
  Description:
  [*
    æ˜¯å¦é€šç”¨
    ä¸“用 & é€šç”¨
  *]
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Attribute FlagLongTerm
{
  #keys: '3[414384.0.763764885][414384.0.763764884][414384.0.763764886]'
  Description:
  [*
    æ˜¯å¦é•¿æœŸ
    é•¿å‘¨æœŸ & çŸ­å‘¨æœŸ
  *]
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatArrivalLT
{
  #keys: '3[414384.0.759444630][414384.0.759444629][414384.0.759444631]'
  Description: '物料到货LT(天)'
  ValueType: Real
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatCode
{
  #keys: '3[414384.0.759431251][414384.0.759431250][414384.0.759431252]'
  Description: '物料编码'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatName
{
  #keys: '3[414384.0.759431286][414384.0.759431285][414384.0.759431287]'
  Description: '物料名称'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatType
{
  #keys: '3[414384.0.759444677][414384.0.759444676][414384.0.759444678]'
  Description: '成品SKU类型'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MaximumNumberOfDaysInInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MaximumNumberOfDaysInInventory
{
  #keys: '3[414702.0.129559419][414702.0.129559418][414702.0.129559420]'
  Description: '库存最大天数'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MinProdDeliverLT
{
  #keys: '3[414384.0.759444667][414384.0.759444666][414384.0.759444668]'
  Description: '成品最小交付LT(天)'
  ValueType: Real
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinimumNumberOfDaysInStock.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MinimumNumberOfDaysInStock
{
  #keys: '3[414702.0.129559409][414702.0.129559408][414702.0.129559410]'
  Description: '库存最小天数'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Attribute PlanningStrategyAuto
{
  #keys: '3[414384.0.759444687][414384.0.759444686][414384.0.759444688]'
  Description:
  [*
    è‡ªåŠ¨è®¡åˆ’ç­–ç•¥
    JIT & å®‰å…¨åº“å­˜ & VMI
  *]
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PlanningStrategyCustom
{
  #keys: '3[414384.0.759444697][414384.0.759444696][414384.0.759444698]'
  Description: '手动配置的计划策略'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductCount
{
  #keys: '3[414384.0.763750063][414384.0.763750062][414384.0.763750064]'
  Description: '成员SKU数量'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_SerialNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SerialNumber
{
  #keys: '3[414702.0.129544801][414702.0.129544800][414702.0.129544802]'
  Description: '序号'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UpdateBy
{
  #keys: '3[414384.0.763764908][414384.0.763764907][414384.0.763764909]'
  Description: '修改人'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UpdateTime
{
  #keys: '3[414384.0.763764921][414384.0.763764920][414384.0.763764922]'
  Description: '修改时间'
  ValueType: DateTime
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcMinProdDeliverLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Function CalcMinProdDeliverLT
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := 0.0;
    if( this.MatAttrSettingAndPlanStrategyDetail( relsize ) <> 0 ) {
      value := guard( min( this, MatAttrSettingAndPlanStrategyDetail, detail, detail.StandardLT() ) , 0.0 );
    }
    this.MinProdDeliverLT( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcPlanningStrategyAuto.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Function CalcPlanningStrategyAuto
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := "";
    if( this.FlagLongTerm() = "长周期" and this.FlagGeneric() = "专用" ) {
      value := "JIT";
    } else if ( this.FlagLongTerm() = "长周期" and this.FlagGeneric() = "通用" ) {
      value := "安全库存";
    } else if ( this.FlagLongTerm() = "短周期" and this.FlagGeneric() = "专用" ) {
      value := "JIT";
    } else if ( this.FlagLongTerm() = "短周期" and this.FlagGeneric() = "通用" ) {
      value := "VMI";
    }
    this.PlanningStrategyAuto( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcProductCount.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcProductCount
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := counter( this, MatAttrSettingAndPlanStrategyDetail, item, true );
    this.ProductCount( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_CreateIfNotExist.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  GlobalOTDTable parent,
  Number serialNumber,
  String businessType,
  String matCode,
  String matName,
  String matType,
  Real matArrivalLT,
  String flagGeneric,
  String flagLongTerm
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    // yypsybs Sep-8-2023 (created)
    value := MatAttrSettingAndPlanStrategy::GetExistByMatCode( parent, matCode );
    if( isnull( value ) ) {
      value := parent.MatAttrSettingAndPlanStrategy( relnew,
                                                     SerialNumber := serialNumber,
                                                     BusinessType := businessType,
                                                     MatCode := matCode,
                                                     MatName := matName,
                                                     MatType := matType,
                                                     MatArrivalLT := matArrivalLT,
                                                     FlagGeneric := flagGeneric,
                                                     FlagLongTerm := flagLongTerm,
                                                     PlanningStrategyCustom := "",
                                                     UpdateBy := "",
                                                     UpdateTime := DateTime::MinDateTime() );
    }
    return value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode#526.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DeleteIfExistByMatCode (
  GlobalOTDTable parent,
  Strings matCode
)
{
  TextBody:
  [*
    // yypsybs Jul-2-2023 (created)
    toDels := selectset( parent, MatAttrSettingAndPlanStrategy, item, true, matCode.Find( item.MatCode() ) >= 0 );
    if( toDels.Size() > 0 ) {
      traverse( toDels, Elements, toDel ) {
        toDel.Delete();
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_ExportTheFileStream.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportTheFileStream (
  MatAttrSettingAndPlanStrategys masapss
) as BinaryValue
{
  TextBody:
  [*
    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>物料标签</name><column><name>业务类型</name><type>String</type></column><column><name>物料编码</name><type>String</type></column><column><name>物料名称</name><type>String</type></column><column><name>物料分类</name><type>String</type></column><column><name>LT时间(天)</name><type>Number</type></column><column><name>成品SKU数量</name><type>Number</type></column><column><name>成品交付Min-LT(天)</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>库存最小天数</name><type>Number</type></column><column><name>库存最大天数</name><type>Number</type></column></table>';
    xmlDOMImplementation := XMLDOMImplementation::Create();
    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
    masapss := selectsortedset( masapss, Elements, tempMASAPS, true, tempMASAPS.MatCode() );
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    traverse ( masapss, Elements, masaps ) {
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.BusinessType(), "业务类型" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.MatCode(), "物料编码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.MatName(), "物料名称" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.MatType(), "物料分类" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]masaps.MatArrivalLT(), "LT时间(天)" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]masaps.ProductCount(), "成品SKU数量" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]masaps.MinProdDeliverLT(), "成品交付Min-LT(天)" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.FlagLongTerm(), "长短周期标签" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.FlagGeneric(), "通用专用标签" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.PlanningStrategyAuto(), "自动物料计划策略" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, masaps.PlanningStrategyCustom(), "用户手动计划策略" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]masaps.MinimumNumberOfDaysInStock(), "库存最小天数" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]masaps.MaximumNumberOfDaysInInventory(), "库存最大天数" );
    }
    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
    tableGroupHandle := TableGroupHandle::Create( "物料标签" );
    tableGroupHandle.Add( tableHandle );
    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return tableBinaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GeneratesTheSpecifiedXMLColumn (
  XMLDOMDocument xmlDOMDocument,
  XMLDOMElement tableElement,
  String value,
  String columnName
)
{
  TextBody:
  [*
    columnElements := tableElement.GetElementsByTagName( "column" );
    traverse ( columnElements, Elements, ce ) {
      nameElement := ce.GetElementByTagName( "name", 0 );
      if ( nameElement.TextContent() = columnName ) {
        cell := xmlDOMDocument.CreateElement( "cell" );
        cell.SetAttribute( "value", value );
        ce.AppendChild( cell );
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Delete (
  MatAttrSettingAndPlanStrategys toDels
)
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    traverse( toDels, Elements, toDel ){
      toDel.Delete();
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DeleteIfExistByMatCode (
  GlobalOTDTable parent,
  String matCode
)
{
  TextBody:
  [*
    // yypsybs Jul-2-2023 (created)
    toDels := selectset( parent, MatAttrSettingAndPlanStrategy, item, true, matCode = item.MatCode() );
    if( toDels.Size() > 0 ) {
      traverse( toDels, Elements, toDel ) {
        toDel.Delete();
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetExistByMatCode (
  GlobalOTDTable parent,
  String matCode
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    // yypsybs Jul-3-2023 (created)
    value := select( parent, MatAttrSettingAndPlanStrategy, item, true, matCode = item.MatCode() );
    return value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Update (
  GlobalOTDTable parent,
  MatAttrSettingAndPlanStrategyDataRow excelRow,
  String userName
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    fields := MatAttrSettingAndPlanStrategyDataTable::ExportFields();
    headers := MatAttrSettingAndPlanStrategyDataTable::ExpectedHeaders();
    //info( "--------SaveData--------" );
    // æ‰¾å¾…更新记录
    toUpdate := null( MatAttrSettingAndPlanStrategy );
    matCode := "";
    for( i := 0; i < fields.Size(); i++ ) {
      header := headers.Element( i );
      cell := excelRow.MatAttrSettingAndPlanStrategyDataCell( relget ).Element( i );
      if( cell.MatAttrSettingAndPlanStrategyDataColumn().name() <> header ) {
        FeedbackObject::LocalFeedback().AddHard( "the column with index " + [String]i + " should be " + header + ", but found " + cell.MatAttrSettingAndPlanStrategyDataColumn().name() );
        error( "the column with index " + [String]i + " should be " + header + ", but found " + cell.MatAttrSettingAndPlanStrategyDataColumn().name() );
      }
      if( cell.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" and cell.value() <> "") {
        matCode := cell.value();
        toUpdate := MatAttrSettingAndPlanStrategy::GetExistByMatCode( parent, matCode );
        if( isnull( toUpdate ) ) {
          FeedbackObject::LocalFeedback().AddHard( "get MatAttrSettingAndPlanStrategy by matCode [" + matCode + "] failed" );
          error( "get MatAttrSettingAndPlanStrategy by matCode [" + matCode + "] failed" );
        }
      }
    }
    if( not isnull( toUpdate ) ) {
      // å¯¹æ¯”差异
      for( i := 0; i < fields.Size(); i++ ) {
    //    header := headers.Element( i );
        cell := excelRow.MatAttrSettingAndPlanStrategyDataCell( relget ).Element( i );
        fieldName := fields.Element( i );
        field := Reflection::FindAttribute( "MatAttrSettingAndPlanStrategy", fieldName);
        if( isnull( field ) ) {
          FeedbackObject::LocalFeedback().AddHard( "MatAttrSettingAndPlanStrategy does not have field " + fieldName );
          error( "MatAttrSettingAndPlanStrategy does not have field " + fieldName );
        }
    //    info( "========header:" + header + "========" )
    //    info( "========fieldName:" + fieldName + "========" )
    //    info( "========cell:" + cell.value() + "========" )
        if( fieldName = "MatName" or fieldName = "MatType" or fieldName = "FlagLongTerm" or fieldName = "FlagGeneric" or fieldName = "PlanningStrategyAuto" ) {
          // do nothing
        } else if( fieldName = "MatArrivalLT" or fieldName = "ProductCount" or fieldName = "MinProdDeliverLT" ) {
          // do nothing
        } else if( fieldName = "PlanningStrategyCustom" ) {
          if( cell.value() <> "VMI" and cell.value() <> "安全库存" and cell.value() <> "VIT" ) {
            FeedbackObject::LocalFeedback().AddHard( "unsupported PlanningStrategyCustom : " + cell.value() );
            error( "unsupported PlanningStrategyCustom : " + cell.value() );
          } else if( cell.value() <> toUpdate.PlanningStrategyCustom() ) {
            toUpdate.PlanningStrategyCustom( cell.value() );
            toUpdate.UpdateBy( userName );
            toUpdate.UpdateTime( DateTime::Now() );
          }
        }
      }
    } else {
      FeedbackObject::LocalFeedback().AddHard( "no record with matCode : " + matCode );
      error( "no record with matCode : " + matCode );
    }
    return toUpdate;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategy
{
  #keys: '5[414384.0.759431201][414384.0.759431199][0.0.0][414384.0.759431200][414384.0.759431202]'
  BaseType: Object
  Description: '物料属性标签设定&物料计划策略'
  StructuredName: 'MatAttrSettingAndPlanStrategys'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute value
{
  #keys: '3[414384.0.763764661][414384.0.763764660][414384.0.763764662]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: value
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataCell
{
  #keys: '5[414384.0.763764658][414384.0.763764656][0.0.0][414384.0.763764657][414384.0.763764659]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataCells'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute columnIndex
{
  #keys: '3[414384.0.763764669][414384.0.763764668][414384.0.763764670]'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute name
{
  #keys: '3[414384.0.763764672][414384.0.763764671][414384.0.763764673]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '0'
  TargetAttribute: columnIndex
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: name
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
Function CalccolumnIndex
{
  TextBody:
  [*
    value := ifexpr( isnull( this.PreviousColumnInTable() ), 0, this.PreviousColumnInTable().columnIndex() + 1 );
    this.columnIndex( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataColumn
{
  #keys: '5[414384.0.763764666][414384.0.763764664][0.0.0][414384.0.763764665][414384.0.763764667]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataColumns'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute rowNo
{
  #keys: '3[414384.0.763764680][414384.0.763764679][414384.0.763764681]'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '0'
  TargetAttribute: rowNo
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataRow
{
  #keys: '5[414384.0.763764677][414384.0.763764675][0.0.0][414384.0.763764676][414384.0.763764678]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataRows'
}
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -78,6 +78,8 @@
          ]
        }
        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: '' ] }
      ]
      Properties:
      [
@@ -94,6 +96,8 @@
          c: Menu8
          c: MenuSelectDemoDataset
          c: MenuDoSync
          c: menuSeparator506
          c: ComponentMenuAnalysisGlobalOTDTable
        }
      ]
    }
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/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: 'GlobalOTDTable'
          ]
        }
      ]
    }
  ]
}
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/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_frmStandardAnalysisGlobalOTDTable/_ROOT_Component_frmStandardAnalysisGlobalOTDTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#root
#parent: MacroPlanner
OrphanComponent frmStandardAnalysisGlobalOTDTable
{
  #keys: '[414702.0.137524322]'
  BaseType: 'frmStandardAnalysis'
  Children:
  [
    #child: swTopMost
  ]
  Properties:
  [
    Height: 601
    Image: 'BIRD'
    Title: 'Analysis GlobalOTDTable'
    Width: 783
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def
@@ -2,7 +2,6 @@
#parent: LibSOPImpExp_ContextMenuImport/MenuImportFromCommonInformationModel
Response OnClick () id:Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonInformationModel_OnClick
{
  #warning 103647: "Identifier 'Response_MacroPlanner_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonInformationModel_OnClick' is not unique in the scope of 'LibSOPImpExp_ContextMenuImport' component on 'ApplicationMacroPlanner'. The reason can be a recently added ModeledResponse. A unique identifier was generated automatically."
  #keys: '[146140.2.683371355]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[414702.0.131771244]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[414702.0.131771248]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[414702.0.131771250]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[414702.0.131771242]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: pnlGeneral
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlGeneral.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
Quintiq file version 2.0
Component pnlGeneral
{
  #keys: '[414702.0.139154801]'
  BaseType: 'WebPanel'
  Children:
  [
    Component efBusinessType
    {
      #keys: '[414702.0.139035752]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.BusinessType'
        Enabled: false
        Label: '业务类型'
        Taborder: 0
      ]
    }
    Component efItemCode
    {
      #keys: '[414702.0.139035772]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MatCode'
        Enabled: false
        Label: '物料编码'
        Taborder: 1
      ]
    }
    Component efNameOfMaterial
    {
      #keys: '[414702.0.139035784]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MatName'
        Enabled: false
        Label: '物料名称'
        Taborder: 2
      ]
    }
    Component efMaterialArrivalLTDays
    {
      #keys: '[414702.0.139035796]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MatArrivalLT'
        Description: 'Finished product minimum delivery LT (days)'
        Enabled: false
        Label: '物料到货LT(天)'
        Taborder: 3
      ]
    }
    Component efFinishedProductMinimumDeliveryLTDays
    {
      #keys: '[414702.0.139035809]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MinProdDeliverLT'
        Enabled: false
        Label: '成品最小交付LT(天)'
        Taborder: 4
      ]
    }
    Component efFinishedSKUType
    {
      #keys: '[414702.0.139035821]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.ProductCount'
        Enabled: false
        Label: '成品SKU种类'
        Taborder: 5
      ]
    }
    Component efTheSystemAutomaticallySchedulesPolicies
    {
      #keys: '[414702.0.139035834]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.PlanningStrategyAuto'
        Enabled: false
        Label: '系统自动计划策略'
        Taborder: 6
      ]
    }
    Component ddslMaterialPlanningPolicyChanges
    {
      #keys: '[414702.0.139877037]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        AllowEmpty: true
        DataBinding: 'DataHolderDialogData.Data.PlanningStrategyCustom'
        Label: '物料计划策略变更'
        Strings: 'JIT;VMI;M/A;安全库存;PO拉料'
        Taborder: 7
      ]
    }
    Component efTheMinimumNumberOfDaysForAnItemToBeInventoried
    {
      #keys: '[414702.0.139969846]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MinimumNumberOfDaysInStock'
        Label: '物料库存最小天数'
        Taborder: 8
      ]
    }
    Component efTheMaximumNumberOfDaysThatTheItemIsInStock
    {
      #keys: '[414702.0.139969907]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MaximumNumberOfDaysInInventory'
        Label: '物料库存最大天数'
        Taborder: 9
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  MatAttrSettingAndPlanStrategy selection
) id:Method_DialogCreateEditMaterialLabelingAndPlanningStrategy_Edit
{
  #keys: '[414702.0.137732159]'
  Body:
  [*
    //data := shadow( selection );
    DataHolderDialogData.Data( selection );
    selection.UpdateBy( QuintiqUser::CurrentUser().Username() );
    selection.UpdateTime( DateTime::ActualTime() );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[414702.0.131771254]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[414702.0.131771253]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/_ROOT_Component_DialogCreateEditMaterialLabelingAndPlanningStrategy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogCreateEditMaterialLabelingAndPlanningStrategy
{
  #keys: '[414702.0.131771240]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderDialogData
    {
      #keys: '[414702.0.139153395]'
      BaseType: 'WebDataHolder'
      Databinding: 'MatAttrSettingAndPlanStrategy'
      Properties:
      [
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListChildMaterial.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
Component ListChildMaterial
{
  #keys: '[414702.0.122536770]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorChildMaterial
    {
      #keys: '[414702.0.122536771]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MatAttrSettingAndPlanStrategy'
        ExtractionMode: 'Selected'
        Source: 'PanelMaterial.ListMaterialMaterialLabelingAndPlanningStrategy'
        Taborder: 0
        Transformation: 'MatAttrSettingAndPlanStrategyDetail'
      ]
    }
    #child: listActionBarPageChildMaterial
    Component DataSetLevelChildMaterial
    {
      #keys: '[414702.0.122536776]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuChildMaterial
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MatCode","title":"MatCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MatCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StandardLT","title":"StandardLT","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StandardLT"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductDesc","title":"ProductDesc","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductDesc"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Comment","title":"Comment","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Comment"}}]'
        ContextMenu: 'listContextMenuChildMaterial'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy#880.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
Quintiq file version 2.0
Component ListMaterialMaterialLabelingAndPlanningStrategy id:ListMaterialMaterialLabelingAndPlanningStrategy_880
{
  #keys: '[414702.0.122174685]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorMaterial367
    {
      #keys: '[414702.0.122174686]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'MatAttrSettingAndPlanStrategy'
      ]
    }
    #child: listActionBarPageMaterial790_1
    Component DataSetLevelMaterial679
    {
      #keys: '[414702.0.122174688]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuMaterial455_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SerialNumber","title":"SerialNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SerialNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MatCode","title":"MatCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MatCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MatName","title":"MatName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MatName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MatType","title":"MatType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MatType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MatArrivalLT","title":"MatArrivalLT","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MatArrivalLT"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCount","title":"ProductCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinProdDeliverLT","title":"MinProdDeliverLT","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MinProdDeliverLT"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FlagLongTerm","title":"FlagLongTerm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FlagLongTerm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FlagGeneric","title":"FlagGeneric","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FlagGeneric"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlanningStrategyAuto","title":"PlanningStrategyAuto","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PlanningStrategyAuto"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlanningStrategyCustom","title":"PlanningStrategyCustom","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlanningStrategyCustom"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UpdateBy","title":"UpdateBy","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UpdateBy"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UpdateTime","title":"UpdateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UpdateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinimumNumberOfDaysInStock","title":"MinimumNumberOfDaysInStock","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MinimumNumberOfDaysInStock"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumNumberOfDaysInInventory","title":"MaximumNumberOfDaysInInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumNumberOfDaysInInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"1","title":"1","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"VALUE( object.UpdateTime() )"}}]'
        ContextMenu: 'listContextMenuMaterial455'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 1
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListMaterialMaterialLabelingAndPlanningStrategy_880_WebMenu_OnClick
    {
      #keys: '[414702.0.132706551]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[319.0.80354936]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial#558.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelChildMaterial
{
  #keys: '[414702.0.121452333]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListChildMaterial
  ]
  Properties:
  [
    Border: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterial.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
Component PanelMaterial
{
  #keys: '[414702.0.121452322]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListMaterialMaterialLabelingAndPlanningStrategy_880
    #child: PanelMaterialOperationButton
    Component DataHolderCheckedMaterials
    {
      #keys: '[414702.0.136936641]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[MatAttrSettingAndPlanStrategy]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Border: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport#136.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
Component PanelMaterialExportAndImport id:PanelMaterialExportAndImport_136
{
  #keys: '[414702.0.130101487]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonMaterialExportAndExport
    {
      #keys: '[414702.0.130101488]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '数据导出'
        Taborder: 1
      ]
    }
    Component ButtonMaterialExportAndImport
    {
      #keys: '[414702.0.130101489]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '数据导入'
        Taborder: 2
      ]
    }
    Component ButtonSynchronizeInventoryTargets
    {
      #keys: '[414702.0.142124169]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'CLOUD_REFRESH'
        Label: '同步库存目标'
        Taborder: 0
        Visible: false
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    FixedSize: true
    MinimumColumns: 25
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialLabelingAndPlanningStrategy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelMaterialLabelingAndPlanningStrategy
{
  #keys: '[414702.0.121452301]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelChildMaterial
    #child: PanelMaterial
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialOperationButton.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelMaterialOperationButton
{
  #keys: '[414702.0.130161515]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelMaterialExportAndImport_136
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageChildMaterial.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageChildMaterial
{
  #keys: '[414702.0.122536773]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageMaterial790 id:listActionBarPageMaterial790_1
{
  #keys: '[414702.0.122174687]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuChildMaterial.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuChildMaterial
{
  #keys: '[414702.0.122536778]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component listContextMenuMaterial455 id:listContextMenuMaterial455_1
{
  #keys: '[414702.0.122174689]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuSeparator
    {
      #keys: '[121142.1.1147171519]'
      BaseType: 'MenuSeparator'
      IsDerived: true
      Properties:
      [
        Taborder: 2
      ]
    }
    Component MenuDeleteAll
    {
      #keys: '[414702.0.141671580]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 3
        Title: '删除'
      ]
    }
    Component MenuSelectAll
    {
      #keys: '[414702.0.141943188]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PIG'
        Shortcut: 'Ctrl+A'
        Taborder: 4
        Title: '全选'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_O.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
Response OnClick (
  structured[MatAttrSettingAndPlanStrategy] selection
) id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_OnClick
{
  #keys: '[414702.0.141854066]'
  CanBindMultiple: false
  DefinitionID => /ListMaterialMaterialLabelingAndPlanningStrategy_880/Responsedef_ListMaterialMaterialLabelingAndPlanningStrategy_880_WebMenu_OnClick
  Initiator: 'MenuDeleteAll'
  QuillAction
  {
    Body:
    [*
      traverse ( selection, Elements, s ) {
        s.Delete();
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_O.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
Response OnClick () id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_OnClick
{
  #keys: '[414702.0.141794738]'
  CanBindMultiple: false
  DefinitionID => /ListMaterialMaterialLabelingAndPlanningStrategy_880/Responsedef_ListMaterialMaterialLabelingAndPlanningStrategy_880_WebMenu_OnClick
  Initiator: 'MenuSelectAll'
  QuillAction
  {
    Body:
    [*
      this.SelectAll();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
Response OnDoubleClick (
  MatAttrSettingAndPlanStrategy selection
) id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick
{
  #keys: '[414702.0.137732025]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogCreateEditMaterialLabelingAndPlanningStrategy );
      dlg.Edit( selection );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck#591.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
Response OnUserCheckedChanged () id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedChanged_591
{
  #keys: '[414702.0.136206065]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  QuillAction
  {
    Body:
    [*
      DataHolderCheckedMaterials.Data().Flush();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedCh.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
Response OnUserCheckedChanged (
  structured[MatAttrSettingAndPlanStrategy] checkeditems
) id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedChanged
{
  #keys: '[414702.0.136757090]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  QuillAction
  {
    Body:
    [*
      DataHolderCheckedMaterials.Data( checkeditems.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnCl.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelMaterialExportAndImport_136/ButtonMaterialExportAndExport
Response OnClick () id:Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnClick
{
  #keys: '[414702.0.133071932]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      tableBinaryData := MatAttrSettingAndPlanStrategy::ExportTheFileStream( DataHolderCheckedMaterials.Data() ).AsBinaryData();
      Application.Download( "MaterialLabelingAndPlanningStrategy.xlsx", tableBinaryData );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnCl.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
#parent: PanelMaterialExportAndImport_136/ButtonMaterialExportAndImport
Response OnClick () id:Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnClick
{
  #keys: '[414702.0.134451163]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          MatAttrSettingAndPlanStrategyInputSource::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          matAttrSettingAndPlanStrategyInputSource := MatAttrSettingAndPlanStrategyInputSource::Upload( GlobalOTDTable, fileName, base64String, ApplicationMacroPlanner.GetUserName() );
          matAttrSettingAndPlanStrategyInputSource.ParseTable();
          matAttrSettingAndPlanStrategyDataTable := select( matAttrSettingAndPlanStrategyInputSource, MatAttrSettingAndPlanStrategyDataTable, tempMASAPSDT, tempMASAPSDT.name() = "物料标签" );
          matAttrSettingAndPlanStrategyDataTable.VerifyTheTemplate();
          matAttrSettingAndPlanStrategyDataTable.SynchronizeData();
          WebMessageBox::Success( "上传成功", true );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation(), true );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelMaterialExportAndImport_136/ButtonSynchronizeInventoryTargets
Response OnClick () id:Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_OnClick
{
  #keys: '[414702.0.141615322]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      WebMessageBox::Success( "同步成功", true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelMaterial/DataHolderCheckedMaterials
Response OnDataChanged () id:Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged
{
  #keys: '[414702.0.136147695]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      //traverse ( this.Data(), Elements, e ) {
      //  info( "选中的物料号:", e.MatCode() );
      //}
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMaterialLabelingAndPlanningStrategy
{
  #keys: '[414702.0.120950329]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelMaterialLabelingAndPlanningStrategy
  ]
  Properties:
  [
    Description: '物料标签&计划策略表单'
    Image: 'PAPER_ROLL'
    Title: 'Material labeling&planning strategy'
  ]
}