yypsybs
2023-09-07 b113f7a558b7bce50824293cf066cccaad6c257e
4.11.物料属性标签设定&物料计划策略
已添加65个文件
989 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_bytes.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/DefaultValue_fileName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_createTable.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_parseTable.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Method_saveData.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/StaticMethod_upload.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagGeneric.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_FlagLongTerm.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyAuto.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_delete.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode#136.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataColumn
{
  #keys: '1[414384.0.763764789]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.763764811][414384.0.763764805][414384.0.763764812][414384.0.763764806][414384.0.763764813][414384.0.763764807][414384.0.763764814][414384.0.763764808][414384.0.763764815][414384.0.763764809][414384.0.763764816][414384.0.763764810]'
    SequenceElementSuffix: 'CellInColumn'
    SequenceSuffix: 'CellInColumn'
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataCell
  {
    #keys: '3[414384.0.763764791][414384.0.763764790][414384.0.763764792]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataColumn
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataColumn
  {
    #keys: '3[414384.0.763764794][414384.0.763764793][414384.0.763764795]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyD.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataCell_MatAttrSettingAndPlanStrategyDataRow
{
  #keys: '1[414384.0.763764825]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataCell
  {
    #keys: '3[414384.0.763764827][414384.0.763764826][414384.0.763764828]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataRow
  {
    #keys: '3[414384.0.763764830][414384.0.763764829][414384.0.763764831]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStr#458.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataRow_MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '1[414384.0.763764737]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataRow
  {
    #keys: '3[414384.0.763764739][414384.0.763764738][414384.0.763764740]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764742][414384.0.763764741][414384.0.763764743]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrateg.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataColumn_MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '1[414384.0.763764753]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.763764775][414384.0.763764769][414384.0.763764776][414384.0.763764770][414384.0.763764777][414384.0.763764771][414384.0.763764778][414384.0.763764772][414384.0.763764779][414384.0.763764773][414384.0.763764780][414384.0.763764774]'
    SequenceElementSuffix: 'ColumnInTable'
    SequenceSuffix: 'ColumnInTable'
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataColumn
  {
    #keys: '3[414384.0.763764755][414384.0.763764754][414384.0.763764756]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764758][414384.0.763764757][414384.0.763764759]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyInputSource_GlobalOTDTable_GlobalOTDTable_MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '1[414384.0.763764705]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.763764707][414384.0.763764706][414384.0.763764708]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyInputSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyInputSource
  {
    #keys: '3[414384.0.763764710][414384.0.763764709][414384.0.763764711]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrat.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategyInputSource_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyDataTable_MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '1[414384.0.763764721]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MatAttrSettingAndPlanStrategyDataTable
  {
    #keys: '3[414384.0.763764723][414384.0.763764722][414384.0.763764724]'
    Cardinality: '1toN'
    ObjectDefinition: MatAttrSettingAndPlanStrategyInputSource
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategyInputSource
  {
    #keys: '3[414384.0.763764726][414384.0.763764725][414384.0.763764727]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategyDataTable
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MatAttrSettingAndPlanStrategy_GlobalOTDTable_GlobalOTDTable_MatAttrSettingAndPlanStrategy
{
  #keys: '1[414384.0.763764622]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.763764624][414384.0.763764623][414384.0.763764625]'
    Cardinality: '0to1'
    ObjectDefinition: MatAttrSettingAndPlanStrategy
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MatAttrSettingAndPlanStrategy
  {
    #keys: '3[414384.0.763764627][414384.0.763764626][414384.0.763764628]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Attribute_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute name
{
  #keys: '3[414384.0.763764688][414384.0.763764687][414384.0.763764689]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/DefaultValue_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: name
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/Method_parseRows.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
Method parseRows
{
  TextBody:
  [*
    // yypsybs Jul-1-2023 (created)
    totalRows := 0;
    totalColumns := this.MatAttrSettingAndPlanStrategyDataColumn( relsize );
    if ( totalColumns > 0 ) {
      columnLongestList := maxset( this, MatAttrSettingAndPlanStrategyDataColumn, column, true, column.MatAttrSettingAndPlanStrategyDataCell( relsize ) );
      columnLongest := columnLongestList.First();
      totalRows := columnLongest.MatAttrSettingAndPlanStrategyDataCell( relsize );
      this.MatAttrSettingAndPlanStrategyDataRow( relflush );
      cells := construct( structured[MatAttrSettingAndPlanStrategyDataCell] );
      traverse ( this, MatAttrSettingAndPlanStrategyDataColumn, column ) {
        cells.Add( column.FirstCellInColumn() );
      }
      for ( i := 0; i < totalRows; i++ ) {
        assert( selectvalues( cells, Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ).ToString( "" ) =
                selectvalues( selectsortedset( cells, Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ), Elements, c, true, c.MatAttrSettingAndPlanStrategyDataColumn().columnIndex() ).ToString( "" ),
                "Assertion error in MatAttrSettingAndPlanningStrategyDataTable::parseRows: Cells not sorted by column index" );
        row := this.MatAttrSettingAndPlanStrategyDataRow( relnew, rowNo := i );
        newCells := construct( structured[MatAttrSettingAndPlanStrategyDataCell] );
        traverse ( cells, Elements, c ) {
          row.MatAttrSettingAndPlanStrategyDataCell( relinsert, c );
          newCells.Add( c.NextCellInColumn() );
        }
        cells := &newCells;
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_doVerify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
StaticMethod doVerify (
  MatAttrSettingAndPlanStrategyDataTable toVerify
)
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    // for test
    columns := selectsortedset( toVerify, MatAttrSettingAndPlanStrategyDataColumn, column, true, column.columnIndex() );
    //traverse( columns, Elements, column ) {
    //  info( "column header of " + [String]( column.columnIndex() + 1 ) + " is " + column.name() );
    //}
    //rows := toVerify.MatAttrSettingAndPlanningStrategyDataRow( relget );
    //traverse( rows, Elements.MatAttrSettingAndPlanningStrategyDataCell, cell ) {
    //  info( cell.MatAttrSettingAndPlanningStrategyDataColumn().name() + " of row " + [String]cell.MatAttrSettingAndPlanningStrategyDataRow().rowNo() + " is " + cell.value() );
    //}
    // for test end
    expectedHeaders := MatAttrSettingAndPlanStrategyDataTable::expectedHeaders();
    traverse( columns, Elements, column ) {
      columnActualName := column.name();
      if( column.columnIndex() > expectedHeaders.Size() ) {
        error( "unexpected head " + columnActualName + " of column " + [String]column.columnIndex() + "." );
      }
      expectedHeader := expectedHeaders.Element( column.columnIndex() );
      if( expectedHeader <> columnActualName ) {
        error( "expected head is " + expectedHeader + " of column " + [String]column.columnIndex() + ", but found " + columnActualName + "." );
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_expectedHeaders.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod expectedHeaders () as owning Strings
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    value := construct( structured[String] );
    value.Add( "物料编码" );
    value.Add( "物料名称" );
    value.Add( "物料分类" );
    value.Add( "LT时间(天)" );
    value.Add( "成员SKU数量" );
    value.Add( "成品交付MinLT(天)" );
    value.Add( "长短周期标签" );
    value.Add( "通用专用标签" );
    value.Add( "智能物料计划策略" );
    value.Add( "用户决策计划策略" );
    value.Add( "修改人" );
    value.Add( "修改时间" );
    return &value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,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;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/StaticMethod_exportFields.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod exportFields () as owning Strings
{
  TextBody:
  [*
    // yypsybs Jun-30-2023 (created)
    value := construct( structured[String] );
    value.Add( "MatCode" );
    value.Add( "MatName" );
    value.Add( "MatType" );
    value.Add( "MatArrivalLT" );
    value.Add( "ProductCount" );
    value.Add( "MinProdDeliverLT" );
    value.Add( "FlagLongTerm" );
    value.Add( "FlagGeneric" );
    value.Add( "PlanningStrategyAuto" );
    value.Add( "PlanningStrategyCustom" );
    value.Add( "UpdateBy" );
    value.Add( "UpdateTime" );
    return &value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataCell
  XMLID cell { }
  Attributes:
  [
    XMLAttribute
    {
      Attribute: value
      XMLID value { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataColumn
  XMLID column { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: cell
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataCell
      XMLID MatAttrSettingAndPlanningStrategyDataCell { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/XMLObjectBase_table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataTable
  XMLID table { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: column
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataColumn
      XMLID MatAttrSettingAndPlanningStrategyDataColumn { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXML/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#root
#parent: #root
XML MatAttrSettingAndPlanStrategyDataTableXML
{
  Direction: 'ImportExport'
  Root: table
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataColumn
  XMLID column { }
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/XMLObjectBase_table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
XMLObjectBase.ObjectDefinitions
{
  IdField: Key
  ObjectTypeField: QuintiqType
  TargetType: MatAttrSettingAndPlanStrategyDataTable
  XMLID table { }
  Aggregates:
  [
    XMLAggregate
    {
      ElementDefinition: column
      GenerateOutput: false
      Relation: MatAttrSettingAndPlanStrategyDataColumn
      XMLID MatAttrSettingAndPlanningStrategyDataColumn { }
    }
  ]
  Attributes:
  [
    XMLAttribute
    {
      Attribute: name
      XMLID name { }
    }
  ]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/XML_MatAttrSettingAndPlanningStrategyDataTableXMLHeaders/_ROOT_XML_MatAttrSettingAndPlanStrategyDataTableXMLHeaders.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#root
#parent: #root
XML MatAttrSettingAndPlanStrategyDataTableXMLHeaders
{
  Direction: 'ImportExport'
  Root: table
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyDataTable/_ROOT_Type_MatAttrSettingAndPlanStrategyDataTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataTable
{
  #keys: '5[414384.0.763764685][414384.0.763764683][0.0.0][414384.0.763764684][414384.0.763764686]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataTables'
}
_Main/BL/Type_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
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_fileName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute fileName
{
  #keys: '3[414384.0.763764699][414384.0.763764698][414384.0.763764700]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/Attribute_isXlsx.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute isXlsx
{
  #keys: '3[414384.0.763764702][414384.0.763764701][414384.0.763764703]'
  ValueType: Boolean
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/DefaultValue_fileName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: fileName
}
_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;
  *]
}
_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 );
    }
  *]
}
_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 );
        }
      }
    }
  *]
}
_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;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanStrategyInputSource/_ROOT_Type_MatAttrSettingAndPlanStrategyInputSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyInputSource
{
  #keys: '5[414384.0.763764693][414384.0.763764691][0.0.0][414384.0.763764692][414384.0.763764694]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyInputSources'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_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
}
_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
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatArrivalLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatArrivalLT
{
  #keys: '3[414384.0.759444630][414384.0.759444629][414384.0.759444631]'
  Description: '物料到货LT(天)'
  ValueType: Real
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatCode
{
  #keys: '3[414384.0.759431251][414384.0.759431250][414384.0.759431252]'
  Description: '物料编码'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatName
{
  #keys: '3[414384.0.759431286][414384.0.759431285][414384.0.759431287]'
  Description: '物料名称'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MatType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MatType
{
  #keys: '3[414384.0.759444677][414384.0.759444676][414384.0.759444678]'
  Description: '成品SKU类型'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_MinProdDeliverLT.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MinProdDeliverLT
{
  #keys: '3[414384.0.759444667][414384.0.759444666][414384.0.759444668]'
  Description: '成品最小交付LT(天)'
  ValueType: Real
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_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
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_PlanningStrategyCustom.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PlanningStrategyCustom
{
  #keys: '3[414384.0.759444697][414384.0.759444696][414384.0.759444698]'
  Description: '手动配置的计划策略'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_ProductCount.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductCount
{
  #keys: '3[414384.0.763750063][414384.0.763750062][414384.0.763750064]'
  Description: '成员SKU数量'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateBy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UpdateBy
{
  #keys: '3[414384.0.763764908][414384.0.763764907][414384.0.763764909]'
  Description: '修改人'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/Attribute_UpdateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UpdateTime
{
  #keys: '3[414384.0.763764921][414384.0.763764920][414384.0.763764922]'
  Description: '修改时间'
  ValueType: DateTime
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/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();
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_deleteIfExistByMatCode#136.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();
      }
    }
  *]
}
_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();
      }
    }
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_getExistByMatCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod getExistByMatCode (
  GlobalOTDTable parent,
  String matCode
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    // yypsybs Jul-3-2023 (created)
    value := select( parent, MatAttrSettingAndPlanStrategy, item, true, matCode = item.MatCode() );
    return value;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_update.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,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;
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategy/_ROOT_Type_MatAttrSettingAndPlanStrategy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategy
{
  #keys: '5[414384.0.759431201][414384.0.759431199][0.0.0][414384.0.759431200][414384.0.759431202]'
  BaseType: Object
  Description: '物料属性标签设定&物料计划策略'
  StructuredName: 'MatAttrSettingAndPlanStrategys'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/Attribute_value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute value
{
  #keys: '3[414384.0.763764661][414384.0.763764660][414384.0.763764662]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/DefaultValue_value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: value
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataCell/_ROOT_Type_MatAttrSettingAndPlanStrategyDataCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataCell
{
  #keys: '5[414384.0.763764658][414384.0.763764656][0.0.0][414384.0.763764657][414384.0.763764659]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataCells'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_columnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute columnIndex
{
  #keys: '3[414384.0.763764669][414384.0.763764668][414384.0.763764670]'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Attribute_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute name
{
  #keys: '3[414384.0.763764672][414384.0.763764671][414384.0.763764673]'
  ValueType: String
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_columnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '0'
  TargetAttribute: columnIndex
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/DefaultValue_name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: name
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/Function_CalccolumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
Function CalccolumnIndex
{
  TextBody:
  [*
    value := ifexpr( isnull( this.PreviousColumnInTable() ), 0, this.PreviousColumnInTable().columnIndex() + 1 );
    this.columnIndex( value );
  *]
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataColumn/_ROOT_Type_MatAttrSettingAndPlanStrategyDataColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataColumn
{
  #keys: '5[414384.0.763764666][414384.0.763764664][0.0.0][414384.0.763764665][414384.0.763764667]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataColumns'
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/Attribute_rowNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute rowNo
{
  #keys: '3[414384.0.763764680][414384.0.763764679][414384.0.763764681]'
  ValueType: Number
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/DefaultValue_rowNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '0'
  TargetAttribute: rowNo
}
_Main/BL/Type_MatAttrSettingAndPlanningStrategyDataRow/_ROOT_Type_MatAttrSettingAndPlanStrategyDataRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MatAttrSettingAndPlanStrategyDataRow
{
  #keys: '5[414384.0.763764677][414384.0.763764675][0.0.0][414384.0.763764676][414384.0.763764678]'
  BaseType: Object
  StructuredName: 'MatAttrSettingAndPlanStrategyDataRows'
}