From 229b7b06dfccb7054c143c21339388ad7773f022 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期二, 02 七月 2024 10:57:00 +0800
Subject: [PATCH] 库存汇总报表数据结构创建
---
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def | 19
_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl | 23
_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl | 7
_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def | 24
_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl | 22
_Main/BL/Type_ProductInStockingPointInPeriod#228/_ROOT_Type_ProductInStockingPointInPeriod.qbl | 6
_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl | 26
_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl | 8
_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl | 8
_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl | 40 +
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 20
_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def | 23
_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl | 10
_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def | 38 +
_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def | 20
_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def | 24
_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl | 6
_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def | 34 +
_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw | 140 ++++
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def | 98 +++
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl | 53 +
_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl | 13
_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl | 10
_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def | 16
_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl | 13
_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl | 7
_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def | 30
_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl | 7
_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl | 8
_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl | 10
_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl | 6
_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl | 7
_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl | 78 ++
_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def | 24
_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl | 23
_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 20
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl | 13
_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl | 10
_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl | 23
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl | 20
_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def | 24
_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl | 8
_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl | 7
_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl | 6
_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl | 6
_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl | 22
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl | 23
_Main/BL/Type_InventroySummaryRow/Method_Initialize#0.qbl | 15
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl | 20
_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl | 8
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl | 44 +
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 11
_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl | 10
_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def | 14
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def | 24
_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl | 6
_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl | 6
_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl | 23
_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl | 10
_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl | 8
_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def | 20
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl | 23
_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def | 22
/dev/null | 23
_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl | 13
_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl | 23
_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl | 8
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl | 11
103 files changed, 1,841 insertions(+), 23 deletions(-)
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSearch_FinancialSalesSource_FinancialSalesSource_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesSearch_FinancialSalesSource_FinancialSalesSource_Fina.qbl
deleted file mode 100644
index 4bb9678..0000000
--- a/_Main/BL/Relations/Relation_FinancialSalesSearch_FinancialSalesSource_FinancialSalesSource_Fina.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation FinancialSalesSearch_FinancialSalesSource_FinancialSalesSource_FinancialSalesSearch
-{
- #keys: '1[415136.0.857450518]'
- DefaultRelationStrategy
- {
- }
- RelationSide.LeftSide FinancialSalesSource
- {
- #keys: '3[415136.0.857450520][415136.0.857450519][415136.0.857450521]'
- Cardinality: '0to1'
- ObjectDefinition: FinancialSalesSearch
- OwningSide: 'Reference'
- }
- RelationSide.RightSide FinancialSalesSearch
- {
- #keys: '3[415136.0.857450523][415136.0.857450522][415136.0.857450524]'
- Cardinality: '0to1'
- ObjectDefinition: FinancialSalesSource
- OwningSide: 'Owned'
- }
-}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
new file mode 100644
index 0000000..e037345
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_FinancialSalesSource
+{
+ #keys: '1[415136.0.865304861]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialSalesSearch
+ {
+ #keys: '3[415136.0.865304863][415136.0.865304862][415136.0.865304864]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesSource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialSalesSource
+ {
+ #keys: '3[415136.0.865304866][415136.0.865304865][415136.0.865304867]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesSearch
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl b/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl
new file mode 100644
index 0000000..b73e32a
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStockingPointInPeriod_InventorySummaryCell
+{
+ #keys: '1[415136.0.865101866]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ProductInStockingPointInPeriod
+ {
+ #keys: '3[415136.0.865101868][415136.0.865101867][415136.0.865101869]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865101871][415136.0.865101870][415136.0.865101872]'
+ Cardinality: '0to1'
+ ObjectDefinition: ProductInStockingPointInPeriod
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl b/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl
new file mode 100644
index 0000000..c042c63
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_InventorySummaryColumn
+{
+ #keys: '1[415136.0.865304752]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.865304771][415136.0.865304765][415136.0.865304772][415136.0.865304766][415136.0.865304773][415136.0.865304767][415136.0.865304774][415136.0.865304768][415136.0.865304775][415136.0.865304769][415136.0.865304776][415136.0.865304770]'
+ SequenceElementSuffix: 'CellInColumn'
+ SequenceSuffix: 'CellInColumn'
+ }
+ RelationSide.LeftSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865304754][415136.0.865304753][415136.0.865304755]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryColumn
+ {
+ #keys: '3[415136.0.865304757][415136.0.865304756][415136.0.865304758]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl b/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl
new file mode 100644
index 0000000..e1575bb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryReport_InventorySummaryColumn_InventorySummaryColumn_InventorySummaryReport
+{
+ #keys: '1[415136.0.865304722]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.865304741][415136.0.865304735][415136.0.865304742][415136.0.865304736][415136.0.865304743][415136.0.865304737][415136.0.865304744][415136.0.865304738][415136.0.865304745][415136.0.865304739][415136.0.865304746][415136.0.865304740]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide InventorySummaryColumn
+ {
+ #keys: '3[415136.0.865304724][415136.0.865304723][415136.0.865304725]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304727][415136.0.865304726][415136.0.865304728]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl b/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl
new file mode 100644
index 0000000..b0030b0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_InventorySummaryReport
+{
+ #keys: '1[415136.0.865304709]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventroySummaryRow
+ {
+ #keys: '3[415136.0.865304711][415136.0.865304710][415136.0.865304712]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304714][415136.0.865304713][415136.0.865304715]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventroySummaryRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl b/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
new file mode 100644
index 0000000..2fd19a0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySearch_InventorySummarySource_InventorySummarySource_InventorySummarySearch
+{
+ #keys: '1[415136.0.865304882]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304884][415136.0.865304883][415136.0.865304885]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySearch
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummarySearch
+ {
+ #keys: '3[415136.0.865304887][415136.0.865304886][415136.0.865304888]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl b/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl
new file mode 100644
index 0000000..2b2803e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySource_InventorySummaryReport_InventorySummaryReport_InventorySummarySource
+{
+ #keys: '1[415136.0.865304908]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304910][415136.0.865304909][415136.0.865304911]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304913][415136.0.865304912][415136.0.865304914]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl b/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl
new file mode 100644
index 0000000..ebfbb87
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource
+{
+ #keys: '1[415136.0.865304895]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.865304897][415136.0.865304896][415136.0.865304898]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304900][415136.0.865304899][415136.0.865304901]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl b/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl
new file mode 100644
index 0000000..eeac640
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_InventroySummaryRow
+{
+ #keys: '1[415136.0.865304782]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865304784][415136.0.865304783][415136.0.865304785]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventroySummaryRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventroySummaryRow
+ {
+ #keys: '3[415136.0.865304787][415136.0.865304786][415136.0.865304788]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl
new file mode 100644
index 0000000..cc4cf47
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AverageInventory
+{
+ #keys: '3[415136.0.865305024][415136.0.865305023][415136.0.865305025]'
+ Description: '璇勪环搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl
new file mode 100644
index 0000000..f51b0bc
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndingInventory
+{
+ #keys: '3[415136.0.865304924][415136.0.865304923][415136.0.865304925]'
+ Description: '鏈熸湯搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl
new file mode 100644
index 0000000..341b8e7
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaximumInventory
+{
+ #keys: '3[415136.0.865304944][415136.0.865304943][415136.0.865304945]'
+ Description: '鏈�澶у簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl
new file mode 100644
index 0000000..d686c7f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MinimumInventory
+{
+ #keys: '3[415136.0.865304934][415136.0.865304933][415136.0.865304935]'
+ Description: '鏈�灏忓簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl
new file mode 100644
index 0000000..976add9
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcAverageInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := average( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.AverageInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl
new file mode 100644
index 0000000..7fcd1da
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEndingInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := maxobject( this, ProductInStockingPointInPeriod, pispip, pispip.Start() );
+
+ this.EndingInventory( value.PlannedInventoryLevelEnd() );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl
new file mode 100644
index 0000000..db9ad44
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcMaximumInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := max( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.MaximumInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl
new file mode 100644
index 0000000..e730b7c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcMinimumInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := min( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.MinimumInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl b/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl
new file mode 100644
index 0000000..153a82e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryCell
+{
+ #keys: '5[415136.0.865304684][415136.0.865304682][0.0.0][415136.0.865304683][415136.0.865304685]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'InventorySummaryCells'
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl
new file mode 100644
index 0000000..2674d93
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Category
+{
+ #keys: '3[415136.0.865101993][415136.0.865101992][415136.0.865101994]'
+ Description: 'day;week;month'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..851f48d
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.865304670][415136.0.865304669][415136.0.865304671]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..0503193
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304673][415136.0.865304672][415136.0.865304674]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..5c8b136
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.865304676][415136.0.865304675][415136.0.865304677]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl b/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..56bbf20
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-21-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl b/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl
new file mode 100644
index 0000000..8025104
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryColumn
+{
+ #keys: '5[415136.0.865304667][415136.0.865304665][0.0.0][415136.0.865304666][415136.0.865304668]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�诲垪'
+ StructuredName: 'InventorySummaryColumns'
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl
new file mode 100644
index 0000000..6c9df63
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.865304629][415136.0.865304628][415136.0.865304630]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..43d060a
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.865304635][415136.0.865304634][415136.0.865304636]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl
new file mode 100644
index 0000000..5951a3f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304638][415136.0.865304637][415136.0.865304639]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl b/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl
new file mode 100644
index 0000000..ec171dc
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.InventorySummaryColumn( relflush );
+ this.InventroySummaryRow( relflush );
+
+ this.GenerateColumn( this.InventorySummarySource().MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
new file mode 100644
index 0000000..8fbefce
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ InventorySummarySearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, InventorySummarySource.InventorySummaryReport, report, not report.IsShow() );
+ allunit := '<All>';
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear();
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+ sumrow := this.InventroySummaryRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.InventroySummaryRow( relsize ) );
+ traverse( table, InventroySummaryRow, row, row.Unit() = search.Unit() ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.InventroySummaryRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
+
+ traverse( row, InventorySummaryCell, cell ){
+ // column := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
+ //
+ // sumcell := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
+ // if( isnull( sumcell ) ){
+ // sumcell := column.InventorySummaryCell( relnew, Value := '0' );
+ // sumrow.InventorySummaryCell( relinsert, sumcell );
+ // }
+ //
+ // showcell := column.InventorySummaryCell( relnew, Value := cell.Value() );
+ // showrow.InventorySummaryCell( relinsert, showcell );
+ // value := [Real]cell.Value() + [Real]sumcell.Value();
+ // sumcell.Value( [String]value );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..bce7074
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
new file mode 100644
index 0000000..c11af49
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String unit,
+ String product,
+ DateTime startdate,
+ DateTime enddate
+) as InventroySummaryRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ row := selectobject( this, InventroySummaryRow, row, row.Name() = product and row.Unit() = unit );
+
+ if( isnull( row ) ){
+ row := this.InventroySummaryRow( relnew, Name := product, Unit := unit );
+ //鍒濆鍖栧崟鍏冩牸
+ row.InitializeCell( this, startdate, enddate );
+ }
+
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..518f4c6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultAllUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '<All>';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..6b92234
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultCCUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬';
+ //return 'China';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..f21ff7d
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultDLUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶ц繛';
+ //return 'Foregin';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..fba1410
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultName () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return 'Inventory summary';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl b/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl
new file mode 100644
index 0000000..d260b23
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryReport
+{
+ #keys: '5[415136.0.865304626][415136.0.865304624][0.0.0][415136.0.865304625][415136.0.865304627]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛�'
+ StructuredName: 'InventorySummaryReports'
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl
new file mode 100644
index 0000000..795b6e6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Category
+{
+ #keys: '3[415136.0.865101964][415136.0.865101963][415136.0.865101965]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl
new file mode 100644
index 0000000..a0f273b
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+ #keys: '3[415136.0.865304981][415136.0.865304980][415136.0.865304982]'
+ Description: '鎺ュ彈鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl
new file mode 100644
index 0000000..f1d7453
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[415136.0.865304596][415136.0.865304595][415136.0.865304597]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl
new file mode 100644
index 0000000..c60b1d6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MqbMlb
+{
+ #keys: '3[415136.0.865304599][415136.0.865304598][415136.0.865304600]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl
new file mode 100644
index 0000000..e993cb3
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Power
+{
+ #keys: '3[415136.0.865304602][415136.0.865304601][415136.0.865304603]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl
new file mode 100644
index 0000000..1f97228
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.865101837][415136.0.865101836][415136.0.865101838]'
+ Description: '寮�濮嬫棩鏈�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl
new file mode 100644
index 0000000..b265b0c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.865304605][415136.0.865304604][415136.0.865304606]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl
new file mode 100644
index 0000000..78982c5
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MqbMlb
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl
new file mode 100644
index 0000000..4922731
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Power
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl b/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl
new file mode 100644
index 0000000..56a668e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummarySearch
+{
+ #keys: '5[415136.0.865304593][415136.0.865304591][0.0.0][415136.0.865304592][415136.0.865304594]'
+ BaseType: Object
+ Description: '鏌ヨ绫�'
+ StructuredName: 'InventorySummarySearchs'
+}
diff --git a/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl b/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl
new file mode 100644
index 0000000..77f645f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.865304968][415136.0.865304967][415136.0.865304969]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl b/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl
new file mode 100644
index 0000000..56307c5
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304835][415136.0.865304834][415136.0.865304836]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
new file mode 100644
index 0000000..6fe5b7f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
@@ -0,0 +1,78 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //Product
+ productcolumnelement := xmlDOM.CreateElement( "column" );
+ productnameelement := xmlDOM.CreateElement( "name" );
+ producttypeelement := xmlDOM.CreateElement( "type" );
+ productnameelement.TextContent( 'Product' );
+ producttypeelement.TextContent( "String" );
+ productcolumnelement.AppendChild( productnameelement );
+ productcolumnelement.AppendChild( producttypeelement );
+ //Unit
+ unitcolumnelement := xmlDOM.CreateElement( "column" );
+ unitnameelement := xmlDOM.CreateElement( "name" );
+ unittypeelement := xmlDOM.CreateElement( "type" );
+ unitnameelement.TextContent( 'Unit' );
+ unittypeelement.TextContent( "String" );
+ unitcolumnelement.AppendChild( unitnameelement );
+ unitcolumnelement.AppendChild( unittypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( unitcolumnelement );
+ traverse ( table, FinancialSalesColumn, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ nameelement.TextContent( column.Name() );
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
+
+ cells := selectsortedset( column, FinancialSalesCell, cell, cell.FinancialSalesRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.FinancialSalesRow();
+ //Product
+ productcellElement := xmlDOM.CreateElement( "cell" );
+ productcellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement );
+ //Unit
+ unitcellElement := xmlDOM.CreateElement( "cell" );
+ unitcellElement.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement );
+ }
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", c.Value() );
+ columnelement.AppendChild( cellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl
new file mode 100644
index 0000000..a47c88a
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod DownloadTemplate (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Product</name><type>String</type></column><column><name>Unit</name><type>String</type></column></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ startofyear := macroPlan.StartOfPlanning().StartOfYear();
+ startofnextyear := macroPlan.StartOfPlanning().StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ columnElement := xmlDOM.CreateElement( "column" );
+ nameElement := xmlDOM.CreateElement( "name" );
+ typeElement := xmlDOM.CreateElement( "type" );
+ nameElement.TextContent( start.Format( "M2/D2/Y" ) );
+ typeElement.TextContent( "String" );
+ columnElement.AppendChild( nameElement );
+ columnElement.AppendChild( typeElement );
+ tableElement.AppendChild( columnElement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..6ed8f07
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ Description: '鍒濆鍖�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ owner.InventorySummarySource( relflush );
+ products := construct( Product_MPs );
+ allunit := InventorySummaryReport::GetDefaultAllUnit();
+ ccunit := InventorySummaryReport::GetDefaultCCUnit();
+ dlunit := InventorySummaryReport::GetDefaultDLUnit();
+
+ source := owner.InventorySummarySource( relnew, ID := InventorySummaryReport::GetDefaultName(), Name := InventorySummaryReport::GetDefaultName() );
+ table := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
+ showtable := source.InventorySummaryReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ search := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+
+ table.GenerateColumn( owner );
+
+ //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴撶殑鎵�鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+ traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
+ unit := pisp.StockingPoint_MP().UnitID();
+ product := pisp.Product_MP();
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning
+ and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ){
+ periodtime := pispip.Start().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
+ ccrow := table.GetRow( ccunit, product.ID(), startofyear, startofnextyear );
+ ccrow.Initialize( column, pispip );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allunit, product.ID(), startofyear, startofnextyear );
+ allrow.Initialize( column, pispip );
+ }
+ }
+
+ rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
+ i := 0;
+ traverse( rows, Elements, e ){
+ e.RowNr( i );
+ i := i + 1;
+ }
+ showtable.Generate( search, products );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl
new file mode 100644
index 0000000..df950f0
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Upload (
+ MacroPlan owner,
+ BinaryValue binaryValue,
+ String filePath
+) as FinancialSalesSource
+{
+ TextBody:
+ [*
+ fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
+
+ source := owner.FinancialSalesSource( relnew, FileBinaryValue := binaryValue,
+ Name := fileName,
+ IsXLSX := fileName.EndsWith( "xlsx" ),
+ IsImport := true,
+ UploadDateTime := DateTime::ActualTime().Format( "Y-M2-D2 H:m:s" ),
+ UploadUser := guard( QuintiqUser::CurrentUser().Username(), "" ) );
+
+ return source;
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl b/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl
new file mode 100644
index 0000000..3ba4e03
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummarySource
+{
+ #keys: '5[415136.0.865304823][415136.0.865304821][0.0.0][415136.0.865304822][415136.0.865304824]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛�'
+ StructuredName: 'InventorySummarySources'
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl
new file mode 100644
index 0000000..b941a62
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304652][415136.0.865304651][415136.0.865304653]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..05992ac
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.865304655][415136.0.865304654][415136.0.865304656]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl
new file mode 100644
index 0000000..066f3de
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.865304658][415136.0.865304657][415136.0.865304659]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl b/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl
new file mode 100644
index 0000000..8c62e9b
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filter (
+ FinancialProductionSearch search,
+ Product_MPs products
+) declarative remote as Boolean
+{
+ Description: '杩囨护'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ allunit := '<All>';
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+
+ productid := construct( Strings );
+ productid.Add( this.Name() );
+
+ return productids.ContainsAll( productid ) and this.Unit() = search.Unit();
+ *]
+}
diff --git "a/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl" "b/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl"
new file mode 100644
index 0000000..ec79cf4
--- /dev/null
+++ "b/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ InventorySummaryColumn column,
+ ProductInStockingPointInPeriod pispip
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, InventorySummaryCell, cell, cell.InventorySummaryColumn() = column );
+
+ cell.ProductInStockingPointInPeriod( relinsert, pispip );
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl b/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
new file mode 100644
index 0000000..fbffb32
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ InventorySummaryColumn column,
+ String unit
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := column.InventorySummaryCell( relnew );
+
+ this.InventorySummaryCell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl b/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
new file mode 100644
index 0000000..a619b37
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ InventorySummaryReport table,
+ DateTime startdate,
+ DateTime enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ for( start := startdate; start < enddate; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
+
+ this.Initialize( column, this.Unit() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..dc906f4
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl b/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl
new file mode 100644
index 0000000..746a1ea
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventroySummaryRow
+{
+ #keys: '5[415136.0.865304646][415136.0.865304644][0.0.0][415136.0.865304645][415136.0.865304647]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�昏'
+ StructuredName: 'InventroySummaryRows'
+}
diff --git "a/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl" "b/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl"
new file mode 100644
index 0000000..48d9cd9
--- /dev/null
+++ "b/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl"
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ProductInStockingPointInPeriod #extension
+{
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index cfc3cee..68f5a8f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -27,6 +27,17 @@
Taborder: 1
]
}
+ Component ButtonInventorySummaryReport
+ {
+ #keys: '[415136.0.862201699]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECK_EDIT'
+ Label: 'Inventory summary report'
+ Taborder: 2
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def
new file mode 100644
index 0000000..616a1fb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonInventorySummaryReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnClick
+{
+ #keys: '[415136.0.862201823]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Inventory_summary_report_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..19c25a9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.864612253]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.864612254]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.864612255]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventorySummaryColumn.InventorySummaryCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'EndingInventory;MinimumInventory;MaximumInventory;AverageInventory'
+ Column: 'InventorySummaryColumn'
+ Row: 'InventroySummaryRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.864612256]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.864612257]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventroySummaryRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.864612258]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.864612259]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventorySummaryColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable
+ #child: matrixeditorContextMenuTable
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
new file mode 100644
index 0000000..1c06644
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component PanelCategory
+{
+ #keys: '[415136.0.862221867]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component RadioButtonGroupUseForPlanning id:RadioButtonGroupUseForPlanning_545
+ {
+ #keys: '[415136.0.862222092]'
+ BaseType: 'WebRadioButtonGroup'
+ Properties:
+ [
+ BoundValue: 'Day'
+ ButtonLabels: 'Day;Week;Month'
+ ButtonValues: 'Day;Week;Month'
+ Orientation: 'horizontal'
+ ShowTitle: false
+ Taborder: 0
+ Title: 'Periods'
+ Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
new file mode 100644
index 0000000..cded950
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelExport
+{
+ #keys: '[415136.0.862221896]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonSummaryExport
+ {
+ #keys: '[415136.0.862221939]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def
new file mode 100644
index 0000000..27105c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelGeneration
+{
+ #keys: '[415136.0.864612093]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[415136.0.864612094]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def
new file mode 100644
index 0000000..c91046e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryColumnSearch
+{
+ #keys: '[415136.0.864612101]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelPeriod
+ #child: PanelExport
+ #child: PanelCategory
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def
new file mode 100644
index 0000000..e149da6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryHeader
+{
+ #keys: '[415136.0.864612089]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelInventorySummaryProductSearch
+ #child: PanelInventorySummaryColumnSearch
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def
new file mode 100644
index 0000000..bfd68b1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryProductSearch
+{
+ #keys: '[415136.0.864612090]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelUnit
+ #child: PanelGeneration
+ #child: PanelMQBMLB
+ #child: PanelPower
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def
new file mode 100644
index 0000000..b261493
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelMQBMLB
+{
+ #keys: '[415136.0.864612095]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslMQBMLB
+ {
+ #keys: '[415136.0.864612096]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
new file mode 100644
index 0000000..bc6b316
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelPeriod
+{
+ #keys: '[415136.0.862221329]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component DateSelectorStart
+ {
+ #keys: '[415136.0.862221355]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start date'
+ Taborder: 0
+ ]
+ }
+ Component DateSelectorEnd
+ {
+ #keys: '[415136.0.862221609]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'End date'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def
new file mode 100644
index 0000000..f59f987
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPower
+{
+ #keys: '[415136.0.864612097]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslPower
+ {
+ #keys: '[415136.0.864612098]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Power'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def
new file mode 100644
index 0000000..636f0fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.864612252]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def
new file mode 100644
index 0000000..4990a44
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelUnit
+{
+ #keys: '[415136.0.864612091]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslUnit
+ {
+ #keys: '[415136.0.864612092]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Unit'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..ece6871
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.864612260]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..e7171db
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.864612261]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
new file mode 100644
index 0000000..9b50f5f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormInventorySummaryReport_OnCreated
+{
+ #keys: '[415136.0.864612555]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ if( not isnull( MacroPlan.InventorySummarySource() ) ){
+ InventorySummarySource::Initialize( MacroPlan );
+ }
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+ info( '------------------2----------------', table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
new file mode 100644
index 0000000..83bb279
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelCategory/RadioButtonGroupUseForPlanning_545
+Response OnChanged () id:Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged_847
+{
+ #keys: '[415136.0.862222091]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Category() <> this.BoundValue() ){
+ dhSearch.Data().Category( this.BoundValue() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
new file mode 100644
index 0000000..dda4e49
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonSummaryExport
+Response OnClick () id:Response_PanelExport_ButtonSummaryExport_OnClick
+{
+ #keys: '[415136.0.862221938]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := InventorySummarySource::Download( MacroPlan );
+
+ Application.Download( InventorySummaryReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..0659423
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelGeneration/ddslGeneration
+Response OnCreated () id:Response_PanelGeneration_ddslGeneration_OnCreated
+{
+ #keys: '[415136.0.864612086]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Generation() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
new file mode 100644
index 0000000..41e1fd3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelGeneration/ddslGeneration
+Response OnSelectionChanged () id:Response_PanelGeneration_ddslGeneration_OnSelectionChanged
+{
+ #keys: '[415136.0.864612085]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //浠f暟鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Generation() <> selection ){
+ dhSearch.Data().Generation( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..31df8e8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB/ddslMQBMLB
+Response OnCreated () id:Response_PanelMQBMLB_ddslMQBMLB_OnCreated
+{
+ #keys: '[415136.0.864612084]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.MQBMLB() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..a86bd8c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged
+{
+ #keys: '[415136.0.864612083]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //妯旱鍒舵敼鍙樺悗鍒锋柊鏄剧ず
+ if( dhSearch.Data().MqbMlb() <> selection ){
+ dhSearch.Data().MqbMlb( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
new file mode 100644
index 0000000..7d13e79
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
+{
+ #keys: '[415136.0.862221640]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().EndDate() <> this.Date() ){
+ dhSearch.Data().EndDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
new file mode 100644
index 0000000..aa54f0a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
+{
+ #keys: '[415136.0.862221461]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().StartDate() <> this.Date() ){
+ dhSearch.Data().StartDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def
new file mode 100644
index 0000000..24138aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelPower/ddslPower
+Response OnCreated () id:Response_PanelPower_ddslPower_OnCreated
+{
+ #keys: '[415136.0.864612082]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Power() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
new file mode 100644
index 0000000..01ad63c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPower/ddslPower
+Response OnSelectionChanged () id:Response_PanelPower_ddslPower_OnSelectionChanged
+{
+ #keys: '[415136.0.864612081]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍔熺巼鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Power() <> selection ){
+ dhSearch.Data().Power( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def
new file mode 100644
index 0000000..67038e1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
+{
+ #keys: '[415136.0.864612088]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+
+ valueString := "<All>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
new file mode 100644
index 0000000..a4cb7ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
+{
+ #keys: '[415136.0.864612087]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
+ if( dhSearch.Data().Unit() <> selection ){
+ dhSearch.Data().Unit( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
new file mode 100644
index 0000000..18cc120
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventorySummaryReport
+{
+ #keys: '[415136.0.864611956]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable
+ {
+ #keys: '[415136.0.864612009]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummaryReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch
+ {
+ #keys: '[415136.0.864612034]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummarySearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelInventorySummaryHeader
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECK_EDIT'
+ Title: 'Inventory summary report'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw
new file mode 100644
index 0000000..f1f7de6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw
@@ -0,0 +1,140 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormInventorySummaryReport
+ {
+ title: 'QMacroPlanner::FormInventorySummaryReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormInventorySummaryReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormInventorySummaryReport_PanelInventorySummaryHeader
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelInventorySummaryProductSearch
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelUnit
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelGeneration
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelMQBMLB
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelPower
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelInventorySummaryColumnSearch
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormInventorySummaryReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_EndingInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'EndingInventory'
+ }
+ attribute_MinimumInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'MinimumInventory'
+ }
+ attribute_MaximumInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'MaximumInventory'
+ }
+ attribute_AverageInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 3
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'AverageInventory'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 18
+ image: 'DOCUMENT_CHECK_EDIT'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Inventory_summary_report_view'
+ name: 'Inventory summary report view'
+ isglobal: false
+ isroot: true
+}
--
Gitblit v1.9.3