From 0bb0bff90498bdec6f3d954dfc0bef2dec3b28c1 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期二, 03 九月 2024 18:04:23 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_CustomerDemandIDSRow/Attribute_DuplicateValueMarker.qbl                                                                          |    8 
 _Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl                                                                                      |    6 
 _Main/BL/Type_CustomerDemandIDSCell/DefaultValue_Value.qbl                                                                                     |    6 
 _Main/BL/Type_CustomerDemandIDSRow/DefaultValue_Name.qbl                                                                                       |    6 
 _Main/BL/Relations/Relation_CustomerDemandIDS_Row_CustomerDemandIDSRow_CustomerDemandIDS.qbl                                                   |   23 +
 _Main/BL/Type_CustomerDemandIDS/DefaultValue_Name.qbl                                                                                          |    6 
 _Main/BL/Type_CustomerDemandIDS/Method_SyncRows.qbl                                                                                            |   39 +++
 _Main/BL/Relations/Relation_CustomerDemandIDS_Column_CustomerDemandIDSColumn_CustomerDemandIDS.qbl                                             |   26 ++
 _Main/BL/Type_CustomerDemandIDS/StaticMethod_ReadStructure.qbl                                                                                 |   33 ++
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_QuintiqType.qbl                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_deRequirementImportExecuti.def |    2 
 _Main/BL/Relations/Relation_CustomerDemandIDSCell_Row_CustomerDemandIDSRow_Cell.qbl                                                            |   23 +
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_table.qbl                                                               |   27 ++
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_QuintiqType.qbl                                                   |    7 
 _Main/Sys/Repr/Global/CC_EngineRackCell.qrp                                                                                                    |   56 ++++
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_Key.qbl                                                           |    7 
 _Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl                                                                              |    4 
 _Main/BL/Type_CustomerDemandIDS/Attribute_ID.qbl                                                                                               |    8 
 _Main/BL/Type_CustomerDemandIDS/Attribute_Name.qbl                                                                                             |    8 
 _Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl                                                                               |   23 +
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/_ROOT_XML_CustomerDemandIDSXML.qbl                                                    |    8 
 _Main/BL/Type_CustomerDemandIDS/DefaultValue_ID.qbl                                                                                            |    6 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhUserName_OnCreated.def       |   16 +
 _Main/BL/Type_CustomerDemandIDSColumn/Function_CalcIndex.qbl                                                                                   |   13 +
 _Main/BL/Type_SixDigitCode/StaticMethod_Download.qbl                                                                                           |    2 
 _Main/BL/Type_ThreeDigitCode/StaticMethod_Download.qbl                                                                                         |    2 
 _Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl                                                                           |    2 
 _Main/Sys/Repr/Global/DL_EngineRackCell.qrp                                                                                                    |   81 ++++++
 _Main/BL/Type_CustomerDemandIDSCell/Attribute_Value.qbl                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_Form989/_ROOT_Component_FormThreeDigitCode#989.def                                                       |    2 
 _Main/BL/Type_CustomerDemandIDSRow/_ROOT_Type_CustomerDemandIDSRow.qbl                                                                         |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/_ROOT_Component_FormSixDigitCode.def                                                    |    2 
 _Main/BL/Type_CustomerDemandIDSRow/DefaultValue_DuplicateValueMarker.qbl                                                                       |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Component_List531.def                                                                   |    2 
 _var/_Main/Data/MP_ChangeoverLossSetting.xlsx                                                                                                  |    0 
 _Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl                                                                                      |    6 
 _Main/BL/Type_CustomerDemandIDSRow/Attribute_RowNr.qbl                                                                                         |    7 
 _Main/BL/Type_CustomerDemandIDSColumn/_ROOT_Type_CustomerDemandIDSColumn.qbl                                                                   |   10 
 _Main/BL/Type_CustomerDemandIDSCell/_ROOT_Type_CustomerDemandIDSCell.qbl                                                                       |   10 
 _Main/BL/Type_CustomerDemandIDSColumn/DefaultValue_Name.qbl                                                                                    |    6 
 _Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl                                                                                   |    4 
 _Main/BL/Type_PR_PP_Budget/StaticMethod_Download.qbl                                                                                           |    2 
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_column.qbl                                                              |   27 ++
 _Main/BL/Relations/Relation_CustomerDemandIDS_InterfaceDataset_InterfaceDataset_CustomerDemandI.qbl                                            |   23 +
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_Key.qbl                                                                  |    7 
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_column.qbl                                                       |   17 +
 _Main/BL/Type_CustomerDemandIDS/_ROOT_Type_CustomerDemandIDS.qbl                                                                               |   10 
 _Main/BL/Relations/Relation_CustomerDemandIDSColumn_Cell_CustomerDemandIDSCell_Column.qbl                                                      |   26 ++
 _Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNumber.qbl                                                                            |    8 
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_table.qbl                                                        |   27 ++
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_cell.qbl                                                                |   17 +
 _Main/BL/Type_CustomerDemandIDSColumn/Attribute_Name.qbl                                                                                       |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmEngineMatching.def                                                   |    4 
 /dev/null                                                                                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Component_List531#836.def                                                               |    2 
 _Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/_ROOT_XML_CustomerDemandIDSXMLHeaders.qbl                                      |    8 
 _Main/BL/Type_CustomerDemandIDSRow/Attribute_Name.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def                                        |   12 
 _Main/BL/Type_CustomerDemandIDSColumn/Attribute_Index.qbl                                                                                      |    7 
 _Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl                                                                                          |    2 
 _Main/BL/Type_CustomerDemandIDSColumn/Attribute_Period.qbl                                                                                     |    7 
 61 files changed, 724 insertions(+), 31 deletions(-)

