From 108852b16d72a940d1ae5f335b904dd9e5df9bd8 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期四, 24 十月 2024 22:20:27 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def | 14
_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl | 8
_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl | 7
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl | 24
_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl | 7
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Import.qbl | 37 +
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def | 10
_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def | 11
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl | 6
_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl | 13
_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def | 22
_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl | 10
_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240#88.def | 97 ++
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent#338.def | 14
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def | 45 +
_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl | 7
_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl | 23
_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def | 45 +
_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def | 48 +
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def | 97 ++
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def | 22
_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl | 7
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Import.qbl | 37 +
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def | 10
_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl | 8
_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def | 18
_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl | 7
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def | 22
_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl | 7
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl | 6
_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl | 13
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl | 24
_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def | 14
_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl | 23
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl | 23
_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl | 10
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl | 6
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def | 45 +
_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def | 18
_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl | 23
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Import.qbl | 37 +
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl | 61 +
_Main/Sys/Repr/Global/MaterialRackColumn.qrp | 11
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def | 10
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl | 24
_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl | 23
_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl | 10
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl | 61 +
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816#1.def | 10
_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl | 7
_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl | 7
_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl | 8
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def | 97 ++
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw | 212 ++++++
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def | 23
_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def | 10
_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl | 23
_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader#791.def | 48 +
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def | 48 +
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl | 23
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl | 61 +
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl | 23
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl | 8
84 files changed, 1,993 insertions(+), 0 deletions(-)
diff --git a/_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl b/_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl
new file mode 100644
index 0000000..9507153
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn
+{
+ #keys: '1[413988.1.14566916]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.1.14566918][413988.1.14566917][413988.1.14566919]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackColumn
+ {
+ #keys: '3[413988.1.14566921][413988.1.14566920][413988.1.14566922]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl
new file mode 100644
index 0000000..9a0561a
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_MaterialRackColumn
+{
+ #keys: '1[413988.1.14566935]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackCustomCell
+ {
+ #keys: '3[413988.1.14566937][413988.1.14566936][413988.1.14566938]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackColumn
+ {
+ #keys: '3[413988.1.14566940][413988.1.14566939][413988.1.14566941]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackCustomCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl
new file mode 100644
index 0000000..a40f8ea
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportionCell_MaterialRackColumn
+{
+ #keys: '1[413988.1.14566948]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackProportionCell
+ {
+ #keys: '3[413988.1.14566950][413988.1.14566949][413988.1.14566951]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackColumn
+ {
+ #keys: '3[413988.1.14566953][413988.1.14566952][413988.1.14566954]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackProportionCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl
new file mode 100644
index 0000000..45b09c0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_MaterialRackColumn
+{
+ #keys: '1[413988.1.14566964]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackTotalCell
+ {
+ #keys: '3[413988.1.14566966][413988.1.14566965][413988.1.14566967]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackColumn
+ {
+ #keys: '3[413988.1.14566969][413988.1.14566968][413988.1.14566970]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackTotalCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl b/_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl
new file mode 100644
index 0000000..4d9dae2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow
+{
+ #keys: '1[413988.1.14567062]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.1.14567064][413988.1.14567063][413988.1.14567065]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackCustomRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackCustomRow
+ {
+ #keys: '3[413988.1.14567067][413988.1.14567066][413988.1.14567068]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl b/_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl
new file mode 100644
index 0000000..61b0c10
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell_MaterialRackCustomRow
+{
+ #keys: '1[413988.1.14567075]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackCustomCell
+ {
+ #keys: '3[413988.1.14567077][413988.1.14567076][413988.1.14567078]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackCustomRow
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide MaterialRackCustomRow
+ {
+ #keys: '3[413988.1.14567080][413988.1.14567079][413988.1.14567081]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackCustomCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl b/_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl
new file mode 100644
index 0000000..5eeb6d3
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportionRow
+{
+ #keys: '1[413988.1.14566990]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.1.14566992][413988.1.14566991][413988.1.14566993]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackProportionRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackProportionRow
+ {
+ #keys: '3[413988.1.14566995][413988.1.14566994][413988.1.14566996]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl b/_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl
new file mode 100644
index 0000000..0998926
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackProportionCell_MaterialRackProportionRow
+{
+ #keys: '1[413988.1.14567003]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackProportionCell
+ {
+ #keys: '3[413988.1.14567005][413988.1.14567004][413988.1.14567006]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackProportionRow
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide MaterialRackProportionRow
+ {
+ #keys: '3[413988.1.14567008][413988.1.14567007][413988.1.14567009]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackProportionCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl b/_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl
new file mode 100644
index 0000000..32799ec
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow
+{
+ #keys: '1[413988.1.14566875]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.1.14566877][413988.1.14566876][413988.1.14566878]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackTotalRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MaterialRackTotalRow
+ {
+ #keys: '3[413988.1.14566880][413988.1.14566879][413988.1.14566881]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl b/_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl
new file mode 100644
index 0000000..42fbee0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_MaterialRackTotalRow
+{
+ #keys: '1[413988.1.14566888]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MaterialRackTotalCell
+ {
+ #keys: '3[413988.1.14566890][413988.1.14566889][413988.1.14566891]'
+ Cardinality: '1toN'
+ ObjectDefinition: MaterialRackTotalRow
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide MaterialRackTotalRow
+ {
+ #keys: '3[413988.1.14566893][413988.1.14566892][413988.1.14566894]'
+ Cardinality: '0to1'
+ ObjectDefinition: MaterialRackTotalCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl b/_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..1364c27
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[413988.1.14567048][413988.1.14567047][413988.1.14567049]'
+ Description: '鏁伴噺'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl
new file mode 100644
index 0000000..7626e47
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateDate (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ genrations := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
+ mqbmlbs := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
+ traverse ( genrations, Elements, g ) {
+ traverse ( mqbmlbs, Elements, m ) {
+ mrcr := select( macroPlan, MaterialRackCustomRow, tempMRCR, tempMRCR.Generation() = g and tempMRCR.MLB_MQB() = m );
+ if ( isnull( mrcr ) ) {
+ mrcr := macroPlan.MaterialRackCustomRow( relnew, Generation := g, MLB_MQB := m );
+ traverse ( macroPlan, MaterialRackColumn, mrc ) {
+ cell := mrcr.MaterialRackCustomCell( relnew, Quantity := 0 );
+ cell.MaterialRackColumn( relset, mrc );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl
new file mode 100644
index 0000000..94c5b51
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ // 绗竴鍒楋紙鍚嶇О锛�
+ mrcrs := selectsortedset( macroPlan, MaterialRackCustomRow, tempMRCR, true, tempMRCR.Name() );
+ firstColumn := xmlDOM.CreateElement( "column" );
+ firstName := xmlDOM.CreateElement( "name" );
+ firstType := xmlDOM.CreateElement( "type" );
+ firstName.TextContent( "*" );
+ firstType.TextContent( "String" );
+ firstColumn.AppendChild( firstName );
+ firstColumn.AppendChild( firstType );
+ traverse ( mrcrs, Elements, mrcr ) {
+ firstCell := xmlDOM.CreateElement( "cell" );
+ firstCell.SetAttribute( "value", mrcr.Name() );
+ firstColumn.AppendChild( firstCell );
+ }
+ tableElement.AppendChild( firstColumn );
+
+ // 鏃堕棿鍒�
+ mrcs := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
+ traverse ( mrcs, Elements, mrc ) {
+ cellColumn := xmlDOM.CreateElement( "column" );
+ cellName := xmlDOM.CreateElement( "name" );
+ cellType := xmlDOM.CreateElement( "type" );
+ cellName.TextContent( [String]mrc.Month() );
+ cellType.TextContent( "Real" );
+ cellColumn.AppendChild( cellName );
+ cellColumn.AppendChild( cellType );
+ cells := selectsortedset( mrc, MaterialRackCustomCell, tempMRCCell, true, tempMRCCell.MaterialRackCustomRow().Name() );
+ traverse ( cells, Elements, c ) {
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", [String]c.Quantity() ); // 鏂欐灦鎬绘暟閲�
+ cellColumn.AppendChild( cell );
+ }
+ tableElement.AppendChild( cellColumn );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Import.qbl b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Import.qbl
new file mode 100644
index 0000000..b3fb936
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Import.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+ MacroPlan macroPlan,
+ GeneralExcelImportAndExportDataTable table
+)
+{
+ TextBody:
+ [*
+ generation := "";
+ mqb_mlb := "";
+
+ traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
+ traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
+ // 鍗曞厓鏍煎��
+ cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
+
+ if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
+ generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
+ mqb_mlb := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
+ }
+
+
+ // 鏂欐灦鎬绘暟璁剧疆鍒�
+ mrc := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
+ // 鏂欐灦鎬绘暟璁剧疆琛�
+ mrcr := select( macroPlan, MaterialRackCustomRow, tempMRCR, tempMRCR.Generation() = generation and tempMRCR.MLB_MQB() = mqb_mlb );
+
+ if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrcr ) ) {
+ cell := select( mrcr, MaterialRackCustomCell, tempMRCCell, tempMRCCell.MaterialRackColumn() = mrc );
+
+ cell.Quantity( [Real]cellValue );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl b/_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl
new file mode 100644
index 0000000..8186cd8
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackCustomCell
+{
+ #keys: '5[413988.1.14566859][413988.1.14566857][0.0.0][413988.1.14566858][413988.1.14566860]'
+ BaseType: Object
+ Description: '瀹㈡埛鏂欐灦鏁伴噺鍗曞厓鏍�'
+ StructuredName: 'MaterialRackCustomCells'
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl b/_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl
new file mode 100644
index 0000000..17b674a
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[413988.1.14567052][413988.1.14567051][413988.1.14567053]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl
new file mode 100644
index 0000000..1dbcf99
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MLB_MQB
+{
+ #keys: '3[413988.1.14567058][413988.1.14567057][413988.1.14567059]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl b/_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl
new file mode 100644
index 0000000..3ce0fe6
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[413988.1.14567055][413988.1.14567054][413988.1.14567056]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl
new file mode 100644
index 0000000..b629d82
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MLB_MQB
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl b/_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl
new file mode 100644
index 0000000..64e6dfc
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // lihongji Aug-12-2024 (created)
+
+ value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl b/_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl
new file mode 100644
index 0000000..67c0301
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackCustomRow
+{
+ #keys: '5[413988.1.14566854][413988.1.14566852][0.0.0][413988.1.14566853][413988.1.14566855]'
+ BaseType: Object
+ Description: '瀹㈡埛搴撴枡鏋舵暟閲忚'
+ StructuredName: 'MaterialRackCustomRows'
+}
diff --git a/_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl b/_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..398ad45
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[413988.1.14567042][413988.1.14567041][413988.1.14567043]'
+ Description: '鏁伴噺'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl
new file mode 100644
index 0000000..fc05b40
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateDate (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ genrations := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
+ mqbmlbs := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
+ traverse ( genrations, Elements, g ) {
+ traverse ( mqbmlbs, Elements, m ) {
+ mrpr := select( macroPlan, MaterialRackProportionRow, tempMRPR, tempMRPR.Generation() = g and tempMRPR.MLB_MQB() = m );
+ if ( isnull( mrpr ) ) {
+ mrpr := macroPlan.MaterialRackProportionRow( relnew, Generation := g, MLB_MQB := m );
+ traverse ( macroPlan, MaterialRackColumn, mrc ) {
+ cell := mrpr.MaterialRackProportionCell( relnew, Quantity := 0 );
+ cell.MaterialRackColumn( relset, mrc );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl
new file mode 100644
index 0000000..5e942c1
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ // 绗竴鍒楋紙鍚嶇О锛�
+ mrprs := selectsortedset( macroPlan, MaterialRackProportionRow, tempMRPR, true, tempMRPR.Name() );
+ firstColumn := xmlDOM.CreateElement( "column" );
+ firstName := xmlDOM.CreateElement( "name" );
+ firstType := xmlDOM.CreateElement( "type" );
+ firstName.TextContent( "*" );
+ firstType.TextContent( "String" );
+ firstColumn.AppendChild( firstName );
+ firstColumn.AppendChild( firstType );
+ traverse ( mrprs, Elements, mrpr ) {
+ firstCell := xmlDOM.CreateElement( "cell" );
+ firstCell.SetAttribute( "value", mrpr.Name() );
+ firstColumn.AppendChild( firstCell );
+ }
+ tableElement.AppendChild( firstColumn );
+
+ // 鏃堕棿鍒�
+ mrcs := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
+ traverse ( mrcs, Elements, mrc ) {
+ cellColumn := xmlDOM.CreateElement( "column" );
+ cellName := xmlDOM.CreateElement( "name" );
+ cellType := xmlDOM.CreateElement( "type" );
+ cellName.TextContent( [String]mrc.Month() );
+ cellType.TextContent( "Real" );
+ cellColumn.AppendChild( cellName );
+ cellColumn.AppendChild( cellType );
+ cells := selectsortedset( mrc, MaterialRackProportionCell, tempMRPCell, true, tempMRPCell.MaterialRackProportionRow().Name() );
+ traverse ( cells, Elements, c ) {
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", [String]c.Quantity() ); // 鏂欐灦鎬绘暟閲�
+ cellColumn.AppendChild( cell );
+ }
+ tableElement.AppendChild( cellColumn );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Import.qbl b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Import.qbl
new file mode 100644
index 0000000..3c12b79
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Import.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+ MacroPlan macroPlan,
+ GeneralExcelImportAndExportDataTable table
+)
+{
+ TextBody:
+ [*
+ generation := "";
+ mqb_mlb := "";
+
+ traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
+ traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
+ // 鍗曞厓鏍煎��
+ cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
+
+ if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
+ generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
+ mqb_mlb := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
+ }
+
+
+ // 鏂欐灦鎬绘暟璁剧疆鍒�
+ mrc := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
+ // 鏂欐灦鎬绘暟璁剧疆琛�
+ mrpr := select( macroPlan, MaterialRackProportionRow, tempMRPR, tempMRPR.Generation() = generation and tempMRPR.MLB_MQB() = mqb_mlb );
+
+ if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrpr ) ) {
+ cell := select( mrpr, MaterialRackProportionCell, tempMRPCell, tempMRPCell.MaterialRackColumn() = mrc );
+
+ cell.Quantity( [Real]cellValue );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl b/_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl
new file mode 100644
index 0000000..c6eb6dd
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackProportionCell
+{
+ #keys: '5[413988.1.14566849][413988.1.14566847][0.0.0][413988.1.14566848][413988.1.14566850]'
+ BaseType: Object
+ Description: '鏂欐灦姣斾緥鍗曞厓鏍�'
+ StructuredName: 'MaterialRackProportionCells'
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl b/_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl
new file mode 100644
index 0000000..c686921
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[413988.1.14566983][413988.1.14566982][413988.1.14566984]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl
new file mode 100644
index 0000000..394e013
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MLB_MQB
+{
+ #keys: '3[413988.1.14566986][413988.1.14566985][413988.1.14566987]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl b/_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl
new file mode 100644
index 0000000..fe81535
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[413988.1.14566980][413988.1.14566979][413988.1.14566981]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl
new file mode 100644
index 0000000..b629d82
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MLB_MQB
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl b/_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl
new file mode 100644
index 0000000..64e6dfc
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // lihongji Aug-12-2024 (created)
+
+ value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl b/_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl
new file mode 100644
index 0000000..80f7e68
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackProportionRow
+{
+ #keys: '5[413988.1.14566844][413988.1.14566842][0.0.0][413988.1.14566843][413988.1.14566845]'
+ BaseType: Object
+ Description: '鏂欐灦姣斾緥琛�'
+ StructuredName: 'MaterialRackProportionRows'
+}
diff --git a/_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl b/_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..b81818f
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[413988.1.14567025][413988.1.14567024][413988.1.14567026]'
+ Description: '鏁伴噺'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl
new file mode 100644
index 0000000..74924c3
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateDate (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ genrations := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
+ mqbmlbs := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
+ traverse ( genrations, Elements, g ) {
+ traverse ( mqbmlbs, Elements, m ) {
+ mrtr := select( macroPlan, MaterialRackTotalRow, tempMRTR, tempMRTR.Generation() = g and tempMRTR.MLB_MQB() = m );
+ if ( isnull( mrtr ) ) {
+ mrtr := macroPlan.MaterialRackTotalRow( relnew, Generation := g, MLB_MQB := m );
+ traverse ( macroPlan, MaterialRackColumn, mrc ) {
+ cell := mrtr.MaterialRackTotalCell( relnew, Quantity := 0 );
+ cell.MaterialRackColumn( relset, mrc );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl
new file mode 100644
index 0000000..5ef7a49
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ // 绗竴鍒楋紙鍚嶇О锛�
+ mrtrs := selectsortedset( macroPlan, MaterialRackTotalRow, tempMRTR, true, tempMRTR.Name() );
+ firstColumn := xmlDOM.CreateElement( "column" );
+ firstName := xmlDOM.CreateElement( "name" );
+ firstType := xmlDOM.CreateElement( "type" );
+ firstName.TextContent( "*" );
+ firstType.TextContent( "String" );
+ firstColumn.AppendChild( firstName );
+ firstColumn.AppendChild( firstType );
+ traverse ( mrtrs, Elements, cerr ) {
+ firstCell := xmlDOM.CreateElement( "cell" );
+ firstCell.SetAttribute( "value", cerr.Name() );
+ firstColumn.AppendChild( firstCell );
+ }
+ tableElement.AppendChild( firstColumn );
+
+ // 鏃堕棿鍒�
+ mrcs := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
+ traverse ( mrcs, Elements, mrc ) {
+ cellColumn := xmlDOM.CreateElement( "column" );
+ cellName := xmlDOM.CreateElement( "name" );
+ cellType := xmlDOM.CreateElement( "type" );
+ cellName.TextContent( [String]mrc.Month() );
+ cellType.TextContent( "Real" );
+ cellColumn.AppendChild( cellName );
+ cellColumn.AppendChild( cellType );
+ cells := selectsortedset( mrc, MaterialRackTotalCell, tempMRTCell, true, tempMRTCell.MaterialRackTotalRow().Name() );
+ traverse ( cells, Elements, c ) {
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", [String]c.Quantity() ); // 鏂欐灦鎬绘暟閲�
+ cellColumn.AppendChild( cell );
+ }
+ tableElement.AppendChild( cellColumn );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Import.qbl b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Import.qbl
new file mode 100644
index 0000000..40de0f4
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Import.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+ MacroPlan macroPlan,
+ GeneralExcelImportAndExportDataTable table
+)
+{
+ TextBody:
+ [*
+ generation := "";
+ mqb_mlb := "";
+
+ traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
+ traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
+ // 鍗曞厓鏍煎��
+ cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
+
+ if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
+ generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
+ mqb_mlb := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
+ }
+
+
+ // 鏂欐灦鎬绘暟璁剧疆鍒�
+ mrc := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
+ // 鏂欐灦鎬绘暟璁剧疆琛�
+ mrtr := select( macroPlan, MaterialRackTotalRow, tempMRTR, tempMRTR.Generation() = generation and tempMRTR.MLB_MQB() = mqb_mlb );
+
+ if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrtr ) ) {
+ cell := select( mrtr, MaterialRackTotalCell, tempMRTCell, tempMRTCell.MaterialRackColumn() = mrc );
+
+ cell.Quantity( [Real]cellValue );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl b/_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl
new file mode 100644
index 0000000..0e8dad7
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackTotalCell
+{
+ #keys: '5[413988.1.14566839][413988.1.14566837][0.0.0][413988.1.14566838][413988.1.14566840]'
+ BaseType: Object
+ Description: '鏂欐灦鎬绘暟閲忓崟鍏冩牸'
+ StructuredName: 'MaterialRackTotalCells'
+}
diff --git a/_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl b/_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl
new file mode 100644
index 0000000..a07e657
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Month
+{
+ #keys: '3[413988.1.14031041][413988.1.14031040][413988.1.14031042]'
+ Description: '鏈堜唤'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl b/_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl
new file mode 100644
index 0000000..ee56d74
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[413988.1.14566904][413988.1.14566903][413988.1.14566905]'
+ Description: '寮�濮嬫椂闂�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl b/_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl
new file mode 100644
index 0000000..b781ace
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateDate (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ for ( i := 1; i <= 12; i++ ) {
+ mrc := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = i );
+ if ( isnull( mrc ) ) {
+ macroPlan.MaterialRackColumn( relnew, Month := i );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl b/_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl
new file mode 100644
index 0000000..f4746c2
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackColumn
+{
+ #keys: '5[413988.1.14566826][413988.1.14566824][0.0.0][413988.1.14566825][413988.1.14566827]'
+ BaseType: Object
+ Description: '鏂欐灦鍒�'
+ StructuredName: 'MaterialRackColumns'
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl b/_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl
new file mode 100644
index 0000000..da6b2fa
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[413988.1.14566865][413988.1.14566864][413988.1.14566866]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl
new file mode 100644
index 0000000..9ca20d4
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MLB_MQB
+{
+ #keys: '3[413988.1.14566871][413988.1.14566870][413988.1.14566872]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl b/_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl
new file mode 100644
index 0000000..9a6ba46
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[413988.1.14566868][413988.1.14566867][413988.1.14566869]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl
new file mode 100644
index 0000000..b629d82
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MLB_MQB
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl b/_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl
new file mode 100644
index 0000000..64e6dfc
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // lihongji Aug-12-2024 (created)
+
+ value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl b/_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl
new file mode 100644
index 0000000..63a27ab
--- /dev/null
+++ b/_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MaterialRackTotalRow
+{
+ #keys: '5[413988.1.14566834][413988.1.14566832][0.0.0][413988.1.14566833][413988.1.14566835]'
+ BaseType: Object
+ Description: '鏂欐灦鎬绘暟閲忚'
+ StructuredName: 'MaterialRackTotalRows'
+}
diff --git a/_Main/Sys/Repr/Global/MaterialRackColumn.qrp b/_Main/Sys/Repr/Global/MaterialRackColumn.qrp
new file mode 100644
index 0000000..dc499e1
--- /dev/null
+++ b/_Main/Sys/Repr/Global/MaterialRackColumn.qrp
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation MaterialRackColumn
+{
+ AttributeRepresentation Month
+ {
+ Alignment: 'Right'
+ AttributeKey: '[413988.1.14031040]'
+ }
+ RelationRepresentation MacroPlan { RelationKey: '[413988.1.14566917]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
index e126415..b49fa7a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -62,6 +62,17 @@
Title: '澶ц繛鍙戝姩鏈烘枡鏋舵姤琛�'
]
}
+ Component mMaterialRackTotalSetting
+ {
+ #keys: '[413988.1.16000836]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'WINDOW_GEAR'
+ Taborder: 5
+ Title: '鏂欐灦鎬绘暟閲忚缃�'
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def
new file mode 100644
index 0000000..95d9e00
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: ContextMenuEngineLogisticsCostReport/mMaterialRackTotalSetting
+Response OnClick () id:Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTotalSetting_OnClick
+{
+ #keys: '[413988.1.16000982]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ // 鍒涘缓鏂欐灦璁剧疆鎬绘暟閲忚缃垪
+ MaterialRackColumn::CreateDate( MacroPlan );
+
+ ApplicationScope.ViewManager().ResetUserViewById( "MaterialRackTotalSetting", true );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def
new file mode 100644
index 0000000..20703f7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor240
+{
+ #keys: '[413988.1.14781785]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell567
+ {
+ #keys: '[413988.1.14781786]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor775
+ {
+ #keys: '[413988.1.14781787]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackCustomRow.MaterialRackCustomCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Quantity'
+ Column: 'MaterialRackColumn'
+ Row: 'MaterialRackCustomRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows741
+ {
+ #keys: '[413988.1.14781788]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor571
+ {
+ #keys: '[413988.1.14781789]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackCustomRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Name'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns208
+ {
+ #keys: '[413988.1.14781790]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor294
+ {
+ #keys: '[413988.1.14781791]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Month'
+ SortCriteria: 'Month'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage816
+ #child: matrixeditorContextMenu134
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns208'
+ ContextMenu: 'matrixeditorContextMenu134'
+ Rows: 'MatrixEditorRows741'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def
new file mode 100644
index 0000000..a0012fd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage816
+{
+ #keys: '[413988.1.14781792]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def
new file mode 100644
index 0000000..e9cc0cb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu134
+{
+ #keys: '[413988.1.14781793]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def
new file mode 100644
index 0000000..7c692c4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+ #keys: '[413988.1.14781784]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor240
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def
new file mode 100644
index 0000000..c7268f6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+Component pHeader
+{
+ #keys: '[413988.1.14781717]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bImport
+ {
+ #keys: '[413988.1.14781718]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Label: '瀵煎叆'
+ Taborder: 1
+ ]
+ }
+ Component bExport
+ {
+ #keys: '[413988.1.14781719]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 2
+ ]
+ }
+ Component bGenerate
+ {
+ #keys: '[413988.1.14781720]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '鐢熸垚妯℃澘'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def
new file mode 100644
index 0000000..9f36fbd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bExport
+Response OnClick () id:Response_pHeader_bExport_OnClick
+{
+ #keys: '[413988.1.26522395]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := MaterialRackCustomCell::Export( MacroPlan );
+
+ Application.Download( "鏂欐灦鎬绘暟閲�.xlsx", binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def
new file mode 100644
index 0000000..d3adb79
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bGenerate
+Response OnClick () id:Response_pHeader_bGenerate_OnClick
+{
+ #keys: '[413988.1.26522194]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ MaterialRackCustomCell::CreateDate( MacroPlan );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def
new file mode 100644
index 0000000..a25a929
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#parent: pHeader/bImport
+Response OnClick () id:Response_pHeader_bImport_OnClick
+{
+ #keys: '[413988.1.26522306]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+ Archive::VerifyTheFileName( uploadJson );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+
+ webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
+
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource.ReadStructure();
+
+ selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
+
+ MaterialRackCustomCell::Import( MacroPlan, selection );
+
+ // 鍚庣画鍒犻櫎
+ generalExcelImportAndExportDataSource.Delete();
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def
new file mode 100644
index 0000000..24fa20b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMaterialRackCustom
+{
+ #keys: '[413988.1.14711995]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pContent
+ #child: pHeader
+ ]
+ Properties:
+ [
+ Description: '瀹㈡埛搴撴枡鏋舵暟閲�'
+ Title: '瀹㈡埛搴撴枡鏋舵暟閲�'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240\04388.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240\04388.def"
new file mode 100644
index 0000000..da2028d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240\04388.def"
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor240 id:MatrixEditor240_88
+{
+ #keys: '[413988.1.14780998]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell567
+ {
+ #keys: '[413988.1.14780999]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor775
+ {
+ #keys: '[413988.1.14781000]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackProportionRow.MaterialRackProportionCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Quantity'
+ Column: 'MaterialRackColumn'
+ Row: 'MaterialRackProportionRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows741
+ {
+ #keys: '[413988.1.14781001]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor571
+ {
+ #keys: '[413988.1.14781002]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackProportionRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Name'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns208
+ {
+ #keys: '[413988.1.14781003]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor294
+ {
+ #keys: '[413988.1.14781004]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Month'
+ SortCriteria: 'Month'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage816_1
+ #child: matrixeditorContextMenu134_1
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns208'
+ ContextMenu: 'matrixeditorContextMenu134'
+ Rows: 'MatrixEditorRows741'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816\0431.def"
new file mode 100644
index 0000000..c7cdd60
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage816 id:matrixEditorActionBarPage816_1
+{
+ #keys: '[413988.1.14781005]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134\0431.def"
new file mode 100644
index 0000000..f36c684
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu134 id:matrixeditorContextMenu134_1
+{
+ #keys: '[413988.1.14781006]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent\043338.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent\043338.def"
new file mode 100644
index 0000000..72d8f96
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent\043338.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent id:pContent_338
+{
+ #keys: '[413988.1.14780997]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor240_88
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader\043791.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader\043791.def"
new file mode 100644
index 0000000..547213c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader\043791.def"
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+Component pHeader id:pHeader_791
+{
+ #keys: '[413988.1.16001292]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bImport
+ {
+ #keys: '[413988.1.16001293]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Label: '瀵煎叆'
+ Taborder: 1
+ ]
+ }
+ Component bExport
+ {
+ #keys: '[413988.1.16001294]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 2
+ ]
+ }
+ Component bGenerate
+ {
+ #keys: '[413988.1.16001295]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '鐢熸垚妯℃澘'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def
new file mode 100644
index 0000000..1cc8a31
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader_791/bExport
+Response OnClick () id:Response_pHeader_791_bExport_OnClick
+{
+ #keys: '[413988.1.26481619]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := MaterialRackProportionCell::Export( MacroPlan );
+
+ Application.Download( "鏂欐灦鎬绘暟閲�.xlsx", binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def
new file mode 100644
index 0000000..a85d33f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader_791/bGenerate
+Response OnClick () id:Response_pHeader_791_bGenerate_OnClick
+{
+ #keys: '[413988.1.25920259]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ MaterialRackProportionCell::CreateDate( MacroPlan );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def
new file mode 100644
index 0000000..e9f6e0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#parent: pHeader_791/bImport
+Response OnClick () id:Response_pHeader_791_bImport_OnClick
+{
+ #keys: '[413988.1.24511147]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+ Archive::VerifyTheFileName( uploadJson );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+
+ webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
+
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource.ReadStructure();
+
+ selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
+
+ MaterialRackProportionCell::Import( MacroPlan, selection );
+
+ // 鍚庣画鍒犻櫎
+ generalExcelImportAndExportDataSource.Delete();
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def
new file mode 100644
index 0000000..901d1d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMaterialRackProportion
+{
+ #keys: '[413988.1.14711914]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pContent_338
+ #child: pHeader_791
+ ]
+ Properties:
+ [
+ Description: '绌烘枡鏋舵瘮渚�'
+ Title: '绌烘枡鏋舵瘮渚�'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def
new file mode 100644
index 0000000..f8a1e3a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor240
+{
+ #keys: '[413988.1.15920739]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell567
+ {
+ #keys: '[413988.1.15920740]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor775
+ {
+ #keys: '[413988.1.15920741]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackTotalRow.MaterialRackTotalCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Quantity'
+ Column: 'MaterialRackColumn'
+ Row: 'MaterialRackTotalRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows741
+ {
+ #keys: '[413988.1.15920744]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor571
+ {
+ #keys: '[413988.1.15920745]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackTotalRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Name'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns208
+ {
+ #keys: '[413988.1.15920748]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor294
+ {
+ #keys: '[413988.1.15920749]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'MaterialRackColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Month'
+ SortCriteria: 'Month'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage816
+ #child: matrixeditorContextMenu134
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns208'
+ ContextMenu: 'matrixeditorContextMenu134'
+ Rows: 'MatrixEditorRows741'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def
new file mode 100644
index 0000000..6aaed1f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage816
+{
+ #keys: '[413988.1.15920752]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def
new file mode 100644
index 0000000..7139242
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu134
+{
+ #keys: '[413988.1.15920755]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def
new file mode 100644
index 0000000..e71135f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+ #keys: '[413988.1.14712032]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor240
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def
new file mode 100644
index 0000000..888b498
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+Component pHeader
+{
+ #keys: '[413988.1.14712020]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bImport
+ {
+ #keys: '[413988.1.14712119]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Label: '瀵煎叆'
+ Taborder: 1
+ ]
+ }
+ Component bExport
+ {
+ #keys: '[413988.1.14712131]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 2
+ ]
+ }
+ Component bGenerate
+ {
+ #keys: '[413988.1.14712143]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '鐢熸垚妯℃澘'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def
new file mode 100644
index 0000000..ccc7223
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bExport
+Response OnClick () id:Response_pHeader_bExport_OnClick
+{
+ #keys: '[413988.1.24570285]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := MaterialRackTotalCell::Export( MacroPlan );
+
+ Application.Download( "鏂欐灦鎬绘暟閲�.xlsx", binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def
new file mode 100644
index 0000000..005e8c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bGenerate
+Response OnClick () id:Response_pHeader_bGenerate_OnClick
+{
+ #keys: '[413988.1.25900711]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ MaterialRackTotalCell::CreateDate( MacroPlan );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def
new file mode 100644
index 0000000..6258600
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#parent: pHeader/bImport
+Response OnClick () id:Response_pHeader_bImport_OnClick
+{
+ #keys: '[413988.1.25930512]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+ Archive::VerifyTheFileName( uploadJson );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+
+ webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
+
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource.ReadStructure();
+
+ selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
+
+ MaterialRackTotalCell::Import( MacroPlan, selection );
+
+ // 鍚庣画鍒犻櫎
+ generalExcelImportAndExportDataSource.Delete();
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def
new file mode 100644
index 0000000..33b4bca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMaterialRackTotal
+{
+ #keys: '[413988.1.14711841]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pContent
+ #child: pHeader
+ ]
+ Properties:
+ [
+ Description: '鏂欐灦鎬绘暟閲�'
+ Title: '鏂欐灦鎬绘暟閲�'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw b/_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw
new file mode 100644
index 0000000..fd65a42
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw
@@ -0,0 +1,212 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormMaterialRackTotal
+ {
+ title: 'QMacroPlanner::FormMaterialRackTotal'
+ shown: true
+ componentID: 'QMacroPlanner::FormMaterialRackTotal'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 9
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormMaterialRackTotal_pHeader
+ {
+ sizeRatio: 1
+ }
+ FormMaterialRackTotal_pContent
+ {
+ sizeRatio: 1
+ }
+ FormMaterialRackTotal_MatrixEditor240
+ {
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ gridColor: '#c4c4c4'
+ }
+ }
+ }
+ form_FormMaterialRackProportion
+ {
+ title: 'QMacroPlanner::FormMaterialRackProportion'
+ shown: true
+ componentID: 'QMacroPlanner::FormMaterialRackProportion'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 10
+ rowSpan: 9
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormMaterialRackProportion_pContent
+ {
+ sizeRatio: 1
+ }
+ FormMaterialRackProportion_MatrixEditor240
+ {
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ gridColor: '#c4c4c4'
+ }
+ }
+ }
+ form_FormMaterialRackCustom
+ {
+ title: 'QMacroPlanner::FormMaterialRackCustom'
+ shown: true
+ componentID: 'QMacroPlanner::FormMaterialRackCustom'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 19
+ rowSpan: 9
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components: null
+ }
+ form_FormOptimizerPuzzles
+ {
+ title: 'Optimizer Puzzles'
+ shown: false
+ componentID: 'FormOptimizerPuzzles'
+ layout
+ {
+ mode: 'dockright'
+ index: 0
+ }
+ components
+ {
+ FormOptimizerPuzzles_ListOptimizerPuzzles
+ {
+ }
+ FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 109
+ }
+ column_Description
+ {
+ columnId: 'Description'
+ dataPath: 'Description'
+ dataType: 'string'
+ title: 'Description'
+ index: 2
+ subtotals: ''
+ width: 207
+ }
+ }
+ }
+ }
+ form_FormKPI
+ {
+ title: 'KPI Dashboard'
+ shown: true
+ componentID: 'FormKPI'
+ layout
+ {
+ mode: 'dockright'
+ index: 1
+ }
+ components
+ {
+ FormKPI_PanelKPI
+ {
+ sizeRatio: 1
+ activeChild: 'PanelKPISelection'
+ }
+ FormKPI_PanelKPIDashboard
+ {
+ sizeRatio: 1
+ }
+ FormKPI_PanelKPISelection
+ {
+ sizeRatio: 1
+ }
+ FormKPI_ListKPISelection
+ {
+ QuillViewData
+ {
+ Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+ }
+ }
+ FormKPI_DataSetLevelKPISelection
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 200
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 0
+ image: 'JOYSTICK'
+ description: ''
+ }
+ formatversion: 2
+ id: 'MaterialRackTotalSetting'
+ name: 'MaterialRackTotalSetting'
+ isglobal: false
+ isroot: true
+}
--
Gitblit v1.9.3