From b113f7a558b7bce50824293cf066cccaad6c257e Mon Sep 17 00:00:00 2001
From: yypsybs <yypsybs@foxmail.com>
Date: 星期四, 07 九月 2023 18:33:51 +0800
Subject: [PATCH] 4.11.物料属性标签设定&物料计划策略
---
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl | 22 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl | 6
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl | 17 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl | 9
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.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_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl | 54 +++
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl | 16
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl | 6
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl | 27 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl | 7
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl | 27 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl | 32 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl | 27 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl | 68 ++++
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl | 10
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl | 21 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl | 11
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl | 26 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode#136.qbl | 18 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl | 26 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_bytes.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl | 9
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl | 14
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl | 9
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl | 8
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl | 17 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl | 7
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl | 23 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl | 8
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl | 24 +
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl | 7
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl | 41 ++
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/DefaultValue_fileName.qbl | 6
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl | 9
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl | 34 ++
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl | 17 +
65 files changed, 989 insertions(+), 0 deletions(-)
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_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_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_parseRows.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl
new file mode 100644
index 0000000..4f276e4
--- /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..adcdcf6
--- /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..156988a
--- /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..d370d43
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl
@@ -0,0 +1,68 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod export (
+ GlobalOTDTable parent,
+ GlobalOTDTable parent,
+ GlobalOTDTable parent,
+ GlobalOTDTable parent
+) as BinaryValue
+{
+ TextBody:
+ [*
+ // yypsybs Jul-1-2023 (created)
+ xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
+ <table>
+ <name>MatAttrSettingAndPlanningStrategy</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( "MatAttrSettingAndPlanningStrategy", 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 MatAttrSettingAndPlanningStrategy");
+ }
+ }
+ columnStr := columnStr + "</column>";
+ xmlTemplate := xmlTemplate + columnStr;
+ }
+ //---------------------------------------------------------------------------------------------
+ xmlTemplate := xmlTemplate + "</table>";
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
+ XLS::SaveTable( tableHandle, OS::TempPath() + "MatAttrSettingAndPlanningStrategy.xlsx" );
+ file := OSFile::Construct();
+ file.Open( OS::TempPath() + "MatAttrSettingAndPlanningStrategy.xlsx", "Read", true );
+ data := file.ReadBinary()
+ return data;
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl
new file mode 100644
index 0000000..6559348
--- /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_MatAttrSettingAndPlanStrategyInputSource/Attribute_bytes.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_bytes.qbl
new file mode 100644
index 0000000..d57a443
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_bytes.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute bytes
+{
+ #keys: '3[414384.0.763764696][414384.0.763764695][414384.0.763764697]'
+ ValueType: BinaryValue
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl
new file mode 100644
index 0000000..fb1168e
--- /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..59af587
--- /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/DefaultValue_fileName.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/DefaultValue_fileName.qbl
new file mode 100644
index 0000000..104c0d8
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/DefaultValue_fileName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: fileName
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl
new file mode 100644
index 0000000..4c7b205
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method createTable (
+ String sheetName,
+ String sheetName,
+ String sheetName,
+ 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..e69abc2
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method parseTable
+{
+ TextBody:
+ [*
+ // yypsybs Jul-1-2023 (created)
+ tableGroupHandle := TableGroupHandle::Create( this.fileName() );
+ tableGroupHandle := XLS::LoadTableGroupFromBinaryData( this.bytes().AsBinaryData(), tableGroupHandle, true, this.isXlsx() );
+ sheets := tableGroupHandle.TableNames();
+
+ traverse ( sheets, Elements, sheetName, sheetName = "MatAttrSettingAndPlanningStrategy" ) {
+ tableHandle := tableGroupHandle.Table( sheetName );
+ tableXML := TableHandle::ExportXML( tableHandle );
+ MatAttrSettingAndPlanStrategyDataTable::XMLImportMatAttrSettingAndPlanStrategyDataTableXMLHeaders( tableXML );
+ parsedTable := MatAttrSettingAndPlanStrategyDataTable::XMLImportMatAttrSettingAndPlanStrategyDataTableXML( tableXML );
+ parsedTable.parseRows();
+ parsedTable.name( sheetName );
+ this.MatAttrSettingAndPlanStrategyDataTable( relinsert, &parsedTable );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl
new file mode 100644
index 0000000..de6f10d
--- /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 );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl
new file mode 100644
index 0000000..915a26f
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod upload (
+ GlobalOTDTable parent,
+ String filePath,
+ BinaryValue bytes,
+ GlobalOTDTable parent,
+ String filePath,
+ BinaryValue bytes,
+ GlobalOTDTable parent,
+ String filePath,
+ BinaryValue bytes,
+ GlobalOTDTable parent,
+ String filePath,
+ BinaryValue bytes
+) as MatAttrSettingAndPlanStrategyInputSource
+{
+ TextBody:
+ [*
+ // yypsybs Jul-1-2023 (created)
+ parent.MatAttrSettingAndPlanStrategyInputSource( relflush );
+ info( "filePath : " + filePath );
+ fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
+ info( "fileName : " + fileName );
+ inputSource := parent.MatAttrSettingAndPlanStrategyInputSource( relnew,
+ fileName := fileName,
+ bytes := bytes,
+ isXlsx := fileName.EndsWith( "xlsx" ));
+
+ 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_FlagGeneric.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl
new file mode 100644
index 0000000..e2bacd6
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl
@@ -0,0 +1,8 @@
+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..7302e5e
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl
@@ -0,0 +1,8 @@
+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_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_PlanningStrategyAuto.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl
new file mode 100644
index 0000000..b0309cb
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlanningStrategyAuto
+{
+ #keys: '3[414384.0.759444687][414384.0.759444686][414384.0.759444688]'
+ Description: '鑷姩璁″垝绛栫暐'
+ 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_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/StaticMethod_delete.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl
new file mode 100644
index 0000000..cabf9e9
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod delete (
+ MatAttrSettingAndPlanningStrategys toDels,
+ MatAttrSettingAndPlanStrategys toDels,
+ MatAttrSettingAndPlanStrategys toDels,
+ MatAttrSettingAndPlanStrategys toDels
+)
+{
+ TextBody:
+ [*
+ // yypsybs Jun-30-2023 (created)
+ traverse( toDels, Elements, toDel ){
+ toDel.Delete();
+ }
+ *]
+}
diff --git "a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode\043136.qbl" "b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode\043136.qbl"
new file mode 100644
index 0000000..7d22871
--- /dev/null
+++ "b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode\043136.qbl"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod deleteIfExistByMatCode (
+ GlobalOTDTable parent,
+ Strings matCodes
+)
+{
+ TextBody:
+ [*
+ // yypsybs Jul-2-2023 (created)
+ toDels := selectset( parent, MatAttrSettingAndPlanStrategy, item, true, matCodes.Find( item.MatCode() ) <> -1 );
+ if( toDels.Size() > 0 ) {
+ 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..7f43fa3
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod deleteIfExistByMatCode (
+ GlobalOTDTable parent,
+ String matCode,
+ GlobalOTDTable parent,
+ String matCode,
+ GlobalOTDTable parent,
+ String matCode,
+ 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..31f507e
--- /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..8294a1c
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl
@@ -0,0 +1,54 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod update (
+ GlobalOTDTable parent,
+ MatAttrSettingAndPlanStrategyDataRow excelRow
+) as MatAttrSettingAndPlanStrategy
+{
+ TextBody:
+ [*
+ fields := MatAttrSettingAndPlanStrategyDataTable::exportFields();
+ headers := MatAttrSettingAndPlanStrategyDataTable::expectedHeaders();
+ // 鎵惧緟鏇存柊璁板綍
+ 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 ) {
+ 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( 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( "MatAttrSettingAndPlanningStrategy", fieldName);
+ if( fieldName = "MatName" or fieldName = "MatType" or fieldName = "FlagLongTerm" or fieldName = "FlagGeneric" or fieldName = "PlanningStrategyAuto" ) {
+ fieldValue := guard( field.GetString( toUpdate ), "" );
+ if( fieldValue <> cell.value() ) {
+ error( "column " + header + " does not support to be changed" );
+ }
+ } else if( fieldName = "MatArrivalLT" or fieldName = "ProductCount" or fieldName = "MinProdDeliverLT" ) {
+ fieldRealValue := guard( field.GetReal( toUpdate ), 0.0 );
+ if( fieldRealValue <> [Real]cell.value() ) {
+ error( "column " + header + " does not support to be changed" );
+ }
+ } else if( fieldName = "PlanningStrategyCustom" ) {
+ fieldValue := guard( field.GetString( toUpdate ), "" );
+ toUpdate.PlanningStrategyCustom( fieldValue );
+ }
+ }
+ } else {
+ 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'
+}
--
Gitblit v1.9.3