From 588d972a935847b6b7057e167bf77f8543bbabfc Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期一, 11 九月 2023 15:51:26 +0800
Subject: [PATCH] Merge branch 'dev_yx' into dev_lhj
---
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyTheTemplate.qbl | 24
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def | 16
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl | 25
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl | 6
_Main/BL/InfoMessages.qbl | 5
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_CreateIfNotExist.qbl | 35
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MaximumNumberOfDaysInInventory.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_O.def | 17
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_SerialNumber.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnCl.def | 42 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def | 1
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CheckThePrecedingColumn.qbl | 37
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_base64Str.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial#558.def | 15
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductCode.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl | 69 +
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def | 16
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuChildMaterial.def | 10
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_userName.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl | 6
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl | 27
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl | 24
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_O.def | 21
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl | 10
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl | 12
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcPlanningStrategyAuto.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy#880.def | 60 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_BusinessType.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl | 26
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlGeneral.def | 133 +++
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcMinProdDeliverLT.qbl | 17
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl | 14
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTop.def | 29
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl | 12
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageChildMaterial.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialLabelingAndPlanningStrategy.def | 15
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/StaticMethod_CreateIfNotExist.qbl | 22
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_MatCode.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl | 14
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyThatTheItemCodeIsNotDuplicated.qbl | 23
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged.def | 18
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_Comment.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListChildMaterial.def | 42 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl | 17
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790#1.def | 10
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl | 12
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode#526.qbl | 18
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/_ROOT_Component_DialogCreateEditMaterialLabelingAndPlanningStrategy.def | 31
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnCancel_OnClick.def | 15
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/_ROOT_Type_MatAttrSettingAndPlanStrategyDetail.qbl | 10
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def | 4
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl | 17
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlContent.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def | 18
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductDesc.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl | 9
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl | 6
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl | 9
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_StandardLT.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialOperationButton.def | 15
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl | 27
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlActions.def | 40 +
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTopMost.def | 20
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl | 27
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl | 66 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcProductCount.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck#591.def | 16
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl | 62 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl | 18
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl | 11
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl | 26
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl | 8
_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/_ROOT_Component_frmStandardAnalysisGlobalOTDTable.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnCl.def | 21
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport#136.def | 51 +
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinimumNumberOfDaysInStock.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl | 8
_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl | 19
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterial.def | 26
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl | 15
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl | 18
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_ExportTheFileStream.qbl | 42 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455#1.def | 46 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl | 41 +
_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Method_Edit.def | 18
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_M.qbl | 23
_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Function_CalcMatCode.qbl | 13
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl | 34
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_VerifyTheFileName.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedCh.def | 18
125 files changed, 2,336 insertions(+), 1 deletions(-)
diff --git a/_Main/BL/InfoMessages.qbl b/_Main/BL/InfoMessages.qbl
new file mode 100644
index 0000000..d3fc0df
--- /dev/null
+++ b/_Main/BL/InfoMessages.qbl
@@ -0,0 +1,5 @@
+Quintiq file version 2.0
+#parent: #root
+InfoMessages id:#InfoMessages #extension
+{
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl
new file mode 100644
index 0000000..a723b60
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl
new file mode 100644
index 0000000..ccedde2
--- /dev/null
+++ b/_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'
+ }
+}
diff --git "a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr\043458.qbl" "b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr\043458.qbl"
new file mode 100644
index 0000000..7f1d910
--- /dev/null
+++ "b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr\043458.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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl
new file mode 100644
index 0000000..b765f35
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_M.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDetail_MatAttrSettingAndPlanStrategy_M.qbl
new file mode 100644
index 0000000..b1fc594
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl
new file mode 100644
index 0000000..970e5b3
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl
new file mode 100644
index 0000000..bc9b481
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl b/_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl
new file mode 100644
index 0000000..cedbcb8
--- /dev/null
+++ b/_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'
+ }
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
new file mode 100644
index 0000000..6f10cf9
--- /dev/null
+++ b/_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, "涓撶敤", "鐭懆鏈�" );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl
new file mode 100644
index 0000000..c6601dd
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl
new file mode 100644
index 0000000..4c149cf
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: name
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CheckThePrecedingColumn.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CheckThePrecedingColumn.qbl
new file mode 100644
index 0000000..915e044
--- /dev/null
+++ b/_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() );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_CreateOrUpdateData.qbl
new file mode 100644
index 0000000..6d76f0a
--- /dev/null
+++ b/_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() );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_SynchronizeData.qbl
new file mode 100644
index 0000000..c88a29b
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyThatTheItemCodeIsNotDuplicated.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyThatTheItemCodeIsNotDuplicated.qbl
new file mode 100644
index 0000000..cebf23b
--- /dev/null
+++ b/_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 );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyTheTemplate.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_VerifyTheTemplate.qbl
new file mode 100644
index 0000000..c17b3d6
--- /dev/null
+++ b/_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( "妯℃澘瑙f瀽閿欒" );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl
new file mode 100644
index 0000000..c10da83
--- /dev/null
+++ b/_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;
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl
new file mode 100644
index 0000000..3a85db8
--- /dev/null
+++ b/_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 + "." );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl
new file mode 100644
index 0000000..477f603
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl
new file mode 100644
index 0000000..126e66e
--- /dev/null
+++ b/_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();
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl
new file mode 100644
index 0000000..d45757b
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLAddressType { }
+ XMLID Key { }
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLID QuintiqType { }
+ XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl
new file mode 100644
index 0000000..9a0e46e
--- /dev/null
+++ b/_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 { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..dd6ba85
--- /dev/null
+++ b/_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 { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..badb838
--- /dev/null
+++ b/_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 { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl
new file mode 100644
index 0000000..76a9e0d
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLAddressType { }
+ XMLID Key { }
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLID QuintiqType { }
+ XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..320992a
--- /dev/null
+++ b/_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 { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..badb838
--- /dev/null
+++ b/_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 { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl
new file mode 100644
index 0000000..24c966b
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl
new file mode 100644
index 0000000..597fe5e
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_Comment.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_Comment.qbl
new file mode 100644
index 0000000..29e121e
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_MatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_MatCode.qbl
new file mode 100644
index 0000000..7ee0a19
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..d55171e
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductDesc.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_ProductDesc.qbl
new file mode 100644
index 0000000..0993c0f
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_StandardLT.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Attribute_StandardLT.qbl
new file mode 100644
index 0000000..5fce24d
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Function_CalcMatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/Function_CalcMatCode.qbl
new file mode 100644
index 0000000..0b3b836
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..44625cb
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/_ROOT_Type_MatAttrSettingAndPlanStrategyDetail.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDetail/_ROOT_Type_MatAttrSettingAndPlanStrategyDetail.qbl
new file mode 100644
index 0000000..ea00f4b
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_base64Str.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_base64Str.qbl
new file mode 100644
index 0000000..c4af056
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl
new file mode 100644
index 0000000..f02d671
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl
new file mode 100644
index 0000000..e39af74
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_userName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_userName.qbl
new file mode 100644
index 0000000..3ad1938
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl
new file mode 100644
index 0000000..1729ebf
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl
new file mode 100644
index 0000000..20d7fd4
--- /dev/null
+++ b/_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 );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl
new file mode 100644
index 0000000..362f5dd
--- /dev/null
+++ b/_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() );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_VerifyTheFileName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_VerifyTheFileName.qbl
new file mode 100644
index 0000000..e5127f4
--- /dev/null
+++ b/_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( "璇蜂笂浼燛xcel鏂囦欢" );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl
new file mode 100644
index 0000000..16be5bb
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl
new file mode 100644
index 0000000..5cc6e21
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_BusinessType.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..5d9d3ba
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl
new file mode 100644
index 0000000..acdc390
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl
new file mode 100644
index 0000000..bf68daa
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl
new file mode 100644
index 0000000..9dc43ad
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl
new file mode 100644
index 0000000..9e9785e
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl
new file mode 100644
index 0000000..c0de400
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl
new file mode 100644
index 0000000..907d2a5
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MaximumNumberOfDaysInInventory.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MaximumNumberOfDaysInInventory.qbl
new file mode 100644
index 0000000..d15fda5
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl
new file mode 100644
index 0000000..65b0de6
--- /dev/null
+++ b/_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: '鎴愬搧鏈�灏忎氦浠楲T锛堝ぉ锛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinimumNumberOfDaysInStock.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinimumNumberOfDaysInStock.qbl
new file mode 100644
index 0000000..b1b5700
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl
new file mode 100644
index 0000000..2c9ba97
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl
new file mode 100644
index 0000000..4f66c38
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl
new file mode 100644
index 0000000..e7a798c
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_SerialNumber.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_SerialNumber.qbl
new file mode 100644
index 0000000..3efd0ad
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl
new file mode 100644
index 0000000..6789918
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl
new file mode 100644
index 0000000..83ca47c
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcMinProdDeliverLT.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcMinProdDeliverLT.qbl
new file mode 100644
index 0000000..c02ef61
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcPlanningStrategyAuto.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcPlanningStrategyAuto.qbl
new file mode 100644
index 0000000..74fd0ee
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcProductCount.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Function_CalcProductCount.qbl
new file mode 100644
index 0000000..e03f766
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..8e647b2
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git "a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode\043526.qbl" "b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode\043526.qbl"
new file mode 100644
index 0000000..7d84d24
--- /dev/null
+++ "b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_DeleteIfExistByMatCode\043526.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();
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_ExportTheFileStream.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_ExportTheFileStream.qbl
new file mode 100644
index 0000000..4b41017
--- /dev/null
+++ b/_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();
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
new file mode 100644
index 0000000..f40c634
--- /dev/null
+++ b/_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 );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl
new file mode 100644
index 0000000..3c9e3f1
--- /dev/null
+++ b/_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();
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl
new file mode 100644
index 0000000..4cd01e5
--- /dev/null
+++ b/_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();
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl
new file mode 100644
index 0000000..c0e174e
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl
new file mode 100644
index 0000000..44ea303
--- /dev/null
+++ b/_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;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl
new file mode 100644
index 0000000..d5d2220
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl
new file mode 100644
index 0000000..f306adb
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl
new file mode 100644
index 0000000..753f2bd
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: value
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl
new file mode 100644
index 0000000..d61449b
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl
new file mode 100644
index 0000000..cd949d2
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl
new file mode 100644
index 0000000..e1ffaf2
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl
new file mode 100644
index 0000000..8e1a40d
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ ISOValue: '0'
+ TargetAttribute: columnIndex
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl
new file mode 100644
index 0000000..4c149cf
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: name
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl
new file mode 100644
index 0000000..de381a6
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl
new file mode 100644
index 0000000..8a33ee1
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl
new file mode 100644
index 0000000..10d4f32
--- /dev/null
+++ b/_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
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl
new file mode 100644
index 0000000..b6bfb38
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ ISOValue: '0'
+ TargetAttribute: rowNo
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl
new file mode 100644
index 0000000..c85f904
--- /dev/null
+++ b/_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'
+}
diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
index 6055329..51fa4f0 100644
--- a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
+++ b/_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
}
]
}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTop.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTop.def
new file mode 100644
index 0000000..89fbbad
--- /dev/null
+++ b/_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'
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTopMost.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/Component_swTopMost.def
new file mode 100644
index 0000000..8a8fcd7
--- /dev/null
+++ b/_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
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/_ROOT_Component_frmStandardAnalysisGlobalOTDTable.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysisGlobalOTDTable/_ROOT_Component_frmStandardAnalysisGlobalOTDTable.def
new file mode 100644
index 0000000..587a278
--- /dev/null
+++ b/_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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def
index b948d58..d927b55 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_LibSOPImpExp_ContextMenuImport_MenuImportFromCommonIn.def
+++ b/_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'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlActions.def
new file mode 100644
index 0000000..adcf81f
--- /dev/null
+++ b/_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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlContent.def
new file mode 100644
index 0000000..9155690
--- /dev/null
+++ b/_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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlGeneral.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Component_pnlGeneral.def
new file mode 100644
index 0000000..a034ddf
--- /dev/null
+++ b/_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: '鎴愬搧鏈�灏忎氦浠楲T锛堝ぉ锛�'
+ 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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Method_Edit.def
new file mode 100644
index 0000000..78dd14b
--- /dev/null
+++ b/_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 );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..e03c477
--- /dev/null
+++ b/_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();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..8f6e89a
--- /dev/null
+++ b/_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();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/_ROOT_Component_DialogCreateEditMaterialLabelingAndPlanningStrategy.def b/_Main/UI/MacroPlannerWebApp/Component_DialogMaterialLabelingAndPlanningStrategy/_ROOT_Component_DialogCreateEditMaterialLabelingAndPlanningStrategy.def
new file mode 100644
index 0000000..78c4c93
--- /dev/null
+++ b/_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'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListChildMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListChildMaterial.def
new file mode 100644
index 0000000..40e2efd
--- /dev/null
+++ b/_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
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy\043880.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy\043880.def"
new file mode 100644
index 0000000..698efbd
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_ListMaterialMaterialLabelingAndPlanningStrategy\043880.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()'
+ }
+ ]
+ }
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial\043558.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial\043558.def"
new file mode 100644
index 0000000..8e0ce39
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelChildMaterial\043558.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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterial.def
new file mode 100644
index 0000000..7232995
--- /dev/null
+++ b/_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
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.def"
new file mode 100644
index 0000000..636f952
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialExportAndImport\043136.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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialLabelingAndPlanningStrategy.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialLabelingAndPlanningStrategy.def
new file mode 100644
index 0000000..97be3df
--- /dev/null
+++ b/_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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialOperationButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_PanelMaterialOperationButton.def
new file mode 100644
index 0000000..3099403
--- /dev/null
+++ b/_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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageChildMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageChildMaterial.def
new file mode 100644
index 0000000..a4bbf6c
--- /dev/null
+++ b/_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
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790\0431.def"
new file mode 100644
index 0000000..7c30238
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listActionBarPageMaterial790\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageMaterial790 id:listActionBarPageMaterial790_1
+{
+ #keys: '[414702.0.122174687]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuChildMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuChildMaterial.def
new file mode 100644
index 0000000..e87ec5b
--- /dev/null
+++ b/_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
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def"
new file mode 100644
index 0000000..fe19274
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.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
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_O.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuDeleteAll_O.def
new file mode 100644
index 0000000..a921721
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_O.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuSelectAll_O.def
new file mode 100644
index 0000000..23b4c6a
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def
new file mode 100644
index 0000000..a91ec9c
--- /dev/null
+++ b/_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
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck\043591.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck\043591.def"
new file mode 100644
index 0000000..4eb4da0
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheck\043591.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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedCh.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnUserCheckedCh.def
new file mode 100644
index 0000000..9c7c2b3
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndExport_OnCl.def
new file mode 100644
index 0000000..b909d65
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonMaterialExportAndImport_OnCl.def
new file mode 100644
index 0000000..ce5035b
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterialExportAndImport_136_ButtonSynchronizeInventoryTargets_.def
new file mode 100644
index 0000000..a7731ca
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_PanelMaterial_DataHolderCheckedMaterials_OnDataChanged.def
new file mode 100644
index 0000000..380ad59
--- /dev/null
+++ b/_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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/_ROOT_Component_FormMaterialLabelingAndPlanningStrategy.def
new file mode 100644
index 0000000..527a380
--- /dev/null
+++ b/_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'
+ ]
+}
--
Gitblit v1.9.3