diff --git a/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl b/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
index e7936d6..0f8f5ec 100644
--- a/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
+++ b/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
@@ -10,7 +10,7 @@
     EDIMLTable ChangeLossSettingExcel
     {
       TargetType: ChangeLossSettingExcel
-      EDIMLColumn ChangeLossNr { Attribute: ChangeLossNr ValueType: Number }
+      EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
       EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
       EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
       EDIMLColumn Unit { Attribute: Unit ValueType: String }
@@ -22,7 +22,7 @@
     {
       InputTable: ChangeLossSettingExcel
       OutputTable: ChangeoverLossSetting
-      EDIColumnMatch { InputColumn: ChangeLossNr OutputColumn: ChangeLossNr }
+      EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
       EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
       EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
       EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
@@ -35,10 +35,10 @@
     {
       Columns:
       [
-        EDIXLSLinkColumn ChangeLossNr { ValueType: Number }
         EDIXLSLinkColumn Product1 { ValueType: String }
         EDIXLSLinkColumn Product2 { ValueType: String }
         EDIXLSLinkColumn Unit { ValueType: String }
+        EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
       ]
     }
   }
diff --git a/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl b/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
index 011a29e..3f2dd12 100644
--- a/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
+++ b/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
@@ -14,7 +14,7 @@
       PrimaryKeyColumns: Unit
       TargetType: ChangeLossSettingExcel
       TypeIndex: ChangeLossSettingTypeIndex
-      EDIMLColumn ChangeLossNr { Attribute: ChangeLossNr ValueType: Number }
+      EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
       EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
       EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
       EDIMLColumn Unit { Attribute: Unit ValueType: String }
@@ -26,7 +26,7 @@
     {
       InputTable: ChangeoverLossSetting
       OutputTable: ChangeLossSettingExcel
-      EDIColumnMatch { InputColumn: ChangeLossNr OutputColumn: ChangeLossNr }
+      EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
       EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
       EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
       EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
@@ -39,10 +39,10 @@
     {
       Columns:
       [
-        EDIXLSLinkColumn ChangeLossNr { ValueType: Number }
         EDIXLSLinkColumn Product1 { ValueType: String }
         EDIXLSLinkColumn Product2 { ValueType: String }
         EDIXLSLinkColumn Unit { ValueType: String }
+        EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
       ]
     }
   }
diff --git a/_Main/BL/Relations/Relation_CustomerDemandIDSCell_Row_CustomerDemandIDSRow_Cell.qbl b/_Main/BL/Relations/Relation_CustomerDemandIDSCell_Row_CustomerDemandIDSRow_Cell.qbl
new file mode 100644
index 0000000..cb2c688
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerDemandIDSCell_Row_CustomerDemandIDSRow_Cell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerDemandIDSCell_Row_CustomerDemandIDSRow_Cell
+{
+  #keys: '1[415136.0.1109674731]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Row
+  {
+    #keys: '3[415136.0.1109674733][415136.0.1109674732][415136.0.1109674734]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerDemandIDSCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Cell
+  {
+    #keys: '3[415136.0.1109674736][415136.0.1109674735][415136.0.1109674737]'
+    Cardinality: '1toN'
+    ObjectDefinition: CustomerDemandIDSRow
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CustomerDemandIDSColumn_Cell_CustomerDemandIDSCell_Column.qbl b/_Main/BL/Relations/Relation_CustomerDemandIDSColumn_Cell_CustomerDemandIDSCell_Column.qbl
new file mode 100644
index 0000000..55480b7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerDemandIDSColumn_Cell_CustomerDemandIDSCell_Column.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerDemandIDSColumn_Cell_CustomerDemandIDSCell_Column
+{
+  #keys: '1[415136.0.1109674700]'
+  ProceduralSequenceRelationStrategy
+  {
+    #keys: '13[0.0.0][415136.0.1109674719][415136.0.1109674713][415136.0.1109674720][415136.0.1109674714][415136.0.1109674721][415136.0.1109674715][415136.0.1109674722][415136.0.1109674716][415136.0.1109674723][415136.0.1109674717][415136.0.1109674724][415136.0.1109674718]'
+    SequenceElementSuffix: 'CellInColumn'
+    SequenceSuffix: 'CellInColumn'
+  }
+  RelationSide.LeftSide Cell
+  {
+    #keys: '3[415136.0.1109674702][415136.0.1109674701][415136.0.1109674703]'
+    Cardinality: '1toN'
+    ObjectDefinition: CustomerDemandIDSColumn
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide Column
+  {
+    #keys: '3[415136.0.1109674705][415136.0.1109674704][415136.0.1109674706]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerDemandIDSCell
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CustomerDemandIDS_Column_CustomerDemandIDSColumn_CustomerDemandIDS.qbl b/_Main/BL/Relations/Relation_CustomerDemandIDS_Column_CustomerDemandIDSColumn_CustomerDemandIDS.qbl
new file mode 100644
index 0000000..7057e02
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerDemandIDS_Column_CustomerDemandIDSColumn_CustomerDemandIDS.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerDemandIDS_Column_CustomerDemandIDSColumn_CustomerDemandIDS
+{
+  #keys: '1[415136.0.1109674656]'
+  ProceduralSequenceRelationStrategy
+  {
+    #keys: '13[0.0.0][415136.0.1109674675][415136.0.1109674669][415136.0.1109674676][415136.0.1109674670][415136.0.1109674677][415136.0.1109674671][415136.0.1109674678][415136.0.1109674672][415136.0.1109674679][415136.0.1109674673][415136.0.1109674680][415136.0.1109674674]'
+    SequenceElementSuffix: 'Column'
+    SequenceSuffix: 'Column'
+  }
+  RelationSide.LeftSide Column
+  {
+    #keys: '3[415136.0.1109674658][415136.0.1109674657][415136.0.1109674659]'
+    Cardinality: '1toN'
+    ObjectDefinition: CustomerDemandIDS
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide CustomerDemandIDS
+  {
+    #keys: '3[415136.0.1109674661][415136.0.1109674660][415136.0.1109674662]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerDemandIDSColumn
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CustomerDemandIDS_InterfaceDataset_InterfaceDataset_CustomerDemandI.qbl b/_Main/BL/Relations/Relation_CustomerDemandIDS_InterfaceDataset_InterfaceDataset_CustomerDemandI.qbl
new file mode 100644
index 0000000..2818276
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerDemandIDS_InterfaceDataset_InterfaceDataset_CustomerDemandI.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerDemandIDS_InterfaceDataset_InterfaceDataset_CustomerDemandIDS
+{
+  #keys: '1[415136.0.1109686108]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide InterfaceDataset
+  {
+    #keys: '3[415136.0.1109686110][415136.0.1109686109][415136.0.1109686111]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerDemandIDS
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CustomerDemandIDS
+  {
+    #keys: '3[415136.0.1109686113][415136.0.1109686112][415136.0.1109686114]'
+    Cardinality: '1toN'
+    ObjectDefinition: InterfaceDataset
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CustomerDemandIDS_Row_CustomerDemandIDSRow_CustomerDemandIDS.qbl b/_Main/BL/Relations/Relation_CustomerDemandIDS_Row_CustomerDemandIDSRow_CustomerDemandIDS.qbl
new file mode 100644
index 0000000..3755323
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CustomerDemandIDS_Row_CustomerDemandIDSRow_CustomerDemandIDS.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CustomerDemandIDS_Row_CustomerDemandIDSRow_CustomerDemandIDS
+{
+  #keys: '1[415136.0.1109674643]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Row
+  {
+    #keys: '3[415136.0.1109674645][415136.0.1109674644][415136.0.1109674646]'
+    Cardinality: '1toN'
+    ObjectDefinition: CustomerDemandIDS
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide CustomerDemandIDS
+  {
+    #keys: '3[415136.0.1109674648][415136.0.1109674647][415136.0.1109674649]'
+    Cardinality: '0to1'
+    ObjectDefinition: CustomerDemandIDSRow
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNr.qbl b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNr.qbl
deleted file mode 100644
index 379f527..0000000
--- a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNr.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute ChangeLossNr
-{
-  #keys: '3[415136.0.1035218301][415136.0.1035218300][415136.0.1035218302]'
-  Description: '鎹㈠瀷鎹熷け锛堝彴锛�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNumber.qbl b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNumber.qbl
new file mode 100644
index 0000000..d7b7fd4
--- /dev/null
+++ b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_ChangeLossNumber.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ChangeLossNumber
+{
+  #keys: '3[415136.0.1105920061][415136.0.1105920060][415136.0.1105920062]'
+  Description: '鎹㈠瀷鎹熷け锛堝彴锛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl
index c1c2c55..a7c0e18 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl
@@ -10,11 +10,11 @@
     if( exists( macroplan, ChangeLossSettingExcel, excel, excel.Product1() = '' 
                 or excel.Product2() = '' 
                 or excel.Unit() = '' 
-                or excel.ChangeLossNr() = 0 ) ){
+                or excel.ChangeLossNumber() = '' ) ){
       error( Translations::MP_ChangeLossSettingExcel_Import_NullInputRequiredField() );
     }
     //瀵煎叆鐨勬暟閲忓皬浜�0
-    if( exists( macroplan, ChangeLossSettingExcel, excel, excel.ChangeLossNr() < 0 ) ){
+    if( exists( macroplan, ChangeLossSettingExcel, excel, [Real]excel.ChangeLossNumber() > 0 and ceil( [Real]excel.ChangeLossNumber() ) <> floor( [Real]excel.ChangeLossNumber() ) ) ){
       error( Translations::MP_ChangeLossSettingExcel_Import_PositiveInteger() );
     }
     //瀵煎叆浜у搧鏄惁瀛樺湪
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
index 74fc514..004c0ce 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
@@ -9,7 +9,7 @@
   [*
     // 鐢勫叞楦� Aug-22-2024 (created)
     traverse( macroplan, ChangeLossSetting, cls ){
-      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNr := cls.ChangeLossNr() );
+      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNumber := [String]cls.ChangeLossNr() );
     }
     value := macroplan.MP_ExportChangeLossSettingsBroker().ExecuteToXLS( isxlsxformat ).AsBinaryValue();
     macroplan.ChangeLossSettingExcel( relflush );
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
index 94fe124..466849e 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
@@ -26,7 +26,7 @@
                                           and cls.ProductSecond().ID() = excel.Product2()
                                           and cls.Unit().ID() = excel.Unit() );
       if( isnull( cls ) ){
-        cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := excel.ChangeLossNr() );
+        cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := [Number]excel.ChangeLossNumber() );
         product1        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product1() );
         product2        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product2() );
         unit            := selectobject( macroplan, Unit, unit, unit.ID() = excel.Unit() );
@@ -34,7 +34,7 @@
         cls.ProductSecond( relset, product2 );
         cls.Unit( relset, unit );
       }else {
-        cls.ChangeLossNr( excel.ChangeLossNr() );
+        cls.ChangeLossNr( [Number]excel.ChangeLossNumber() );
       }
       excel.Delete();
     }
diff --git a/_Main/BL/Type_CustomerDemandIDS/Attribute_ID.qbl b/_Main/BL/Type_CustomerDemandIDS/Attribute_ID.qbl
new file mode 100644
index 0000000..82fd242
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[415136.0.1109686029][415136.0.1109686028][415136.0.1109686030]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/Attribute_Name.qbl b/_Main/BL/Type_CustomerDemandIDS/Attribute_Name.qbl
new file mode 100644
index 0000000..5da9a7e
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[415136.0.1109686038][415136.0.1109686037][415136.0.1109686039]'
+  Description: '鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/DefaultValue_ID.qbl b/_Main/BL/Type_CustomerDemandIDS/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/DefaultValue_Name.qbl b/_Main/BL/Type_CustomerDemandIDS/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/Method_SyncRows.qbl b/_Main/BL/Type_CustomerDemandIDS/Method_SyncRows.qbl
new file mode 100644
index 0000000..0106865
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Method_SyncRows.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+Method SyncRows
+{
+  TextBody:
+  [*
+    totalRows := 0;
+    totalColumns := this.Column( relsize );
+    
+    if ( totalColumns > 0 ) {
+      randomCol := select( this, Column, tempFPC, true );
+      totalRows := randomCol.Cell( relsize );
+      
+      this.Row( relflush );
+      
+      cells := construct( CustomerDemandIDSCells );
+      traverse ( this, Column, fpc ) {
+        cells.Add( fpc.FirstCellInColumn() );
+      }
+      
+      for ( i := 0; i < totalRows; i++ ) {
+        assert( selectvalues( cells, Elements, c, true, c.Column().Index() ).ToString( "" ) = 
+                selectvalues( selectsortedset( cells, Elements, c, true, c.Column().Index() ), Elements, c, true, c.Column().Index() ).ToString( "" ),
+                "Assertion error in FrockDataTable::syncRows: Cells not sorted by column index" );
+        row := this.Row( relnew, RowNr := i );
+        
+        newCells := construct( CustomerDemandIDSCells );
+        
+        traverse ( cells, Elements, c ) {
+          row.Cell( relinsert, c );
+          
+          newCells.Add( c.NextCellInColumn() );
+        }
+        
+        cells := &newCells;
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/StaticMethod_ReadStructure.qbl b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_ReadStructure.qbl
new file mode 100644
index 0000000..f0b4327
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_ReadStructure.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ReadStructure (
+  BinaryValue binaryvalue,
+  InterfaceDataset owner
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-3-2024 (created)
+    tableGroupHandle := TableGroupHandle::Create( 'IDS鍏ㄨ〃' );
+    tableGroupHandle := XLS::LoadTableGroupFromBinaryData( binaryvalue.AsBinaryData(), tableGroupHandle, true, true );
+    sheets := tableGroupHandle.TableNames();
+    
+    traverse ( sheets, Elements, sheetName ) {
+      tableHandle := tableGroupHandle.Table( sheetName );
+      tableXML := TableHandle::ExportXML( tableHandle );
+      
+    //  info( tableXML.AsQUILL() );
+      
+      CustomerDemandIDS::XMLFileImportCustomerDemandIDSXMLHeaders( tableXML );
+      xlstable := CustomerDemandIDS::XMLImportCustomerDemandIDSXML( tableXML );
+    
+      xlstable.SyncRows();
+    
+      xlstable.Name( sheetName );
+      owner.CustomerDemandIDS( relinsert, &xlstable ); 
+      
+      Transaction::Transaction().Propagate( attribute( CustomerDemandIDSColumn, Index ) );
+    
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_Key.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+  XMLAddressType { }
+  XMLID Key { }
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+  XMLID QuintiqType { }
+  XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_cell.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_cell.qbl
new file mode 100644
index 0000000..c4fd297
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_cell.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+  IdField: Key
+  ObjectTypeField: QuintiqType
+  TargetType: CustomerDemandIDSCell
+  XMLID cell { }
+  Attributes:
+  [
+    XMLAttribute
+    {
+      Attribute: Value
+      XMLID value { }
+    }
+  ]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_column.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..4a97560
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_column.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+  IdField: Key
+  ObjectTypeField: QuintiqType
+  TargetType: CustomerDemandIDSColumn
+  XMLID column { }
+  Aggregates:
+  [
+    XMLAggregate
+    {
+      ElementDefinition: cell
+      GenerateOutput: false
+      Relation: Cell
+      XMLID Cell { }
+    }
+  ]
+  Attributes:
+  [
+    XMLAttribute
+    {
+      Attribute: Name
+      XMLID name { }
+    }
+  ]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_table.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..ebf311d
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/XMLObjectBase_table.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+  IdField: Key
+  ObjectTypeField: QuintiqType
+  TargetType: CustomerDemandIDS
+  XMLID table { }
+  Aggregates:
+  [
+    XMLAggregate
+    {
+      ElementDefinition: column
+      GenerateOutput: false
+      Relation: Column
+      XMLID Column { }
+    }
+  ]
+  Attributes:
+  [
+    XMLAttribute
+    {
+      Attribute: Name
+      XMLID name { }
+    }
+  ]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/_ROOT_XML_CustomerDemandIDSXML.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/_ROOT_XML_CustomerDemandIDSXML.qbl
new file mode 100644
index 0000000..a0513a0
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXML/_ROOT_XML_CustomerDemandIDSXML.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#root
+#parent: #root
+XML CustomerDemandIDSXML
+{
+  Direction: 'ImportExport'
+  Root: table
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_Key.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+  XMLAddressType { }
+  XMLID Key { }
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+  XMLID QuintiqType { }
+  XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_column.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..c3c96e9
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_column.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+  IdField: Key
+  ObjectTypeField: QuintiqType
+  TargetType: CustomerDemandIDSColumn
+  XMLID column { }
+  Attributes:
+  [
+    XMLAttribute
+    {
+      Attribute: Name
+      XMLID name { }
+    }
+  ]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_table.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..ebf311d
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/XMLObjectBase_table.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+  IdField: Key
+  ObjectTypeField: QuintiqType
+  TargetType: CustomerDemandIDS
+  XMLID table { }
+  Aggregates:
+  [
+    XMLAggregate
+    {
+      ElementDefinition: column
+      GenerateOutput: false
+      Relation: Column
+      XMLID Column { }
+    }
+  ]
+  Attributes:
+  [
+    XMLAttribute
+    {
+      Attribute: Name
+      XMLID name { }
+    }
+  ]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/_ROOT_XML_CustomerDemandIDSXMLHeaders.qbl b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/_ROOT_XML_CustomerDemandIDSXMLHeaders.qbl
new file mode 100644
index 0000000..8c8b3e2
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/XML_CustomerDemandIDSXMLHeaders/_ROOT_XML_CustomerDemandIDSXMLHeaders.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#root
+#parent: #root
+XML CustomerDemandIDSXMLHeaders
+{
+  Direction: 'ImportExport'
+  Root: table
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/_ROOT_Type_CustomerDemandIDS.qbl b/_Main/BL/Type_CustomerDemandIDS/_ROOT_Type_CustomerDemandIDS.qbl
new file mode 100644
index 0000000..cbc8e64
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/_ROOT_Type_CustomerDemandIDS.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CustomerDemandIDS
+{
+  #keys: '5[415136.0.1109686026][415136.0.1109686024][0.0.0][415136.0.1109686025][415136.0.1109686027]'
+  BaseType: Object
+  Description: '瀹㈡埛闇�姹傜殑IDS鍏ㄨ〃鏁版嵁'
+  StructuredName: 'CustomerDemandIDSs'
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSCell/Attribute_Value.qbl b/_Main/BL/Type_CustomerDemandIDSCell/Attribute_Value.qbl
new file mode 100644
index 0000000..a61a183
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+  #keys: '3[415136.0.1109686090][415136.0.1109686089][415136.0.1109686091]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSCell/DefaultValue_Value.qbl b/_Main/BL/Type_CustomerDemandIDSCell/DefaultValue_Value.qbl
new file mode 100644
index 0000000..913414b
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSCell/DefaultValue_Value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Value
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSCell/_ROOT_Type_CustomerDemandIDSCell.qbl b/_Main/BL/Type_CustomerDemandIDSCell/_ROOT_Type_CustomerDemandIDSCell.qbl
new file mode 100644
index 0000000..696e85a
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSCell/_ROOT_Type_CustomerDemandIDSCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CustomerDemandIDSCell
+{
+  #keys: '5[415136.0.1109686084][415136.0.1109686082][0.0.0][415136.0.1109686083][415136.0.1109686085]'
+  BaseType: Object
+  Description: '瀹㈡埛闇�姹傜殑IDS鍏ㄨ〃鏁版嵁'
+  StructuredName: 'CustomerDemandIDSCells'
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Index.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..112a42c
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+  #keys: '3[415136.0.1109686070][415136.0.1109686069][415136.0.1109686071]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Name.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..411803f
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[415136.0.1109686073][415136.0.1109686072][415136.0.1109686074]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Period.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..4ec77c1
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+  #keys: '3[415136.0.1109686076][415136.0.1109686075][415136.0.1109686077]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/DefaultValue_Name.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/Function_CalcIndex.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..3efd068
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Jun-22-2024 (created)
+    
+    value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+    
+    this.Index( value );
+  *]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSColumn/_ROOT_Type_CustomerDemandIDSColumn.qbl b/_Main/BL/Type_CustomerDemandIDSColumn/_ROOT_Type_CustomerDemandIDSColumn.qbl
new file mode 100644
index 0000000..3df6694
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSColumn/_ROOT_Type_CustomerDemandIDSColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CustomerDemandIDSColumn
+{
+  #keys: '5[415136.0.1109686067][415136.0.1109686065][0.0.0][415136.0.1109686066][415136.0.1109686068]'
+  BaseType: Object
+  Description: '瀹㈡埛闇�姹傜殑IDS鍏ㄨ〃鏁版嵁'
+  StructuredName: 'CustomerDemandIDSColumns'
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/Attribute_DuplicateValueMarker.qbl b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..b28a0d0
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_DuplicateValueMarker.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DuplicateValueMarker
+{
+  #keys: '3[415136.0.1109686049][415136.0.1109686048][415136.0.1109686050]'
+  Description: '鍒ゆ柇鏄惁瀛樺湪閲嶅鍊�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/Attribute_Name.qbl b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_Name.qbl
new file mode 100644
index 0000000..3a140dd
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[415136.0.1109686052][415136.0.1109686051][415136.0.1109686053]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/Attribute_RowNr.qbl b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..33efbf6
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+  #keys: '3[415136.0.1109686055][415136.0.1109686054][415136.0.1109686056]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_DuplicateValueMarker.qbl b/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..bbb8a45
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_DuplicateValueMarker.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: DuplicateValueMarker
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_Name.qbl b/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CustomerDemandIDSRow/_ROOT_Type_CustomerDemandIDSRow.qbl b/_Main/BL/Type_CustomerDemandIDSRow/_ROOT_Type_CustomerDemandIDSRow.qbl
new file mode 100644
index 0000000..8d40747
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDSRow/_ROOT_Type_CustomerDemandIDSRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CustomerDemandIDSRow
+{
+  #keys: '5[415136.0.1109686046][415136.0.1109686044][0.0.0][415136.0.1109686045][415136.0.1109686047]'
+  BaseType: Object
+  Description: '瀹㈡埛闇�姹傜殑IDS鍏ㄨ〃鏁版嵁'
+  StructuredName: 'CustomerDemandIDSRows'
+}
diff --git a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
index c09496a..2139612 100644
--- a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
@@ -2,6 +2,7 @@
 #parent: #root
 StaticMethod GenerateData (
   const MacroPlan macroplan,
+  const Archive archive,
   InterfaceDataset interfaceDataset,
   String executor,
   Boolean versionflag
@@ -31,7 +32,7 @@
                                                                  , ReturnMsg                 := 'Success'
                                                                  , Success                   := true
                                                                   );
-    traverse( macroplan, SalesDemand.astype( Forecast ), forecast ){
+    traverse( macroplan, SalesDemand.astype( Forecast ), forecast, forecast.Origin() = 'PPA' ){
       cd                  :=interfaceDataset.CustomerDemandPPAIDS( relnew, Product           := forecast.ProductID()
                                                                    , DemandDate              := forecast.StartDate()
                                                                    , DemandQty               := [Number]forecast.Quantity()
@@ -41,6 +42,26 @@
                                                                    );
       loginfo.CustomerDemandPPAIDS( relinsert, cd );
     }
+    binaryValue           := TemplateManager::GetIDSFullTable( archive, Date::ActualDate().Year() );
+    CustomerDemandIDS::ReadStructure( binaryValue, interfaceDataset );
+    productcolumn         := select( interfaceDataset, CustomerDemandIDS.Column, column, column.Index() = 1 );
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( "dd/MM/yyyy" );
+    traverse( interfaceDataset, CustomerDemandIDS.Row, row ){
+      product             := selectobject( row, Cell, cell, cell.Column() = productcolumn );
+      traverse( row, Cell, cell, cell.Column().Index() > 3 ){
+        period := cnv2.Convert( cell.Column().Name() );
+        cd                  :=interfaceDataset.CustomerDemandPPAIDS( relnew, Product           := product.Value()
+                                                                     , DemandDate              := period
+                                                                     , DemandQty               := [Number]cell.Value()
+                                                                     , VersionName             := macroplan.ScenarioName()
+                                                                     , InterfaceTime           := nowdate
+                                                                     , VersionFlag             := versionflag
+                                                                     );
+        loginfo.CustomerDemandPPAIDS( relinsert, cd );
+      }
+    }
     loginfo.TotalRow( loginfo.CustomerDemandPPAIDS( relsize ) );
   *]
 }
diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
index b146f83..c429569 100644
--- a/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
+++ b/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
@@ -16,7 +16,7 @@
         feedback_o := Translations::MP_LibCal_Event_ValidDatePeriod();
       }
       mindate      := owner.StartOfPlanning().Date();
-      maxdate      := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day() , period.StartDate() );
+      maxdate      := maxobject( owner, Period_MP, period, not period.IsHistorical(), period.StartDate() );
     
       if( startdate.Date() < mindate or endtime.Date() > maxdate.StartDate() ){
         feedback_o := Translations::MP_LibCal_Event_ValidDate();
diff --git a/_Main/BL/Type_PR_PP_Budget/StaticMethod_Download.qbl b/_Main/BL/Type_PR_PP_Budget/StaticMethod_Download.qbl
index de2a8ce..d044fe6 100644
--- a/_Main/BL/Type_PR_PP_Budget/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_PR_PP_Budget/StaticMethod_Download.qbl
@@ -7,7 +7,7 @@
   TextBody:
   [*
     xmlDOMI := XMLDOMImplementation::Create();
-    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Model</name><type>String</type></column><column><name>Model Code</name><type>String</type></column><column><name>Engine</name><type>String</type></column><column><name>浜у湴</name><type>String</type></column><column><name>杞﹀瀷</name><type>String</type></column><column><name>鍙戝姩鏈洪浂浠跺彿</name><type>String</type></column><column><name>鍙戝姩鏈哄洓浣嶇爜</name><type>String</type></column></table>' );
+    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Model</name><type>String</type></column><column><name>Model Code</name><type>String</type></column><column><name>Engine</name><type>String</type></column><column><name>ProducingArea</name><type>String</type></column><column><name>AutoType</name><type>String</type></column><column><name>4-code</name><type>String</type></column><column><name>PartNumber</name><type>String</type></column></table>' );
     
     tableElement              := xmlDOM.GetElementByTagName( "table", 0 );
     
diff --git a/_Main/BL/Type_SixDigitCode/StaticMethod_Download.qbl b/_Main/BL/Type_SixDigitCode/StaticMethod_Download.qbl
index 30d5066..d045360 100644
--- a/_Main/BL/Type_SixDigitCode/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_SixDigitCode/StaticMethod_Download.qbl
@@ -7,7 +7,7 @@
   TextBody:
   [*
     xmlDOMI := XMLDOMImplementation::Create();
-    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>鍏綅鐮�</name><type>String</type></column><column><name>Curve</name><type>String</type></column><column><name>杞﹀瀷</name><type>String</type></column><column><name>浜у湴</name><type>String</type></column><column><name>鍙戝姩鏈�</name><type>String</type></column><column><name>鍔熺巼</name><type>String</type></column><column><name>鍙戝姩鏈洪浂浠跺彿</name><type>String</type></column><column><name>鍙戝姩鏈哄洓浣嶇爜</name><type>String</type></column><column><name>澶囨敞</name><type>String</type></column></table>' );
+    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Code</name><type>String</type></column><column><name>Curve</name><type>String</type></column><column><name>AutoType</name><type>String</type></column><column><name>ProducingArea</name><type>String</type></column><column><name>Engine</name><type>String</type></column><column><name>Power</name><type>String</type></column><column><name>4-code</name><type>String</type></column><column><name>PartNumber</name><type>String</type></column><column><name>Notes</name><type>String</type></column></table>' );
     
     tableElement              := xmlDOM.GetElementByTagName( "table", 0 );
     
diff --git a/_Main/BL/Type_ThreeDigitCode/StaticMethod_Download.qbl b/_Main/BL/Type_ThreeDigitCode/StaticMethod_Download.qbl
index 3300b16..43ff016 100644
--- a/_Main/BL/Type_ThreeDigitCode/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_ThreeDigitCode/StaticMethod_Download.qbl
@@ -7,7 +7,7 @@
   TextBody:
   [*
     xmlDOMI := XMLDOMImplementation::Create();
-    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>涓変綅鐮�</name><type>String</type></column><column><name>杞﹀瀷</name><type>String</type></column></table>' );
+    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Code</name><type>String</type></column><column><name>AutoType</name><type>String</type></column></table>' );
     
     tableElement              := xmlDOM.GetElementByTagName( "table", 0 );
     
diff --git a/_Main/Sys/Repr/Global/CC_EngineRackCell.qrp b/_Main/Sys/Repr/Global/CC_EngineRackCell.qrp
new file mode 100644
index 0000000..5e9255b
--- /dev/null
+++ b/_Main/Sys/Repr/Global/CC_EngineRackCell.qrp
@@ -0,0 +1,56 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation CC_EngineRackCell
+{
+  AttributeRepresentation CleaningCost
+  {
+    AttributeKey: '[413988.0.1476832733]'
+    Synonym: '娓呮礂璐圭敤'
+  }
+  AttributeRepresentation Coefficient
+  {
+    AttributeKey: '[413988.0.1476832766]'
+    Synonym: '绯绘暟'
+  }
+  AttributeRepresentation EstimatedTotalCost
+  {
+    AttributeKey: '[413988.0.1476832743]'
+    Synonym: '棰勮鎬昏垂鐢�'
+  }
+  AttributeRepresentation ExternalRentalWarehouseTransportationCosts
+  {
+    AttributeKey: '[413988.0.1476832710]'
+    Synonym: '澶栫搴撹繍杈撹垂鐢�'
+  }
+  AttributeRepresentation NumberOfEmptyShelves
+  {
+    AttributeKey: '[413988.0.1476832677]'
+    Synonym: '绌烘枡鏋舵暟閲�'
+  }
+  AttributeRepresentation OutboundExpensesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1476832700]'
+    Synonym: '澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation RentalWarehouseStorageFees
+  {
+    AttributeKey: '[413988.0.1476832723]'
+    Synonym: '澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation StorageFeesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1476832690]'
+    Synonym: '澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation TotalCost
+  {
+    AttributeKey: '[413988.0.1476832756]'
+    Synonym: '鎬昏垂鐢�'
+  }
+  AttributeRepresentation TotalQuantityOfMaterialRacks
+  {
+    AttributeKey: '[413988.0.1476832664]'
+    Synonym: '鏂欐灦鎬绘暟閲�'
+  }
+  RelationRepresentation CC_EngineRackColumn { RelationKey: '[413988.0.1476832593]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/DL_EngineRackCell.qrp b/_Main/Sys/Repr/Global/DL_EngineRackCell.qrp
new file mode 100644
index 0000000..1ee56ec
--- /dev/null
+++ b/_Main/Sys/Repr/Global/DL_EngineRackCell.qrp
@@ -0,0 +1,81 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation DL_EngineRackCell
+{
+  AttributeRepresentation CCLineHaulCost
+  {
+    AttributeKey: '[413988.0.1488160126]'
+    Synonym: 'CC闀块�旇繍杈撹垂鐢�'
+  }
+  AttributeRepresentation CCOutboundExpensesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1488160087]'
+    Synonym: 'CC澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation CCRentalWarehouseStorageFees
+  {
+    AttributeKey: '[413988.0.1488160084]'
+    Synonym: 'CC澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation CCShortDistanceTransportationCosts
+  {
+    AttributeKey: '[413988.0.1488160139]'
+    Synonym: 'CC鐭�旇繍杈撹垂鐢�'
+  }
+  AttributeRepresentation CCStorageFeesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1488160081]'
+    Synonym: 'CC澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation CleaningCost
+  {
+    AttributeKey: '[413988.0.1488160069]'
+    Synonym: '娓呮礂璐圭敤'
+  }
+  AttributeRepresentation Coefficient
+  {
+    AttributeKey: '[413988.0.1488160075]'
+    Synonym: '绯绘暟'
+  }
+  AttributeRepresentation DLExternalRentalWarehouseTransportationCosts
+  {
+    AttributeKey: '[413988.0.1488160119]'
+    Synonym: 'DL澶栫搴撹繍杈撹垂鐢�'
+  }
+  AttributeRepresentation DLOutboundExpensesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1488160106]'
+    Synonym: 'DL澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation DLRentalWarehouseStorageFees
+  {
+    AttributeKey: '[413988.0.1488160103]'
+    Synonym: '澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation DLStorageFeesForRentedWarehouses
+  {
+    AttributeKey: '[413988.0.1488160100]'
+    Synonym: 'DL澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation EstimatedTotalCost
+  {
+    AttributeKey: '[413988.0.1488160066]'
+    Synonym: '棰勮鎬昏垂鐢�'
+  }
+  AttributeRepresentation NumberOfEmptyShelves
+  {
+    AttributeKey: '[413988.0.1488160058]'
+    Synonym: '绌烘枡鏋舵暟閲�'
+  }
+  AttributeRepresentation TotalCost
+  {
+    AttributeKey: '[413988.0.1488160072]'
+    Synonym: '鎬昏垂鐢�'
+  }
+  AttributeRepresentation TotalQuantityOfMaterialRacks
+  {
+    AttributeKey: '[413988.0.1488160062]'
+    Synonym: '鏂欐灦鎬绘暟閲�'
+  }
+  RelationRepresentation DL_EngineRackColumn { RelationKey: '[413988.0.1488132648]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def
index 30c6294..ba77e78 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgRequirementPreprocessing.def
@@ -45,6 +45,8 @@
           Properties:
           [
             DataType: 'ArchiveExecutionStatus'
+            FilterArguments: 'userName:QLibMacroPlannerWebUI::ApplicationMacroPlanner.ActionBarMacroPlanner.dhUserName'
+            FixedFilter: 'object.Filter( userName )'
             Source: 'ArchiveExecutionStatus'
             Taborder: 0
             Transformation: 'RequirementImportExecutionStatus'
@@ -67,6 +69,16 @@
         Taborder: 2
       ]
     }
+    Component dhUserName
+    {
+      #keys: '[413988.0.1522010283]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 4
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmEngineMatching.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmEngineMatching.def
index d0da2fb..5cb0156 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmEngineMatching.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmEngineMatching.def
@@ -24,7 +24,7 @@
       [
         Image: 'KEYBOARD_KEY_6'
         Taborder: 1
-        Title: '6-digit code'
+        Title: '6-code'
       ]
     }
     Component m3DigitCode
@@ -35,7 +35,7 @@
       [
         Image: 'KEYBOARD_KEY_3'
         Taborder: 2
-        Title: '3-digit code'
+        Title: '3-code'
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_deRequirementImportExecuti.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_deRequirementImportExecuti.def
index d6ab223..e74dcbd 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_deRequirementImportExecuti.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_deRequirementImportExecuti.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      this.FixedFilter( "object.Filter( '" + ApplicationMacroPlanner.GetUserName() + "' )" );
+      //this.FixedFilter( "object.Filter( '" + ApplicationMacroPlanner.GetUserName() + "' )" );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhUserName_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhUserName_OnCreated.def
new file mode 100644
index 0000000..3c8a18f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhUserName_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgRequirementPreprocessing/dhUserName
+Response OnCreated () id:Response_MacroPlanner_abgRequirementPreprocessing_dhUserName_OnCreated
+{
+  #keys: '[413988.0.1519400953]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      this.Data( ApplicationMacroPlanner.GetUserName() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form989/_ROOT_Component_FormThreeDigitCode\043989.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form989/_ROOT_Component_FormThreeDigitCode\043989.def"
index 505681f..2406162 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form989/_ROOT_Component_FormThreeDigitCode\043989.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form989/_ROOT_Component_FormThreeDigitCode\043989.def"
@@ -13,6 +13,6 @@
   Properties:
   [
     Image: 'TABLE'
-    Title: 'ThreeDigitCode'
+    Title: '3-code'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Component_List531.def b/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Component_List531.def
index 39fe6c3..04a17bc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Component_List531.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Component_List531.def
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Model","title":"Model","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Model"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModelCode","title":"ModelCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModelCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Engine","title":"Engine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Engine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProducingArea","title":"ProducingArea","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProducingArea"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VehicleModel","title":"AutoType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VehicleModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EnginePartNumber","title":"EngineNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EnginePartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineFourDigitCode","title":"EngineFourDigitCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineFourDigitCode"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Model","title":"Model","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Model"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModelCode","title":"ModelCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModelCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Engine","title":"Engine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Engine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProducingArea","title":"ProducingArea","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProducingArea"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VehicleModel","title":"AutoType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VehicleModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EnginePartNumber","title":"4-code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EnginePartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineFourDigitCode","title":"PartNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineFourDigitCode"}}]'
         ContextMenu: 'listContextMenu852'
         Taborder: 2
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Component_List531\043836.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Component_List531\043836.def"
index 86f8a26..1edd50d 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Component_List531\043836.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Component_List531\043836.def"
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Code","title":"Code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Code"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Curve","title":"Curve","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Curve"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VehicleModel","title":"AutoType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VehicleModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProducingArea","title":"ProducingArea","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProducingArea"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Engine","title":"Engine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Engine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Power","title":"Power","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Power"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EnginePartNumber","title":"EngineNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EnginePartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineFourDigitCode","title":"EngineFourDigitCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineFourDigitCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Remarks","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Remarks"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Code","title":"Code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Code"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Curve","title":"Curve","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Curve"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VehicleModel","title":"AutoType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VehicleModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProducingArea","title":"ProducingArea","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProducingArea"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Engine","title":"Engine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Engine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Power","title":"Power","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Power"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EnginePartNumber","title":"4-code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EnginePartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineFourDigitCode","title":"PartNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineFourDigitCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Remarks","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Remarks"}}]'
         ContextMenu: 'listContextMenu852'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/_ROOT_Component_FormSixDigitCode.def b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/_ROOT_Component_FormSixDigitCode.def
index 598f24d..c8c0122 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/_ROOT_Component_FormSixDigitCode.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/_ROOT_Component_FormSixDigitCode.def
@@ -13,6 +13,6 @@
   Properties:
   [
     Image: 'TABLE'
-    Title: 'SixDigitCode'
+    Title: '6-code'
   ]
 }
diff --git a/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx b/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
index 47f6222..15643e7 100644
--- a/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
+++ b/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
Binary files differ

--
Gitblit v1.9.3