From d0d4a34072977d5194fb981a23fce67ba1b7eae2 Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期三, 14 八月 2024 14:58:58 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_MqbMlb.qbl | 7
_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport#0.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl | 6
_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Generation.qbl | 7
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl | 13
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl | 212 ++
_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl | 17
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def | 34
_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnCreated.def | 23
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow/_ROOT_Type_CCEngineLogisticsCostRow.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def | 98 +
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def | 14
_Main/BL/Type_CCEngineLogisticsCostSearch/_ROOT_Type_CCEngineLogisticsCostSearch.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportSearch.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def | 16
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def | 3
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl | 71
_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Generation.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def | 22
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def | 24
_Main/BL/Type_CCEngineLogisticsCostColumn/DefaultValue_Name.qbl | 6
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl | 8
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl | 6
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost#517.qbl | 16
_Main/BL/Type_CCEngineLogisticsCostCell/_ROOT_Type_CCEngineLogisticsCostCell.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Power.qbl | 7
_Main/BL/Type_CCEngineLogisticsCostReport/Method_IsInUnit.qbl | 16
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl | 43
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCLine.qbl | 11
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def | 39
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def | 16
_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl | 13
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn#0.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_CCEngineLogisticsCostReport/Method_GetRow.qbl | 21
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost#0.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Power.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable#1.def | 10
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def | 33
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl | 7
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixeditorContextMenuTable#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 30
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def | 98 +
_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_ID.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl | 20
_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelGeneration#969.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostRow/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def | 19
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def | 26
_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow#0.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelTable#211.def | 14
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl | 52
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl | 7
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def | 23
_Main/BL/Relations/Relation_CCEngineLogisticsCostRow_Report_CCEngineLogisticsCostReport_Row.qbl | 23
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl | 6
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl | 13
_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl | 23
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl | 10
_Main/Sys/Repr/Global/MachiningPipelineCell.qrp | 51
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw | 86 +
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost#0.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportHeader.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def | 3
_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Name.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def | 3
_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_RowNr.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def | 16
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuCCEngineLogis.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def | 25
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def | 39
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def | 19
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl | 264 +++
_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl | 6
_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw | 136 +
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Column_CCEngineLogisticsCostColumn_Cell.qbl | 23
_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl | 1
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def | 3
_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl | 16
_Main/BL/Type_CCEngineLogisticsCostReport/Method_GenerateColumn.qbl | 20
_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp | 41
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelMQBMLB#667.def | 24
_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Index.qbl | 8
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl | 6
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def | 3
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl | 166 ++
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport#670.def | 34
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def | 3
_Main/BL/Relations/Relation_CCEngineLogisticsCostSearch_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl | 23
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_StartDate.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl | 21
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl | 49
_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl | 16
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Clear.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelPower#653.def | 24
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl | 11
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl | 26
_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_ID.qbl | 6
_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def | 37
_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_Name.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl | 13
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl | 152 ++
_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl | 23
_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp | 66
_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell#0.qbl | 10
_Main/UI/MacroPlannerWebApp/Views/CC_engine_logistics_cost_report_view.vw | 104 +
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def | 19
_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw | 200 ++
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl | 16
_Main/Sys/Repr/Global/InventorySummaryCell.qrp | 26
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 19
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl | 14
_Main/BL/Type_CCEngineLogisticsCostColumn/_ROOT_Type_CCEngineLogisticsCostColumn.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def | 19
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl | 8
_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Row_CCEngineLogisticsCostRow_Cell.qbl | 23
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl | 8
_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_Name.qbl | 8
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def | 32
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def | 10
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def | 24
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl | 2
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl | 20
_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl | 23
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl | 22
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCRent.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl | 68
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 19
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl | 8
_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonExport_OnClick.def | 22
_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_Column_CCEngineLogisticsCostColumn_Repo.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def | 6
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl | 20
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl | 10
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl | 23
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl | 6
_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostReport/_ROOT_Type_CCEngineLogisticsCostReport.qbl | 10
_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl | 16
196 files changed, 4,311 insertions(+), 93 deletions(-)
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Column_CCEngineLogisticsCostColumn_Cell.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Column_CCEngineLogisticsCostColumn_Cell.qbl
new file mode 100644
index 0000000..799a439
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Column_CCEngineLogisticsCostColumn_Cell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostCell_Column_CCEngineLogisticsCostColumn_Cell
+{
+ #keys: '1[415136.0.986881391]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Column
+ {
+ #keys: '3[415136.0.986881393][415136.0.986881392][415136.0.986881394]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Cell
+ {
+ #keys: '3[415136.0.986881396][415136.0.986881395][415136.0.986881397]'
+ Cardinality: '1toN'
+ ObjectDefinition: CCEngineLogisticsCostColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Row_CCEngineLogisticsCostRow_Cell.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Row_CCEngineLogisticsCostRow_Cell.qbl
new file mode 100644
index 0000000..035a7b1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostCell_Row_CCEngineLogisticsCostRow_Cell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostCell_Row_CCEngineLogisticsCostRow_Cell
+{
+ #keys: '1[415136.0.986881404]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Row
+ {
+ #keys: '3[415136.0.986881406][415136.0.986881405][415136.0.986881407]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Cell
+ {
+ #keys: '3[415136.0.986881409][415136.0.986881408][415136.0.986881410]'
+ Cardinality: '1toN'
+ ObjectDefinition: CCEngineLogisticsCostRow
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_Column_CCEngineLogisticsCostColumn_Repo.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_Column_CCEngineLogisticsCostColumn_Repo.qbl
new file mode 100644
index 0000000..52f06d0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_Column_CCEngineLogisticsCostColumn_Repo.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostReport_Column_CCEngineLogisticsCostColumn_Report
+{
+ #keys: '1[415136.0.986881356]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.986881375][415136.0.986881369][415136.0.986881376][415136.0.986881370][415136.0.986881377][415136.0.986881371][415136.0.986881378][415136.0.986881372][415136.0.986881379][415136.0.986881373][415136.0.986881380][415136.0.986881374]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide Column
+ {
+ #keys: '3[415136.0.986881358][415136.0.986881357][415136.0.986881359]'
+ Cardinality: '1toN'
+ ObjectDefinition: CCEngineLogisticsCostReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Report
+ {
+ #keys: '3[415136.0.986881361][415136.0.986881360][415136.0.986881362]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl
new file mode 100644
index 0000000..75fd42d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostReport_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostReport_MacroPlan_MacroPlan_CCEngineLogisticsCostReport
+{
+ #keys: '1[415136.0.986400960]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.986400962][415136.0.986400961][415136.0.986400963]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostReport
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide CCEngineLogisticsCostReport
+ {
+ #keys: '3[415136.0.986400965][415136.0.986400964][415136.0.986400966]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostRow_Report_CCEngineLogisticsCostReport_Row.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostRow_Report_CCEngineLogisticsCostReport_Row.qbl
new file mode 100644
index 0000000..4023f8e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostRow_Report_CCEngineLogisticsCostReport_Row.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostRow_Report_CCEngineLogisticsCostReport_Row
+{
+ #keys: '1[415136.0.986616253]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Report
+ {
+ #keys: '3[415136.0.986616255][415136.0.986616254][415136.0.986616256]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Row
+ {
+ #keys: '3[415136.0.986616258][415136.0.986616257][415136.0.986616259]'
+ Cardinality: '1toN'
+ ObjectDefinition: CCEngineLogisticsCostReport
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CCEngineLogisticsCostSearch_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl b/_Main/BL/Relations/Relation_CCEngineLogisticsCostSearch_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl
new file mode 100644
index 0000000..cc3faa8
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CCEngineLogisticsCostSearch_MacroPlan_MacroPlan_CCEngineLogisticsCo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CCEngineLogisticsCostSearch_MacroPlan_MacroPlan_CCEngineLogisticsCostSearch
+{
+ #keys: '1[415136.0.986844810]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.986844812][415136.0.986844811][415136.0.986844813]'
+ Cardinality: '0to1'
+ ObjectDefinition: CCEngineLogisticsCostSearch
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide CCEngineLogisticsCostSearch
+ {
+ #keys: '3[415136.0.986844815][415136.0.986844814][415136.0.986844816]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl
new file mode 100644
index 0000000..3c091a9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column
+{
+ #keys: '1[415136.0.992900190]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Cell
+ {
+ #keys: '3[415136.0.992900192][415136.0.992900191][415136.0.992900193]'
+ Cardinality: '1toN'
+ ObjectDefinition: DLEngineLogisticsCostColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Column
+ {
+ #keys: '3[415136.0.992900195][415136.0.992900194][415136.0.992900196]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl
new file mode 100644
index 0000000..447d3ab
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Report
+{
+ #keys: '1[415136.0.992900157]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.992900176][415136.0.992900170][415136.0.992900177][415136.0.992900171][415136.0.992900178][415136.0.992900172][415136.0.992900179][415136.0.992900173][415136.0.992900180][415136.0.992900174][415136.0.992900181][415136.0.992900175]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide Column
+ {
+ #keys: '3[415136.0.992900159][415136.0.992900158][415136.0.992900160]'
+ Cardinality: '1toN'
+ ObjectDefinition: DLEngineLogisticsCostReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Report
+ {
+ #keys: '3[415136.0.992900162][415136.0.992900161][415136.0.992900163]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
new file mode 100644
index 0000000..5bdc56d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCostReport
+{
+ #keys: '1[415136.0.992900125]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.992900127][415136.0.992900126][415136.0.992900128]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostReport
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide DLEngineLogisticsCostReport
+ {
+ #keys: '3[415136.0.992900130][415136.0.992900129][415136.0.992900131]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl
new file mode 100644
index 0000000..c9e2ed5
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report
+{
+ #keys: '1[415136.0.992900141]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Row
+ {
+ #keys: '3[415136.0.992900143][415136.0.992900142][415136.0.992900144]'
+ Cardinality: '1toN'
+ ObjectDefinition: DLEngineLogisticsCostReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Report
+ {
+ #keys: '3[415136.0.992900146][415136.0.992900145][415136.0.992900147]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl
new file mode 100644
index 0000000..0f8eb23
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row
+{
+ #keys: '1[415136.0.992900203]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Cell
+ {
+ #keys: '3[415136.0.992900205][415136.0.992900204][415136.0.992900206]'
+ Cardinality: '1toN'
+ ObjectDefinition: DLEngineLogisticsCostRow
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Row
+ {
+ #keys: '3[415136.0.992900208][415136.0.992900207][415136.0.992900209]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl b/_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
new file mode 100644
index 0000000..84da0ad
--- /dev/null
+++ b/_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCostSearch
+{
+ #keys: '1[415136.0.992900109]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.992900111][415136.0.992900110][415136.0.992900112]'
+ Cardinality: '0to1'
+ ObjectDefinition: DLEngineLogisticsCostSearch
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide DLEngineLogisticsCostSearch
+ {
+ #keys: '3[415136.0.992900114][415136.0.992900113][415136.0.992900115]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl b/_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl
new file mode 100644
index 0000000..8d2d046
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow
+{
+ #keys: '1[415136.0.992900294]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Product_MP
+ {
+ #keys: '3[415136.0.992900296][415136.0.992900295][415136.0.992900297]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialProductionRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialProductionRow
+ {
+ #keys: '3[415136.0.992900299][415136.0.992900298][415136.0.992900300]'
+ Cardinality: '0to1'
+ ObjectDefinition: Product_MP
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl b/_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl
new file mode 100644
index 0000000..52154b2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow
+{
+ #keys: '1[415136.0.993115876]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Product_MP
+ {
+ #keys: '3[415136.0.993115878][415136.0.993115877][415136.0.993115879]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialSalesRow
+ {
+ #keys: '3[415136.0.993115881][415136.0.993115880][415136.0.993115882]'
+ Cardinality: '0to1'
+ ObjectDefinition: Product_MP
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl
new file mode 100644
index 0000000..ffd2fc1
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Coefficient
+{
+ #keys: '3[415136.0.986844758][415136.0.986844757][415136.0.986844759]'
+ Description: '绯绘暟'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl
new file mode 100644
index 0000000..8a9c7d8
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EstimatedTotalCost
+{
+ #keys: '3[415136.0.986844739][415136.0.986844738][415136.0.986844740]'
+ Description: '棰勮鎬昏垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl
new file mode 100644
index 0000000..8dbddf0
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FactoryToRentTransCost
+{
+ #keys: '3[415136.0.986844781][415136.0.986844780][415136.0.986844782]'
+ Description: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl
new file mode 100644
index 0000000..0343f9f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentEnterCost
+{
+ #keys: '3[415136.0.986881423][415136.0.986881422][415136.0.986881424]'
+ Description: '澶栫搴撳叆搴撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl
new file mode 100644
index 0000000..005fa21
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentOutCost
+{
+ #keys: '3[415136.0.986881433][415136.0.986881432][415136.0.986881434]'
+ Description: '澶栫搴撳嚭搴撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl
new file mode 100644
index 0000000..c42d3f6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentStorageCost
+{
+ #keys: '3[415136.0.986881446][415136.0.986881445][415136.0.986881447]'
+ Description: '澶栫搴撲粨鍌ㄨ垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl
new file mode 100644
index 0000000..e205166
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TotalCost
+{
+ #keys: '3[415136.0.986844771][415136.0.986844770][415136.0.986844772]'
+ Description: '鎬昏垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl
new file mode 100644
index 0000000..2251974
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEstimatedTotalCost
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+
+ value := this.RentEnterCost() + this.RentOutCost() + this.FactoryToRentTransCost() + this.RentStorageCost();
+
+ this.EstimatedTotalCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl
new file mode 100644
index 0000000..e2e8080
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcTotalCost
+{
+ Description: '璁$畻鎬昏垂鐢�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+ value := this.EstimatedTotalCost() * this.Coefficient();
+
+ this.TotalCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/_ROOT_Type_CCEngineLogisticsCostCell.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/_ROOT_Type_CCEngineLogisticsCostCell.qbl
new file mode 100644
index 0000000..4caa127
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/_ROOT_Type_CCEngineLogisticsCostCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CCEngineLogisticsCostCell
+{
+ #keys: '5[415136.0.986881388][415136.0.986881386][0.0.0][415136.0.986881387][415136.0.986881389]'
+ BaseType: Object
+ Description: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'CCEngineLogisticsCostCells'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl
new file mode 100644
index 0000000..1c4d5bf
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCLongTransCoat
+{
+ #keys: '3[415136.0.992900332][415136.0.992900331][415136.0.992900333]'
+ Description: '闀挎槬闀块�旇繍杈撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl
new file mode 100644
index 0000000..7ad15e3
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentEnterCost
+{
+ #keys: '3[415136.0.992900045][415136.0.992900044][415136.0.992900046]'
+ Description: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl
new file mode 100644
index 0000000..66c4cc5
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentOutCost
+{
+ #keys: '3[415136.0.992900048][415136.0.992900047][415136.0.992900049]'
+ Description: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
new file mode 100644
index 0000000..ecf78ff
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentQuantity
+{
+ #keys: '3[415136.0.993115853][415136.0.993115852][415136.0.993115854]'
+ Description: '闀挎槬澶栫搴撴暟閲�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl
new file mode 100644
index 0000000..ac4c891
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentStorageCost
+{
+ #keys: '3[415136.0.992900051][415136.0.992900050][415136.0.992900052]'
+ Description: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl
new file mode 100644
index 0000000..572f8e5
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCShortTransCost
+{
+ #keys: '3[415136.0.992900342][415136.0.992900341][415136.0.992900343]'
+ Description: '闀挎槬鐭�旇繍杈撹垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl
new file mode 100644
index 0000000..78e30c4
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Coefficient
+{
+ #keys: '3[415136.0.992900036][415136.0.992900035][415136.0.992900037]'
+ Description: '绯绘暟'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl
new file mode 100644
index 0000000..2ba6eb9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentEnterCost
+{
+ #keys: '3[415136.0.992900242][415136.0.992900241][415136.0.992900243]'
+ Description: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
+ ValueType: Number
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl"
new file mode 100644
index 0000000..f95e66f
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentOutCost
+{
+ #keys: '3[415136.0.992900249][415136.0.992900248][415136.0.992900250]'
+ Description: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
+ ValueType: Number
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl"
new file mode 100644
index 0000000..c70e451
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentStorageCost
+{
+ #keys: '3[415136.0.992900262][415136.0.992900261][415136.0.992900263]'
+ Description: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl
new file mode 100644
index 0000000..9f5a460
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EstimatedTotalCost
+{
+ #keys: '3[415136.0.992900039][415136.0.992900038][415136.0.992900040]'
+ Description: '棰勮鎬昏垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl
new file mode 100644
index 0000000..d39550c
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FactoryToDLRentTransCost
+{
+ #keys: '3[415136.0.992900042][415136.0.992900041][415136.0.992900043]'
+ Description: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl
new file mode 100644
index 0000000..f2cf46b
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TotalCost
+{
+ #keys: '3[415136.0.992900054][415136.0.992900053][415136.0.992900055]'
+ Description: '鎬昏垂鐢�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl
new file mode 100644
index 0000000..c68e1b4
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEstimatedTotalCost
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+
+ value := this.CCRentEnterCost() + this.CCRentOutCost() + this.CCLongTransCoat() + this.CCShortTransCost() + this.CCRentStorageCost()
+ + this.DLRentEnterCost() + this.DLRentOutCost() + this.FactoryToDLRentTransCost() + this.DLRentStorageCost();
+
+ this.EstimatedTotalCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl
new file mode 100644
index 0000000..e2e8080
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcTotalCost
+{
+ Description: '璁$畻鎬昏垂鐢�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+ value := this.EstimatedTotalCost() * this.Coefficient();
+
+ this.TotalCost( value );
+ *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell\0430.qbl"
new file mode 100644
index 0000000..4bb2db5
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell\0430.qbl"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DLEngineLogisticsCostCell
+{
+ #keys: '5[415136.0.992900033][415136.0.992900031][0.0.0][415136.0.992900032][415136.0.992900034]'
+ BaseType: Object
+ Description: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'DLEngineLogisticsCostCells'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Index.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..df42754
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Index.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.986616274][415136.0.986616273][415136.0.986616275]'
+ Description: '鍒楀彿'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..5a12005
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.986616271][415136.0.986616270][415136.0.986616272]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_StartDate.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_StartDate.qbl
new file mode 100644
index 0000000..7b54308
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.986881347][415136.0.986881346][415136.0.986881348]'
+ Description: '寮�濮嬫棩鏈�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/Function_CalcIndex.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..92fa42d
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn/_ROOT_Type_CCEngineLogisticsCostColumn.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn/_ROOT_Type_CCEngineLogisticsCostColumn.qbl
new file mode 100644
index 0000000..a958ed8
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn/_ROOT_Type_CCEngineLogisticsCostColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CCEngineLogisticsCostColumn
+{
+ #keys: '5[415136.0.986616268][415136.0.986616266][0.0.0][415136.0.986616267][415136.0.986616269]'
+ BaseType: Object
+ Description: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄥ垪'
+ StructuredName: 'CCEngineLogisticsCostColumns'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl
new file mode 100644
index 0000000..66630b7
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.992900061][415136.0.992900060][415136.0.992900062]'
+ Description: '鍒楀彿'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl
new file mode 100644
index 0000000..1cd92b7
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.992900064][415136.0.992900063][415136.0.992900065]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl
new file mode 100644
index 0000000..dd8b986
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.992900067][415136.0.992900066][415136.0.992900068]'
+ Description: '寮�濮嬫棩鏈�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl
new file mode 100644
index 0000000..4f2f1d9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-13-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn\0430.qbl"
new file mode 100644
index 0000000..fa03a22
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn\0430.qbl"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DLEngineLogisticsCostColumn
+{
+ #keys: '5[415136.0.992900058][415136.0.992900056][0.0.0][415136.0.992900057][415136.0.992900059]'
+ BaseType: Object
+ Description: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄥ垪'
+ StructuredName: 'DLEngineLogisticsCostColumns'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_ID.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_ID.qbl
new file mode 100644
index 0000000..d2cbd0c
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.986400950][415136.0.986400949][415136.0.986400951]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_IsShow.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..d20a0f9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.986400953][415136.0.986400952][415136.0.986400954]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_Name.qbl
new file mode 100644
index 0000000..41a82d6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.986400956][415136.0.986400955][415136.0.986400957]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_ID.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Clear.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Clear.qbl
new file mode 100644
index 0000000..4acb371
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.Column( relflush );
+ this.Row( relflush );
+
+ this.GenerateColumn( this.MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
new file mode 100644
index 0000000..f8cbebb
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ CCEngineLogisticsCostSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, MacroPlan.CCEngineLogisticsCostReport, 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.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
+ traverse( table, Row, row ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
+
+ traverse( row, Cell, cell ){
+ column := selectobject( this, Column, column, column.Name() = cell.Column().Name() );
+
+ sumcell := selectobject( column, Cell, c, c.Row() = sumrow );
+ if( isnull( sumcell ) ){
+ sumcell := sumrow.Cell( relnew, RentEnterCost := 0
+ , RentOutCost := 0
+ , FactoryToRentTransCost := 0
+ , RentStorageCost := 0 );
+ column.Cell( relinsert, sumcell );
+ }
+
+ showcell := showrow.Cell( relnew, RentEnterCost := cell.RentEnterCost(), RentOutCost := cell.RentOutCost(), FactoryToRentTransCost := cell.FactoryToRentTransCost(), RentStorageCost := cell.RentStorageCost() );
+ column.Cell( relinsert, showcell );
+ sumcell.RentEnterCost( cell.RentEnterCost() + sumcell.RentEnterCost() );
+ sumcell.RentOutCost( cell.RentOutCost() + sumcell.RentOutCost() );
+ sumcell.FactoryToRentTransCost( cell.FactoryToRentTransCost() + sumcell.FactoryToRentTransCost() );
+ sumcell.RentStorageCost( cell.RentStorageCost() + sumcell.RentStorageCost() );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_GenerateColumn.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..880436e
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/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.Column( relnew, Name := periodname, StartDate := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_GetRow.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_GetRow.qbl
new file mode 100644
index 0000000..a966d3a
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_GetRow.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String product
+) as CCEngineLogisticsCostRow
+{
+ Description: '鏍规嵁宸ュ巶鑾峰彇琛�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-2-2024 (created)
+ row := selectobject( this, Row, row, row.Name() = product );
+ if( isnull( row ) ){
+ //鍒濆鍖栧崟鍏冩牸
+ row := this.Row( relnew, Name := product );
+ traverse( this, Column, column ){
+ row.Initialize( column );
+ }
+ }
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_IsInUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_IsInUnit.qbl
new file mode 100644
index 0000000..57394ad
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_IsInUnit.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method IsInUnit (
+ StockingPoint_MP sp,
+ String unitname
+) as Boolean
+{
+ Description: '鏄惁灞炰簬鏌愪釜绾�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-5-2024 (created)
+ unit := sp.Unit();
+ parentunits := unit.GetAllParent();
+ return sp.ID() = unitname or unit.ID() = unitname or exists( parentunits, Elements, punit, punit.ID() = unitname );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
new file mode 100644
index 0000000..d80aa59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
@@ -0,0 +1,152 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, CCEngineLogisticsCostReport, table, 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 );
+ //Attribute
+ attricolumnelement := xmlDOM.CreateElement( "column" );
+ attrinameelement := xmlDOM.CreateElement( "name" );
+ attritypeelement := xmlDOM.CreateElement( "type" );
+ attrinameelement.TextContent( 'Attribute' );
+ attritypeelement.TextContent( "String" );
+ attricolumnelement.AppendChild( attrinameelement );
+ attricolumnelement.AppendChild( attritypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( attricolumnelement );
+ traverse ( table, Column, 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, Cell, cell, cell.Row().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.Row();
+ //Product
+ product1cellElement := xmlDOM.CreateElement( "cell" );
+ product1cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product1cellElement );
+
+ product2cellElement := xmlDOM.CreateElement( "cell" );
+ product2cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product2cellElement );
+
+ product3cellElement := xmlDOM.CreateElement( "cell" );
+ product3cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product3cellElement );
+
+ product4cellElement := xmlDOM.CreateElement( "cell" );
+ product4cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product4cellElement );
+
+ product5cellElement := xmlDOM.CreateElement( "cell" );
+ product5cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product5cellElement );
+
+ product6cellElement := xmlDOM.CreateElement( "cell" );
+ product6cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product6cellElement );
+
+ product7cellElement := xmlDOM.CreateElement( "cell" );
+ product7cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product7cellElement );
+ //Attribute
+ //澶栫搴撳叆搴撹垂鐢�
+ rententercostcellElement := xmlDOM.CreateElement( "cell" );
+ rententercostcellElement.SetAttribute( "value", 'RentEnterCost' );
+ attricolumnelement.AppendChild( rententercostcellElement );
+ //澶栫搴撳嚭搴撹垂鐢�
+ rentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ rentoutcostcellElement.SetAttribute( "value", 'RentOutCost' );
+ attricolumnelement.AppendChild( rentoutcostcellElement );
+ //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
+ factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ factorytorenttranscostcellElement.SetAttribute( "value", 'FactoryToRentTransCost' );
+ attricolumnelement.AppendChild( factorytorenttranscostcellElement );
+ //澶栫搴撲粨鍌ㄨ垂鐢�
+ rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ rentstoragecostcellElement.SetAttribute( "value", 'RentStorageCost' );
+ attricolumnelement.AppendChild( rentstoragecostcellElement );
+ //棰勮鎬昏垂鐢�
+ estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
+ estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
+ attricolumnelement.AppendChild( estimatedtotalcostcellElement );
+ //绯绘暟
+ coefficientcellElement := xmlDOM.CreateElement( "cell" );
+ coefficientcellElement.SetAttribute( "value", 'Coefficient' );
+ attricolumnelement.AppendChild( coefficientcellElement );
+ //鎬昏垂鐢�
+ totalcostcellElement := xmlDOM.CreateElement( "cell" );
+ totalcostcellElement.SetAttribute( "value", 'TotalCost' );
+ attricolumnelement.AppendChild( totalcostcellElement );
+ }
+ //澶栫搴撳叆搴撹垂鐢�
+ rententercostcellElement := xmlDOM.CreateElement( "cell" );
+ rententercostcellElement.SetAttribute( "value", [String]c.RentEnterCost() );
+ columnelement.AppendChild( rententercostcellElement );
+ //澶栫搴撳嚭搴撹垂鐢�
+ rentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ rentoutcostcellElement.SetAttribute( "value", [String]c.RentOutCost() );
+ columnelement.AppendChild( rentoutcostcellElement );
+ //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
+ factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToRentTransCost() );
+ columnelement.AppendChild( factorytorenttranscostcellElement );
+ //澶栫搴撲粨鍌ㄨ垂鐢�
+ rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ rentstoragecostcellElement.SetAttribute( "value", [String]c.RentStorageCost() );
+ columnelement.AppendChild( rentstoragecostcellElement );
+ //棰勮鎬昏垂鐢�
+ estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
+ estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
+ columnelement.AppendChild( estimatedtotalcostcellElement );
+ //绯绘暟
+ coefficientcellElement := xmlDOM.CreateElement( "cell" );
+ coefficientcellElement.SetAttribute( "value", [String]c.Coefficient() );
+ columnelement.AppendChild( coefficientcellElement );
+ //鎬昏垂鐢�
+ totalcostcellElement := xmlDOM.CreateElement( "cell" );
+ totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
+ columnelement.AppendChild( totalcostcellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( CCEngineLogisticsCostReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..e912c3f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultAllUnit.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultAllUnit () const declarative as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return '<All>';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..4a17ee3
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultCCUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return '闀挎槬宸ュ巶';
+ //return 'Assembly Plant (France)';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..5f29f58
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/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 'CC engine logistics cost reports';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-14-2024 (created)
+ return '浜ф垚鍝�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCLine.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCLine.qbl
new file mode 100644
index 0000000..1e19bf6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCLine.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointCCLine () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ //return '闀挎槬瑁呴厤绾胯竟搴�';
+ return '闀挎槬瑁呴厤绾�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCRent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCRent.qbl
new file mode 100644
index 0000000..d1d47c2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetStockingPointCCRent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointCCRent () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬澶栫搴�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..a26e3e5
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -0,0 +1,166 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+ owner.CCEngineLogisticsCostReport( relflush );
+ produtparent := CCEngineLogisticsCostReport::GetDefaultProductParent();
+ name := CCEngineLogisticsCostReport::GetDefaultName();
+ allunit := CCEngineLogisticsCostReport::GetDefaultAllUnit();
+ ccunit := CCEngineLogisticsCostReport::GetDefaultCCUnit();
+ ccline := CCEngineLogisticsCostReport::GetStockingPointCCLine();
+ ccrent := CCEngineLogisticsCostReport::GetStockingPointCCRent();
+
+ startofplanning := owner.StartOfPlanning().Date();
+ //startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ table := owner.CCEngineLogisticsCostReport( relnew, ID := name, Name := name );
+ showtable := owner.CCEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+ search := owner.CCEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
+
+ products := construct( Product_MPs );
+
+ table.GenerateColumn( owner );
+ //澶栫搴撳叆搴撹垂鐢細鍙栬嚜璐㈠姟浜ч噺鎶ヨ〃鐨勪骇閲忥紝鍦ㄤ骇鍝佽〃鏍规嵁鍙戝姩鏈哄彿鎵惧埌瀵瑰簲鐨凣eneration 鍜屾í绾靛埗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑鍖呰瀹归噺鍜屽叆搴撳崟浠凤紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+ traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//璐㈠姟浜ч噺鎶ヨ〃闈炲鍏�
+ traverse( source, FinancialProductionReport, report, not report.IsShow() ){//璐㈠姟浜ч噺鎶ヨ〃涓嶆樉绀�
+ traverse( report, FinancialProductionRow, row, row.Unit() = ccunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//璐㈠姟浜ч噺鎶ヨ〃閲岀殑闀挎槬浜ч噺, 涓嶄负0
+ ccrow := table.GetRow( row.Name() );
+ product := row.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ products.Add( product );
+ traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
+ //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
+ quantity := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+ column := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
+ //澶栫搴撳叆搴撹垂鐢�
+ ccrow.SetRentEnterCost( column, quantity );
+ }
+ }
+ }
+ }
+ }
+ }
+ //澶栫搴撳嚭搴撹垂鐢細鍑哄簱閲忕瓑浜庨暱鏄ラ攢閲忥紝鍙栬嚜璐㈠姟閿�閲忔姤琛ㄧ殑閿�閲忥紝鍦ㄤ骇鍝佽〃鏍规嵁鍙戝姩鏈哄彿鎵惧埌瀵瑰簲鐨凣eneration 鍜屾í绾靛埗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑鍖呰瀹归噺鍜屽嚭搴撳崟浠凤紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+ traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//璐㈠姟閿�閲忔姤琛ㄩ潪瀵煎叆
+ traverse( source, FinancialSalesReport, report, not report.IsShow() ){//璐㈠姟閿�閲忔姤琛ㄤ笉鏄剧ず
+ traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' ) ){//璐㈠姟閿�閲忔姤琛ㄩ噷鐨勯暱鏄ヤ骇閲�, 涓嶄负0
+ ccrow := table.GetRow( row.Name() );
+ product := row.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ products.Add( product );
+ traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' ){
+ //鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬閿�閲�
+ quantity := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+ column := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
+ //澶栫搴撳嚭搴撹垂鐢�
+ ccrow.SetRentOutCost( column, quantity );
+ }
+ }
+ }
+ }
+ }
+ }
+ //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤锛氾紝鍦� trip plan閲屾壘鍒伴暱鏄ヨ閰嶇嚎杈瑰簱鍒伴暱鏄ュ绉熷簱鐨勮繍杈撴暟閲忥紝锛岋紝鐢ㄥ叕寮忚绠楀緱鍑虹粨鏋滐紝鏈堝害杩涜姹囨��
+ traverse( owner, Unit.Lane.LaneLeg, laneleg ){
+ //璧峰搴撳瓨鐐规槸鍚︽槸闀挎槬瑁呴厤绾胯竟搴�
+ originsp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
+ isccspline := table.IsInUnit( originsp, ccline );
+ //鐩殑鍦版槸鍚︽槸闀挎槬澶栫搴�
+ destisp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
+ isccrent := table.IsInUnit( destisp, ccrent );
+ if( isccspline and isccrent ){
+ traverse( laneleg, Trip, trip, trip.Arrival().Date() < startofnextyear ){
+ periodtime := trip.Arrival().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+ traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 ){
+ row := table.GetRow( pit.ProductID() );
+ product := pit.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+ transcost := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = ccline
+ and trans.Destination() = ccrent
+ and exists( productparents, Elements, e, e.ID() = trans.Product() ) );
+ if( not isnull( enginecost ) and not isnull( transcost ) ){
+ products.Add( product );
+ //杩愯緭鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环
+ quantity := ceil( ceil( [Number]pit.Quantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
+
+ row.SetFactoryToRentTransCost( column, quantity );
+ }
+ }
+ }
+ }
+ }
+ }
+ //澶栫搴撲粨鍌ㄨ垂鐢細浠撳偍鏁伴噺/鍖呰瀹归噺*浠撳偍鍗曚环锛屽湪Actual inventories閲屽彇鍒伴暱鏄ュ绉熷簱璇ュ彂鍔ㄦ満鐨勪粨鍌ㄩ噺锛屾牴鎹彂鍔ㄦ満鍙锋壘鍒板搴旂殑Generation 鍜屾í绾靛埗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑浠撳偍鍗曚环鍜屽寘瑁呭閲忥紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+ traverse( owner, StockingPoint_MP, stockingpoint ){
+ //鏄惁灞炰簬闀挎槬澶栫搴�
+ isccrent := table.IsInUnit( stockingpoint, ccrent );
+ if( isccrent ){
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() ){
+ //鑾峰彇琛�
+ product := pisp.Product_MP();
+ productparents := product.GetAllParent();
+ row := table.GetRow( pisp.ProductID() );
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ products.Add( product );
+ //褰損roduct planning鐨勬棩鏈熷尯闂村湪闇�瑕佺殑鏃ユ湡鍖洪棿鍐�
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
+ ){
+ periodtime := pispip.Start().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ quantity := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+
+ row.SetRentStorageCost( column, quantity );
+ }
+ }
+ }
+ }
+ }
+ }
+ rows := selectsortedset( table, Row, 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_CCEngineLogisticsCostReport/_ROOT_Type_CCEngineLogisticsCostReport.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/_ROOT_Type_CCEngineLogisticsCostReport.qbl
new file mode 100644
index 0000000..763f27b
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/_ROOT_Type_CCEngineLogisticsCostReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CCEngineLogisticsCostReport
+{
+ #keys: '5[415136.0.986400937][415136.0.986400935][0.0.0][415136.0.986400936][415136.0.986400938]'
+ BaseType: Object
+ Description: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ StructuredName: 'CCEngineLogisticsCostReports'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl
new file mode 100644
index 0000000..02ea9f1
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.992900074][415136.0.992900073][415136.0.992900075]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl
new file mode 100644
index 0000000..7571e00
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.992900077][415136.0.992900076][415136.0.992900078]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl
new file mode 100644
index 0000000..5e18c5a
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.992900080][415136.0.992900079][415136.0.992900081]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl
new file mode 100644
index 0000000..b14ba96
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-13-2024 (created)
+ this.Column( relflush );
+ this.Row( relflush );
+
+ this.GenerateColumn( this.MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
new file mode 100644
index 0000000..52764b4
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
@@ -0,0 +1,68 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ DLEngineLogisticsCostSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, MacroPlan.DLEngineLogisticsCostReport, 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.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
+ traverse( table, Row, row ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
+
+ traverse( row, Cell, cell ){
+ column := selectobject( this, Column, column, column.Name() = cell.Column().Name() );
+
+ sumcell := selectobject( column, Cell, c, c.Row() = sumrow );
+ if( isnull( sumcell ) ){
+ sumcell := sumrow.Cell( relnew, CCRentEnterCost := 0
+ , CCRentOutCost := 0
+ , CCLongTransCoat := 0
+ , CCShortTransCost := 0
+ , CCRentStorageCost := 0
+ , DLRentEnterCost := 0
+ , DLRentOutCost := 0
+ , FactoryToDLRentTransCost := 0
+ , DLRentStorageCost := 0 );
+ column.Cell( relinsert, sumcell );
+ }
+
+ showcell := showrow.Cell( relnew, CCRentEnterCost := cell.CCRentEnterCost()
+ , CCRentOutCost := cell.CCRentOutCost()
+ , CCLongTransCoat := cell.CCLongTransCoat()
+ , CCShortTransCost := cell.CCShortTransCost()
+ , CCRentStorageCost := cell.CCRentStorageCost()
+ , DLRentEnterCost := cell.DLRentEnterCost()
+ , DLRentOutCost := cell.DLRentOutCost()
+ , FactoryToDLRentTransCost := cell.FactoryToDLRentTransCost()
+ , DLRentStorageCost := cell.DLRentStorageCost() );
+ column.Cell( relinsert, showcell );
+ sumcell.CCRentEnterCost( cell.CCRentEnterCost() + sumcell.CCRentEnterCost() );
+ sumcell.CCRentOutCost( cell.CCRentOutCost() + sumcell.CCRentOutCost() );
+ sumcell.CCLongTransCoat( cell.CCLongTransCoat() + sumcell.CCLongTransCoat() );
+ sumcell.CCShortTransCost( cell.CCShortTransCost() + sumcell.CCShortTransCost() );
+ sumcell.CCRentStorageCost( cell.CCRentStorageCost() + sumcell.CCRentStorageCost() );
+ sumcell.DLRentEnterCost( cell.DLRentEnterCost() + sumcell.DLRentEnterCost() );
+ sumcell.DLRentOutCost( cell.DLRentOutCost() + sumcell.DLRentOutCost() );
+ sumcell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + sumcell.FactoryToDLRentTransCost() );
+ sumcell.DLRentStorageCost( cell.DLRentStorageCost() + sumcell.DLRentStorageCost() );
+ }
+ }
+ }
+ info( '-------------------------g------------end---------------------------------' );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..b1ab93a
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-13-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.Column( relnew, Name := periodname, StartDate := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl
new file mode 100644
index 0000000..c5025b9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String product
+) as DLEngineLogisticsCostRow
+{
+ Description: '鏍规嵁宸ュ巶鑾峰彇琛�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-13-2024 (created)
+ row := selectobject( this, Row, row, row.Name() = product );
+ if( isnull( row ) ){
+ //鍒濆鍖栧崟鍏冩牸
+ row := this.Row( relnew, Name := product );
+ traverse( this, Column, column ){
+ row.Initialize( column );
+ }
+ }
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl
new file mode 100644
index 0000000..57394ad
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method IsInUnit (
+ StockingPoint_MP sp,
+ String unitname
+) as Boolean
+{
+ Description: '鏄惁灞炰簬鏌愪釜绾�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-5-2024 (created)
+ unit := sp.Unit();
+ parentunits := unit.GetAllParent();
+ return sp.ID() = unitname or unit.ID() = unitname or exists( parentunits, Elements, punit, punit.ID() = unitname );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
new file mode 100644
index 0000000..166d84f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
@@ -0,0 +1,212 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, DLEngineLogisticsCostReport, table, 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 );
+ //Attribute
+ attricolumnelement := xmlDOM.CreateElement( "column" );
+ attrinameelement := xmlDOM.CreateElement( "name" );
+ attritypeelement := xmlDOM.CreateElement( "type" );
+ attrinameelement.TextContent( 'Attribute' );
+ attritypeelement.TextContent( "String" );
+ attricolumnelement.AppendChild( attrinameelement );
+ attricolumnelement.AppendChild( attritypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( attricolumnelement );
+ traverse ( table, Column, 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, Cell, cell, cell.Row().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.Row();
+ //Product
+ product1cellElement := xmlDOM.CreateElement( "cell" );
+ product1cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product1cellElement );
+
+ product2cellElement := xmlDOM.CreateElement( "cell" );
+ product2cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product2cellElement );
+
+ product3cellElement := xmlDOM.CreateElement( "cell" );
+ product3cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product3cellElement );
+
+ product4cellElement := xmlDOM.CreateElement( "cell" );
+ product4cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product4cellElement );
+
+ product5cellElement := xmlDOM.CreateElement( "cell" );
+ product5cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product5cellElement );
+
+ product6cellElement := xmlDOM.CreateElement( "cell" );
+ product6cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product6cellElement );
+
+ product7cellElement := xmlDOM.CreateElement( "cell" );
+ product7cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product7cellElement );
+
+ product8cellElement := xmlDOM.CreateElement( "cell" );
+ product8cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product8cellElement );
+
+ product9cellElement := xmlDOM.CreateElement( "cell" );
+ product9cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product9cellElement );
+
+ product10cellElement := xmlDOM.CreateElement( "cell" );
+ product10cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product10cellElement );
+
+ product11cellElement := xmlDOM.CreateElement( "cell" );
+ product11cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product11cellElement );
+
+ product12cellElement := xmlDOM.CreateElement( "cell" );
+ product12cellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( product12cellElement );
+ //Attribute
+ //闀挎槬澶栫搴撳叆搴撹垂鐢�
+ ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrententercostcellElement.SetAttribute( "value", 'CCRentEnterCost' );
+ attricolumnelement.AppendChild( ccrententercostcellElement );
+ //闀挎槬澶栫搴撳嚭搴撹垂鐢�
+ ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrentoutcostcellElement.SetAttribute( "value", 'CCRentOutCost' );
+ attricolumnelement.AppendChild( ccrentoutcostcellElement );
+ //闀挎槬闀块�旇繍杈撹垂鐢�
+ cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
+ cclongtranscostcellElement.SetAttribute( "value", 'CCLongTransCost' );
+ attricolumnelement.AppendChild( cclongtranscostcellElement );
+ //闀挎槬鐭�旇繍杈撹垂鐢�
+ ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ ccshorttranscostcellElement.SetAttribute( "value", 'CCShortTransCost' );
+ attricolumnelement.AppendChild( ccshorttranscostcellElement );
+ //闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
+ ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrentstoragecostcellElement.SetAttribute( "value", 'CCRentStorageCost' );
+ attricolumnelement.AppendChild( ccrentstoragecostcellElement );
+ //澶ц繛澶栫搴撳叆搴撹垂鐢�
+ dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrententercostcellElement.SetAttribute( "value", 'DLRentEnterCost' );
+ attricolumnelement.AppendChild( dlrententercostcellElement );
+ //澶ц繛澶栫搴撳嚭搴撹垂鐢�
+ dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrentoutcostcellElement.SetAttribute( "value", 'DLRentOutCost' );
+ attricolumnelement.AppendChild( dlrentoutcostcellElement );
+ //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
+ factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ factorytorenttranscostcellElement.SetAttribute( "value", 'FactoryToRentTransCost' );
+ attricolumnelement.AppendChild( factorytorenttranscostcellElement );
+ //澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
+ dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrentstoragecostcellElement.SetAttribute( "value", 'DLRentStorageCost' );
+ attricolumnelement.AppendChild( dlrentstoragecostcellElement );
+ //棰勮鎬昏垂鐢�
+ estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
+ estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
+ attricolumnelement.AppendChild( estimatedtotalcostcellElement );
+ //绯绘暟
+ coefficientcellElement := xmlDOM.CreateElement( "cell" );
+ coefficientcellElement.SetAttribute( "value", 'Coefficient' );
+ attricolumnelement.AppendChild( coefficientcellElement );
+ //鎬昏垂鐢�
+ totalcostcellElement := xmlDOM.CreateElement( "cell" );
+ totalcostcellElement.SetAttribute( "value", 'TotalCost' );
+ attricolumnelement.AppendChild( totalcostcellElement );
+ }
+ //闀挎槬澶栫搴撳叆搴撹垂鐢�
+ ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrententercostcellElement.SetAttribute( "value", [String]c.CCRentEnterCost() );
+ columnelement.AppendChild( ccrententercostcellElement );
+ //闀挎槬澶栫搴撳嚭搴撹垂鐢�
+ ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrentoutcostcellElement.SetAttribute( "value", [String]c.CCRentOutCost() );
+ columnelement.AppendChild( ccrentoutcostcellElement );
+ //闀挎槬闀块�旇繍杈撹垂鐢�
+ cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
+ cclongtranscostcellElement.SetAttribute( "value", [String]c.CCLongTransCoat() );
+ columnelement.AppendChild( cclongtranscostcellElement );
+ //闀挎槬鐭�旇繍杈撹垂鐢�
+ ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ ccshorttranscostcellElement.SetAttribute( "value", [String]c.CCShortTransCost() );
+ columnelement.AppendChild( ccshorttranscostcellElement );
+ //闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
+ ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ ccrentstoragecostcellElement.SetAttribute( "value", [String]c.CCRentStorageCost() );
+ columnelement.AppendChild( ccrentstoragecostcellElement );
+ //澶ц繛澶栫搴撳叆搴撹垂鐢�
+ dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrententercostcellElement.SetAttribute( "value", [String]c.DLRentEnterCost() );
+ columnelement.AppendChild( dlrententercostcellElement );
+ //澶ц繛澶栫搴撳嚭搴撹垂鐢�
+ dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrentoutcostcellElement.SetAttribute( "value", [String]c.DLRentOutCost() );
+ columnelement.AppendChild( dlrentoutcostcellElement );
+ //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
+ factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
+ factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToDLRentTransCost() );
+ columnelement.AppendChild( factorytorenttranscostcellElement );
+ //澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
+ dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
+ dlrentstoragecostcellElement.SetAttribute( "value", [String]c.DLRentStorageCost() );
+ columnelement.AppendChild( dlrentstoragecostcellElement );
+ //棰勮鎬昏垂鐢�
+ estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
+ estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
+ columnelement.AppendChild( estimatedtotalcostcellElement );
+ //绯绘暟
+ coefficientcellElement := xmlDOM.CreateElement( "cell" );
+ coefficientcellElement.SetAttribute( "value", [String]c.Coefficient() );
+ columnelement.AppendChild( coefficientcellElement );
+ //鎬昏垂鐢�
+ totalcostcellElement := xmlDOM.CreateElement( "cell" );
+ totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
+ columnelement.AppendChild( totalcostcellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( DLEngineLogisticsCostReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..e912c3f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultAllUnit () const declarative as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return '<All>';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..4a17ee3
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultCCUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return '闀挎槬宸ュ巶';
+ //return 'Assembly Plant (France)';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..36d2be8
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultDLUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return '澶ц繛宸ュ巶';
+ //return 'Assembly Plant (France)';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..5f29f58
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/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 'CC engine logistics cost reports';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-14-2024 (created)
+ return '浜ф垚鍝�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl
new file mode 100644
index 0000000..d1d47c2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointCCRent () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬澶栫搴�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl
new file mode 100644
index 0000000..3bd2cd6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointDLLine () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ //return '闀挎槬瑁呴厤绾胯竟搴�';
+ return '澶ц繛瑁呴厤绾�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl
new file mode 100644
index 0000000..76f532f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointDLRent () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶ц繛澶栫搴�';
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..8bb3940
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -0,0 +1,264 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-12-2024 (created)
+ owner.DLEngineLogisticsCostReport( relflush );
+ produtparent := DLEngineLogisticsCostReport::GetDefaultProductParent();
+ name := DLEngineLogisticsCostReport::GetDefaultName();
+ allunit := DLEngineLogisticsCostReport::GetDefaultAllUnit();
+ ccunit := DLEngineLogisticsCostReport::GetDefaultCCUnit();
+ dlunit := DLEngineLogisticsCostReport::GetDefaultDLUnit();
+ dlline := DLEngineLogisticsCostReport::GetStockingPointDLLine();
+ ccrent := DLEngineLogisticsCostReport::GetStockingPointCCRent();
+ dlrent := DLEngineLogisticsCostReport::GetStockingPointCCRent();
+
+ startofplanning := owner.StartOfPlanning().Date();
+ //startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ table := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
+ showtable := owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+ search := owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
+
+ products := construct( Product_MPs );
+
+ table.GenerateColumn( owner );
+ //鍙戝線闀挎槬鐨勯攢閲忛渶瑕佸湪trip plan閲岄潰鎵惧埌璧峰搴撳瓨鐐逛负澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撶殑浜у搧 绠楀嚭鍙戝線闀挎槬鐨勯攢閲忓悗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑鍖呰瀹归噺鍜岄暱鏄ュ叆搴撳崟浠凤紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+ //鍦� trip plan閲屾壘鍒板ぇ杩炶閰嶇嚎杈瑰簱鍒板ぇ杩炲绉熷簱鐨勮繍杈撴暟閲�
+ traverse( owner, Unit.Lane.LaneLeg, laneleg ){
+ //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛瑁呴厤绾胯竟搴�
+ originsp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
+ isdlspline := table.IsInUnit( originsp, dlline );
+ //鐩殑鍦版槸鍚︽槸闀挎槬澶栫搴�
+ destisp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
+ isccrent := table.IsInUnit( destisp, ccrent );
+ //鐩殑鍦版槸鍚︽槸澶ц繛澶栫搴�
+ destisp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
+ isdlrent := table.IsInUnit( destisp, dlrent );
+ if( isdlspline and ( isccrent or isdlrent ) ){
+ traverse( laneleg, Trip, trip, trip.Departure().Date() < startofnextyear ){//鐢变簬闇�瑕佽�冭檻浜у搧杩愯緭lead time锛屾瘡涓湀鐨勬眹鎬绘暟鎹渶瑕佹帹杩熶袱澶╄繘琛岃绠�
+ periodtime := trip.Departure().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+ traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ quantity := [Number]pit.Quantity();
+ row := table.GetRow( pit.ProductID() );
+ product := pit.Product_MP();
+ productparents := product.GetAllParent();
+ if( isccrent ){//鐩殑鍦版槸闀挎槬澶栫搴�
+ //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ products.Add( product );
+ cell := selectobject( row, Cell, cell, cell.Column() = column );
+ cell.CCRentQuantity( cell.CCRentQuantity() + quantity );
+ //闀挎槬澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环
+ entercost := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+ //闀挎槬澶栫搴撳嚭搴撹垂鐢�: 鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环
+ outcost := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+ cell.CCRentEnterCost( cell.CCRentEnterCost() + entercost );
+ cell.CCRentOutCost( cell.CCRentOutCost() + outcost );
+ }
+ }
+ if( isdlrent ){//鐩殑鍦版槸澶ц繛澶栫搴�
+ //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = dlunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+ transcost := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = dlline
+ and trans.Destination() = dlrent
+ and exists( productparents, Elements, e, e.ID() = trans.Product() ) );
+ if( not isnull( enginecost ) and not isnull( transcost ) ){
+ products.Add( product );
+ cell := selectobject( row, Cell, cell, cell.Column() = column );
+ //杩愯緭鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环
+ cost := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
+ cell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + cost );
+ }
+ }
+ }
+ }
+ }
+ }
+ //澶ц繛澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝佷骇閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�
+ traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//璐㈠姟浜ч噺鎶ヨ〃闈炲鍏�
+ traverse( source, FinancialProductionReport, report, not report.IsShow() ){//璐㈠姟浜ч噺鎶ヨ〃涓嶆樉绀�
+ traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//璐㈠姟浜ч噺鎶ヨ〃閲岀殑澶ц繛浜ч噺, 涓嶄负0
+ ccrow := table.GetRow( row.Name() );
+ product := row.Product_MP();
+ products.Add( product );
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = dlunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
+ column := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
+ //澶ц繛澶栫搴撳叆搴撹垂鐢�
+ ccrow.SetDLRentEnterCost( column, enginecost, cell );
+ }
+ }
+ }
+ }
+ }
+ }
+ //澶ц繛澶栫搴撳嚭搴撹垂鐢細鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环锛屽嚭搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝侀攢閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�
+ traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//璐㈠姟閿�閲忔姤琛ㄩ潪瀵煎叆
+ traverse( source, FinancialSalesReport, report, not report.IsShow() ){//璐㈠姟閿�閲忔姤琛ㄤ笉鏄剧ず
+ traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' ) ){//璐㈠姟閿�閲忔姤琛ㄩ噷鐨勫ぇ杩炰骇閲�, 涓嶄负0
+ ccrow := table.GetRow( row.Name() );
+ product := row.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ products.Add( product );
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = dlunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' ){
+ column := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
+ //澶ц繛澶栫搴撳嚭搴撹垂鐢�
+ ccrow.SetDLRentOutCost( column, enginecost, cell );
+ }
+ }
+ }
+ }
+ }
+ }
+ //闀挎槬闀块�旇繍杈撹垂鐢細璋冩嫧鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环锛岃皟鎷ㄨ鍒掗噷鎵惧埌璇ヤ骇鍝佷粠DL鍒癈C鐨勮皟鎷ㄦ暟閲忥紝鍗宠捣濮嬪湴澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撳搴旂殑杩愯緭鏁伴噺锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃鎵惧埌瀵瑰簲鐨勫寘瑁呭閲忥紝鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲忥紝鐢ㄥ叕寮忚绠楀緱鍑虹粨鏋滐紝鏈堝害杩涜姹囨��
+ traverse( owner, TransferPlanRow, tprow, tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
+ product := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+ transcost := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = dlline
+ and trans.Destination() = dlrent
+ and exists( productparents, Elements, e, e.ID() = trans.Product() ) );
+ if( not isnull( enginecost ) and not isnull( transcost ) ){
+ row := table.GetRow( product.ID() );
+ products.Add( product );
+ traverse( tprow,TransferPlanCell, tpcell ){
+ periodtime := tpcell.TransferPlanColumn().ColumnDate().StartOfMonth();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+
+ cost := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
+ cell := selectobject( row, Cell, cell, cell.Column() = column );
+ cell.CCLongTransCoat( cell.CCLongTransCoat() + cost );
+ }
+ }
+ }
+ }
+ //闀挎槬鐭�旇繍杈撹垂鐢細瀹㈡埛闇�姹傛暟閲�/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环锛屽鎴烽渶姹傛暟閲忓彇鑷猣orecast閲宻ales segment涓洪暱鏄ョ殑鏁伴噺姹囨�伙紝鍐嶇敤鍏紡璁$畻锛屾湀搴﹁繘琛屾眹鎬伙紙鍙栧鎴烽渶姹傛暟閲忔崲绠楁垚杞︽锛�
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear ){
+ salessegment := forecast.SalesSegment_MP();
+ parentsalessegments := salessegment.GetAllParent();
+ //鏄惁灞炰簬闀挎槬
+ iscc := salessegment.Name() = ccunit or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = ccunit );
+ if( iscc ){
+ product := forecast.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ row := table.GetRow( forecast.ProductID() );
+ products.Add( forecast.Product_MP() );
+
+ //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
+ periodtime := psdip.StartDate().StartOfMonth();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ // info( '-------------------------', periodname, periodtime );
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+ // info( '-------------------------', column.Name() );
+ cost := ceil( [Number]psdip.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+ cell := selectobject( row, Cell, cell, cell.Column() = column );
+ cell.CCShortTransCost( cell.CCShortTransCost() + cost );
+ }
+ }
+ }
+ }
+ }
+ //澶栫搴撲粨鍌ㄨ垂鐢細浠撳偍鏁伴噺/鍖呰瀹归噺*浠撳偍鍗曚环锛屽湪Actual inventories閲屽彇鍒伴暱鏄ュ绉熷簱/澶ц繛澶栫搴撹鍙戝姩鏈虹殑浠撳偍閲忥紝鏍规嵁鍙戝姩鏈哄彿鎵惧埌瀵瑰簲鐨凣eneration 鍜屾í绾靛埗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑浠撳偍鍗曚环鍜屽寘瑁呭閲忥紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+ traverse( owner, StockingPoint_MP, stockingpoint ){
+ unit := stockingpoint.Unit();
+ parentunits := unit.GetAllParent();
+ //鏄惁灞炰簬闀挎槬澶栫搴�
+ isccrent := stockingpoint.ID() = ccrent or unit.ID() = ccrent or exists( parentunits, Elements, punit, punit.ID() = ccrent );
+ //鏄惁灞炰簬澶ц繛澶栫搴�
+ isdlrent := stockingpoint.ID() = dlrent or unit.ID() = dlrent or exists( parentunits, Elements, punit, punit.ID() = dlrent );
+ if( isccrent or isdlrent ){
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() ){
+ //鑾峰彇琛�
+ product := pisp.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ row := table.GetRow( pisp.ProductID() );
+ products.Add( pisp.Product_MP() );
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
+ periodtime := pispip.Start().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+ cell := selectobject( row, Cell, cell, cell.Column() = column );
+
+ if( isccrent ){
+ //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = ccunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ cost := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+ cell.CCRentStorageCost( cell.CCRentStorageCost() + cost );
+ }
+ } else {
+ //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+ enginecost := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
+ and engine.MLB_MQB() = product.MQBMLB()
+ and engine.Factory() = dlunit
+ and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
+ if( not isnull( enginecost ) ){
+ cost := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+ cell.DLRentStorageCost( cell.DLRentStorageCost() + cost );;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ rows := selectsortedset( table, Row, row, row.Name() );
+ i := 0;
+ traverse( rows, Elements, e ){
+ e.RowNr( i );
+ i := i + 1;
+ }
+ info( '-------------------------------------end---------------------------------' );
+ //
+ showtable.Generate( search, products );
+ *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport\0430.qbl"
new file mode 100644
index 0000000..04e2d69
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport\0430.qbl"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DLEngineLogisticsCostReport
+{
+ #keys: '5[415136.0.992900071][415136.0.992900069][0.0.0][415136.0.992900070][415136.0.992900072]'
+ BaseType: Object
+ Description: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ StructuredName: 'DLEngineLogisticsCostReports'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_Name.qbl
new file mode 100644
index 0000000..c4671b2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.986400984][415136.0.986400983][415136.0.986400985]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_RowNr.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..3be673c
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Attribute_RowNr.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.986616244][415136.0.986616243][415136.0.986616245]'
+ Description: '琛屽彿'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
new file mode 100644
index 0000000..3dfa50b
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ CCEngineLogisticsCostColumn column
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := this.Cell( relnew, RentEnterCost := 0
+ , RentOutCost := 0
+ , FactoryToRentTransCost := 0
+ , RentStorageCost := 0 );
+
+ column.Cell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl
new file mode 100644
index 0000000..5f18e61
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetFactoryToRentTransCost (
+ CCEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.FactoryToRentTransCost() + quantity;
+ cell.FactoryToRentTransCost( value );
+ *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl"
new file mode 100644
index 0000000..9e1a6db
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRentEnterCost (
+ CCEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.RentEnterCost() + quantity;
+ cell.RentEnterCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl
new file mode 100644
index 0000000..4bc1338
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRentOutCost (
+ CCEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.RentOutCost() + quantity;
+ cell.RentOutCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl
new file mode 100644
index 0000000..ed29d5b
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRentStorageCost (
+ CCEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.RentStorageCost() + quantity;
+ cell.RentStorageCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/_ROOT_Type_CCEngineLogisticsCostRow.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/_ROOT_Type_CCEngineLogisticsCostRow.qbl
new file mode 100644
index 0000000..e879ecf
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/_ROOT_Type_CCEngineLogisticsCostRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CCEngineLogisticsCostRow
+{
+ #keys: '5[415136.0.986400975][415136.0.986400973][0.0.0][415136.0.986400974][415136.0.986400976]'
+ BaseType: Object
+ Description: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄨ'
+ StructuredName: 'CCEngineLogisticsCostRows'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl
new file mode 100644
index 0000000..b82b5a4
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.992900087][415136.0.992900086][415136.0.992900088]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl
new file mode 100644
index 0000000..c2b95d9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.992900090][415136.0.992900089][415136.0.992900091]'
+ Description: '琛屽彿'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
new file mode 100644
index 0000000..ce80682
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ DLEngineLogisticsCostColumn column
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := this.Cell( relnew, CCRentEnterCost := 0
+ , CCRentOutCost := 0
+ , CCLongTransCoat := 0
+ , CCShortTransCost := 0
+ , CCRentStorageCost := 0
+ , DLRentEnterCost := 0
+ , DLRentOutCost := 0
+ , FactoryToDLRentTransCost := 0
+ , DLRentStorageCost := 0 );
+
+ column.Cell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
new file mode 100644
index 0000000..ac5cbcf
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetDLRentEnterCost (
+ DLEngineLogisticsCostColumn column,
+ LogisticsCostEngine enginecost,
+ FinancialProductionCell fpcell
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+ quantity := [Number]fpcell.Value() - cell.CCRentQuantity();
+ //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
+ cost := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+
+ value := cell.DLRentEnterCost() + cost;
+ cell.DLRentEnterCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
new file mode 100644
index 0000000..3d8b591
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetDLRentOutCost (
+ DLEngineLogisticsCostColumn column,
+ LogisticsCostEngine enginecost,
+ FinancialSalesCell fscell
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+ quantity := [Number]fscell.Value() - cell.CCRentQuantity();
+ //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
+ cost := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+
+ value := cell.DLRentOutCost() + cost;
+ cell.DLRentOutCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
new file mode 100644
index 0000000..784e4a2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetFactoryToRentTransCost (
+ DLEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.FactoryToDLRentTransCost() + quantity;
+ cell.FactoryToDLRentTransCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
new file mode 100644
index 0000000..4189c40
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRentOutCost (
+ DLEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.CCRentOutCost() + quantity;
+ cell.CCRentOutCost( value );
+ *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
new file mode 100644
index 0000000..908dae6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRentStorageCost (
+ DLEngineLogisticsCostColumn column,
+ Number quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ value := cell.CCRentStorageCost() + quantity;
+ cell.CCRentStorageCost( value );
+ *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow\0430.qbl"
new file mode 100644
index 0000000..7af48a3
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow\0430.qbl"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DLEngineLogisticsCostRow
+{
+ #keys: '5[415136.0.992900084][415136.0.992900082][0.0.0][415136.0.992900083][415136.0.992900085]'
+ BaseType: Object
+ Description: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄨ'
+ StructuredName: 'DLEngineLogisticsCostRows'
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Generation.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Generation.qbl
new file mode 100644
index 0000000..9fe72ca
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[415136.0.986844795][415136.0.986844794][415136.0.986844796]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_MqbMlb.qbl
new file mode 100644
index 0000000..9cbf262
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_MqbMlb.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MqbMlb
+{
+ #keys: '3[415136.0.986844798][415136.0.986844797][415136.0.986844799]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Power.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Power.qbl
new file mode 100644
index 0000000..5e899bd
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/Attribute_Power.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Power
+{
+ #keys: '3[415136.0.986844801][415136.0.986844800][415136.0.986844802]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Generation.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl
new file mode 100644
index 0000000..78982c5
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MqbMlb
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Power.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Power.qbl
new file mode 100644
index 0000000..4922731
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/DefaultValue_Power.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Power
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostSearch/_ROOT_Type_CCEngineLogisticsCostSearch.qbl b/_Main/BL/Type_CCEngineLogisticsCostSearch/_ROOT_Type_CCEngineLogisticsCostSearch.qbl
new file mode 100644
index 0000000..a622989
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostSearch/_ROOT_Type_CCEngineLogisticsCostSearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CCEngineLogisticsCostSearch
+{
+ #keys: '5[415136.0.986844792][415136.0.986844790][0.0.0][415136.0.986844791][415136.0.986844793]'
+ BaseType: Object
+ Description: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄦ煡璇㈢被'
+ StructuredName: 'CCEngineLogisticsCostSearchs'
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl
new file mode 100644
index 0000000..44c29c6
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[415136.0.992900097][415136.0.992900096][415136.0.992900098]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl
new file mode 100644
index 0000000..31d1589
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MqbMlb
+{
+ #keys: '3[415136.0.992900100][415136.0.992900099][415136.0.992900101]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl
new file mode 100644
index 0000000..abbed13
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Power
+{
+ #keys: '3[415136.0.992900103][415136.0.992900102][415136.0.992900104]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl
new file mode 100644
index 0000000..78982c5
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MqbMlb
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl
new file mode 100644
index 0000000..4922731
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Power
+}
diff --git a/_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl b/_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl
new file mode 100644
index 0000000..20b6977
--- /dev/null
+++ b/_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type DLEngineLogisticsCostSearch
+{
+ #keys: '5[415136.0.992900094][415136.0.992900092][0.0.0][415136.0.992900093][415136.0.992900095]'
+ BaseType: Object
+ Description: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛ㄦ煡璇㈢被'
+ StructuredName: 'DLEngineLogisticsCostSearchs'
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
index 3c3e269..db2c717 100644
--- a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -59,7 +59,6 @@
for( rownr := rownr; rownr < modelsnr; rownr ++ ){
EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false );
- rownr := rownr + 1;
}
showrowinventory := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '搴撳瓨', rownr, false );
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
index 2948919..cc879a1 100644
--- a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
@@ -5,6 +5,6 @@
TextBody:
[*
// 鐢勫叞楦� Jun-25-2024 (created)
- return 'Machining pipelines';
+ return 'Engine pipelines';
*]
}
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-14-2024 (created)
+ return '浜ф垚鍝�';
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
index 727038c..0d45aa5 100644
--- a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -10,10 +10,11 @@
owner.EnginePipelineSource( relflush );
//ccunit := EnginePipelineReport::GetDefaultCCUnit();
//dlunit := EnginePipelineReport::GetDefaultDLUnit();
- ccalineunit := FinancialProductionReport::GetDefaultCCALineUnit();
- dlalienunit := FinancialProductionReport::GetDefaultDLALineUnit()
- ccmplineunit := FinancialProductionReport::GetDefaultCCMPLineUnit()
- dlmplineunit := FinancialProductionReport::GetDefaultDLMPLineUnit();
+ productparent := EnginePipelineReport::GetDefaultProductParent();
+ ccalineunit := EnginePipelineReport::GetDefaultCCALineUnit();
+ dlalienunit := EnginePipelineReport::GetDefaultDLALineUnit()
+ ccmplineunit := EnginePipelineReport::GetDefaultCCMPLineUnit()
+ dlmplineunit := EnginePipelineReport::GetDefaultDLMPLineUnit();
//allunit := EnginePipelineReport::GetDefaultAllUnit();
source := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
table := source.Report( relnew, ID := source.Name(), Name := source.Name() );
@@ -35,18 +36,20 @@
//鏄惁灞炰簬澶ц繛宸ュ巶
isdl := unit.ID() = dlalienunit or unit.ID() = dlmplineunit or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
- traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
- weekstart := owner.StartOfPlanning().Date();
- pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
- and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem()
+ and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
+ and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
+ weekstart := owner.StartOfPlanning().Date();
+ pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
+ and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
row := table.GetRow( pisp.ProductID() );
traverse( pispips, Elements, pispip ){
//澶�
- daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
+ daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
//鍛�
- weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
- supplyquantity := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
- inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
+ weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+ supplyquantity := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
+ inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
//浜ч噺鏄姞鎬�
if( iscc or isdl ){
row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
@@ -54,10 +57,10 @@
}
//搴撳瓨闇�瑕佸彇鏈�鍚庝竴澶�
row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
-
+
if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
- weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
-
+ weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
+
row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
}
}
@@ -65,21 +68,26 @@
}
//鐢熸垚闇�姹傛暟鎹�
- traverse( owner, SalesDemand.astype( Forecast ), forecast ){
- row := table.GetRow( forecast.ProductID() );
- weekstart := owner.StartOfPlanning().Date();
- traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < endperiod.StartDate() and forecast.Quantity() <> 0
+ and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
+ and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
+ row := table.GetRow( forecast.ProductID() );
+ weekstart := owner.StartOfPlanning().Date();
+ traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
//澶�
- daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
+ daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
//鍛�
- weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
-
+ weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+
if( not isnull( daycolumn ) ){
row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
}
if( not isnull( weekcolumn ) ){
row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
}
+ if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){
+ weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
+ }
}
}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl b/_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl
index daa564b..194f329 100644
--- a/_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl
@@ -13,6 +13,7 @@
if( isnull( row ) ){
//鍒濆鍖栧崟鍏冩牸
row := this.FinancialProductionRow( relnew, Name := product.ID(), Unit := unit );
+ row.Product_MP( relset, product );
traverse( this, FinancialProductionColumn, column ){
row.Initialize( column, product, unit );
}
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
index a7ebc07..dc85d48 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -43,17 +43,15 @@
//鏄惁灞炰簬澶ц繛宸ュ巶
isdl := unit.ID() = dlalienunit or unit.ID() = dlmplineunit or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
if( iscc or isdl ){
- traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() ){
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf()
+ and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
//鑾峰彇宸ュ巶琛�
factoryrow := table.GetRowByUnit( pisp.Product_MP(), ifexpr( iscc, ccunit, dlunit ) );
//鑾峰彇鍚堣琛�
allrow := table.GetRowByUnit( pisp.Product_MP(), allunit );
products.Add( pisp.Product_MP() );
//褰損roduct planning鐨勬棩鏈熷尯闂村湪闇�瑕佺殑鏃ユ湡鍖洪棿鍐�
- traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
- // and ( ( pispip.Period_MP().StartDate().StartOfMonth() = startofplanning.StartOfMonth() and currentperiods.Find( pispip.Period_MP() ) >= 0 )
- // or ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() and pispip.Period_MP().StartDate() < startofnextyear ) )
- ){
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ){
periodtime := pispip.Start().StartOfMonth().Date();
periodname := periodtime.Format( "M2/D2/Y" );
quantity := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl b/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
index 82d945f..aeb1ee4 100644
--- a/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
@@ -12,6 +12,7 @@
if( isnull( row ) ){
row := this.FinancialSalesRow( relnew, Name := product.ID(), Unit := salessegment );
+ row.Product_MP( relset, product );
//鍒濆鍖栧崟鍏冩牸
row.InitializeCell( this, product );
}
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
index e2ac2ed..e521df4 100644
--- a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -32,7 +32,8 @@
table.GenerateColumn( owner );
//棣栧厛鍦╢orecast鐣岄潰鏌ユ壘sales segment涓洪暱鏄ョ殑鎵�鏈夐渶姹傦紝璇嗗埆鍑篗LB鐨勬墍鏈変骇鍝侊紝姣忎釜浜у搧鎸夋湀姹囨�婚渶姹傛暟閲�
- traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear ){
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear and forecast.Quantity() <> 0
+ and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
salessegment := forecast.SalesSegment_MP();
parentsalessegments := salessegment.GetAllParent();
//鏄惁灞炰簬闀挎槬
@@ -50,10 +51,8 @@
//鑾峰彇宸ュ巶琛�
factoryrow := table.GetRow( ifexpr( iscc and forecast.Product_MP().MQBMLB() = 'MLB', ccunit, dlunit ), product );
- if( products.Find( product ) < 0 ){
- products.Add( product );
- }
- traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
+ products.Add( product );
+ traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
periodtime := psdip.StartDate().StartOfMonth();
periodname := periodtime.Format( "M2/D2/Y" );
// info( '-------------------------', periodname, periodtime );
@@ -73,10 +72,13 @@
//鏄惁灞炰簬闀挎槬瑁呴厤绾�
// iscc := unit.ID() = ccspline or exists( parentunits, Elements, punit, punit.ID() = ccspline );
if( table.IsInUnit( stockingpoint, ccspline ) ){
- traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB' ){//浜у搧涓篗QB
- allrow := table.GetRow( allunit, pisp.Product_MP() );
- ccrow := table.GetRow( ccunit, pisp.Product_MP() );
- traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB'
+ and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ) ){//浜у搧涓篗QB
+ product := pisp.Product_MP();
+ allrow := table.GetRow( allunit, product );
+ ccrow := table.GetRow( ccunit, product );
+ products.Add( product );
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ){
periodtime := pispip.Start().StartOfMonth().Date();
periodname := periodtime.Format( "M2/D2/Y" );
column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
@@ -98,18 +100,23 @@
destisp := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
isccrent := table.IsInUnit( destisp, ccrent );
if( isdlspline and isccrent ){
- traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){
- periodtime := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
+ traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead and exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 ) ){
+ // periodtime := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
+ periodtime := trip.Departure().StartOfMonth().Date();
periodname := periodtime.Format( "M2/D2/Y" );
column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
- traverse( trip, ProductInTrip, pit ){
- quantity := [Number]pit.Quantity();//鍥涜垗浜斿叆
- dlrow := table.GetRow( dlunit, pit.Product_MP() );
- dlrow.Initialize( column, quantity );//姹囨�绘暟閲�
-
- allrow := table.GetRow( allunit, pit.Product_MP() );
- allrow.Initialize( column, quantity );
+ if( not isnull( column ) ){
+ traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
+ product := pit.Product_MP();
+ products.Add( product );
+ quantity := [Number]pit.Quantity();//鍥涜垗浜斿叆
+ dlrow := table.GetRow( dlunit, pit.Product_MP() );
+ dlrow.Initialize( column, quantity );//姹囨�绘暟閲�
+
+ allrow := table.GetRow( allunit, pit.Product_MP() );
+ allrow.Initialize( column, quantity );
+ }
}
}
}
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..1cff05e
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Aug-14-2024 (created)
+ return '鏈哄姞浠�';
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
index 1a69f9f..3b9867c 100644
--- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
[*
// 鐢勫叞楦� Jun-24-2024 (created)
owner.FinancialProductionSource( relflush );
+ productparent := MachiningPipelineReport::GetDefaultProductParent();
ccunit := MachiningPipelineReport::GetDefaultCCUnit();
dlunit := MachiningPipelineReport::GetDefaultDLUnit();
//allunit := EnginePipelineReport::GetDefaultAllUnit();
@@ -39,39 +40,45 @@
//鏄惁灞炰簬澶ц繛鏈哄姞浜х嚎
isdlproduction := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
if( iscc or isdl ){
- traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
- row := table.GetRow( pisp.ProductID() );
-
- weekstart := owner.StartOfPlanning().Date();
- pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
- and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
-
- traverse( pispips, Elements, pispip ){
- //澶�
- daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
- //鍛�
- weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+ traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem()
+ and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
+ and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
+ product := pisp.Product_MP();
+ productparents := product.GetAllParent();
+ if( exists( productparents, Elements, e, e.ID() = productparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+ row := table.GetRow( pisp.ProductID() );
+ products.Add( pisp.Product_MP() );
+ weekstart := owner.StartOfPlanning().Date();
+ pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
+ and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ), pispip.Start() );
- supplyquantity := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
- inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
-
- //瑁呴厤绾�
- if( isccassemnly or isdlassemnly ){
- row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
- row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
- }
-
- //鏈哄姞绾�
- if( isccproduction or isdlproduction ){
- row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
- row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
- }
- //搴撳瓨
- if( iscc or isdl ){
- row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
- if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
- weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
- row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
+ traverse( pispips, Elements, pispip ){
+ //澶�
+ daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
+ //鍛�
+ weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+
+ supplyquantity := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
+ inventoryquantity:= [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
+
+ //瑁呴厤绾�
+ if( isccassemnly or isdlassemnly ){
+ row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
+ row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
+ }
+
+ //鏈哄姞绾�
+ if( isccproduction or isdlproduction ){
+ row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
+ row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
+ }
+ //搴撳瓨
+ if( iscc or isdl ){
+ row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
+ if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
+ weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
+ row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
+ }
}
}
}
diff --git a/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
new file mode 100644
index 0000000..55dd648
--- /dev/null
+++ b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation CCEngineLogisticsCostCell
+{
+ AttributeRepresentation Coefficient
+ {
+ AttributeKey: '[415136.0.986844757]'
+ Synonym: '绯绘暟'
+ }
+ AttributeRepresentation EstimatedTotalCost
+ {
+ AttributeKey: '[415136.0.986844738]'
+ Synonym: '棰勮鎬昏垂鐢�'
+ }
+ AttributeRepresentation FactoryToRentTransCost
+ {
+ AttributeKey: '[415136.0.986844780]'
+ Synonym: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
+ }
+ AttributeRepresentation RentEnterCost
+ {
+ AttributeKey: '[415136.0.986881422]'
+ Synonym: '澶栫搴撳叆搴撹垂鐢�'
+ }
+ AttributeRepresentation RentOutCost
+ {
+ AttributeKey: '[415136.0.986881432]'
+ Synonym: '澶栫搴撳嚭搴撹垂鐢�'
+ }
+ AttributeRepresentation RentStorageCost
+ {
+ AttributeKey: '[415136.0.986881445]'
+ Synonym: '澶栫搴撲粨鍌ㄨ垂鐢�'
+ }
+ AttributeRepresentation TotalCost
+ {
+ AttributeKey: '[415136.0.986844770]'
+ Synonym: '鎬昏垂鐢�'
+ }
+ RelationRepresentation Column { RelationKey: '[415136.0.986881392]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
new file mode 100644
index 0000000..6efbdbf
--- /dev/null
+++ b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
@@ -0,0 +1,66 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation DLEngineLogisticsCostCell
+{
+ AttributeRepresentation CCLongTransCoat
+ {
+ AttributeKey: '[415136.0.992900331]'
+ Synonym: '闀挎槬闀块�旇繍杈撹垂鐢�'
+ }
+ AttributeRepresentation CCRentEnterCost
+ {
+ AttributeKey: '[415136.0.992900044]'
+ Synonym: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
+ }
+ AttributeRepresentation CCRentOutCost
+ {
+ AttributeKey: '[415136.0.992900047]'
+ Synonym: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
+ }
+ AttributeRepresentation CCRentStorageCost
+ {
+ AttributeKey: '[415136.0.992900050]'
+ Synonym: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
+ }
+ AttributeRepresentation CCShortTransCost
+ {
+ AttributeKey: '[415136.0.992900341]'
+ Synonym: '闀挎槬鐭�旇繍杈撹垂鐢�'
+ }
+ AttributeRepresentation Coefficient
+ {
+ AttributeKey: '[415136.0.992900035]'
+ Synonym: '绯绘暟'
+ }
+ AttributeRepresentation DLRentEnterCost
+ {
+ AttributeKey: '[415136.0.992900241]'
+ Synonym: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
+ }
+ AttributeRepresentation DLRentOutCost
+ {
+ AttributeKey: '[415136.0.992900248]'
+ Synonym: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
+ }
+ AttributeRepresentation DLRentStorageCost
+ {
+ AttributeKey: '[415136.0.992900261]'
+ Synonym: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
+ }
+ AttributeRepresentation EstimatedTotalCost
+ {
+ AttributeKey: '[415136.0.992900038]'
+ Synonym: '棰勮鎬昏垂鐢�'
+ }
+ AttributeRepresentation FactoryToDLRentTransCost
+ {
+ AttributeKey: '[415136.0.992900041]'
+ Synonym: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
+ }
+ AttributeRepresentation TotalCost
+ {
+ AttributeKey: '[415136.0.992900053]'
+ Synonym: '鎬昏垂鐢�'
+ }
+ RelationRepresentation Column { RelationKey: '[415136.0.992900194]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/InventorySummaryCell.qrp b/_Main/Sys/Repr/Global/InventorySummaryCell.qrp
new file mode 100644
index 0000000..bd2db27
--- /dev/null
+++ b/_Main/Sys/Repr/Global/InventorySummaryCell.qrp
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation InventorySummaryCell
+{
+ AttributeRepresentation AverageInventory
+ {
+ AttributeKey: '[415136.0.865305023]'
+ Synonym: '骞冲潎搴撳瓨'
+ }
+ AttributeRepresentation EndingInventory
+ {
+ AttributeKey: '[415136.0.865304923]'
+ Synonym: '鏈熸湯搴撳瓨'
+ }
+ AttributeRepresentation MaximumInventory
+ {
+ AttributeKey: '[415136.0.865304943]'
+ Synonym: '鏈�澶у簱瀛�'
+ }
+ AttributeRepresentation MinimumInventory
+ {
+ AttributeKey: '[415136.0.865304933]'
+ Synonym: '鏈�灏忓簱瀛�'
+ }
+ RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.865304766]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/MachiningPipelineCell.qrp b/_Main/Sys/Repr/Global/MachiningPipelineCell.qrp
new file mode 100644
index 0000000..0e40a27
--- /dev/null
+++ b/_Main/Sys/Repr/Global/MachiningPipelineCell.qrp
@@ -0,0 +1,51 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation MachiningPipelineCell
+{
+ AttributeRepresentation CCAssemblyPlanQty
+ {
+ AttributeKey: '[415136.0.886711536]'
+ Synonym: 'CC瑁呴厤璁″垝'
+ }
+ AttributeRepresentation CCInventoryQty
+ {
+ AttributeKey: '[415136.0.886711533]'
+ Synonym: 'CC搴撳瓨'
+ }
+ AttributeRepresentation CCProductionQty
+ {
+ AttributeKey: '[415136.0.886711530]'
+ Synonym: 'CC鐢熶骇璁″垝'
+ }
+ AttributeRepresentation CCTransferQty
+ {
+ AttributeKey: '[415136.0.894481175]'
+ Synonym: 'CC璋冩嫧璁″垝'
+ }
+ AttributeRepresentation DLAssemblyPlanQty
+ {
+ AttributeKey: '[415136.0.894481138]'
+ Synonym: 'DL瑁呴厤璁″垝'
+ }
+ AttributeRepresentation DLInventoryQty
+ {
+ AttributeKey: '[415136.0.894481161]'
+ Synonym: 'DL搴撳瓨'
+ }
+ AttributeRepresentation DLProductionQty
+ {
+ AttributeKey: '[415136.0.894481151]'
+ Synonym: 'DL鐢熶骇璁″垝'
+ }
+ AttributeRepresentation DLTransferQty
+ {
+ AttributeKey: '[415136.0.894481185]'
+ Synonym: 'DL璋冩嫧璁″垝'
+ }
+ AttributeRepresentation TotalInventoryQty
+ {
+ AttributeKey: '[415136.0.894481168]'
+ Synonym: 'CC+DL鎬诲簱瀛�'
+ }
+ RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.894469842]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 04a81af..25803c6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -11,8 +11,9 @@
BaseType: 'WebButton'
Properties:
[
+ Description: 'Financial production report'
Image: 'DOCUMENT_REFRESH'
- Label: 'Financial production report'
+ Label: '璐㈠姟浜ч噺鎶ヨ〃'
Taborder: 0
]
}
@@ -22,8 +23,9 @@
BaseType: 'WebButton'
Properties:
[
+ Description: 'Financial sales report'
Image: 'MONEY_COINS2'
- Label: 'Financial sales report'
+ Label: '璐㈠姟閿�閲忔姤琛�'
Taborder: 1
]
}
@@ -33,8 +35,9 @@
BaseType: 'WebButton'
Properties:
[
+ Description: 'Inventory summary report'
Image: 'DOCUMENT_CHECK_EDIT'
- Label: 'Inventory summary report'
+ Label: '搴撳瓨姹囨�绘姤琛�'
Taborder: 2
]
}
@@ -44,8 +47,9 @@
BaseType: 'WebButton'
Properties:
[
+ Description: 'Financial weekly report'
Image: 'DOCUMENT_DIRTY'
- Label: 'Financial weekly report'
+ Label: '闀挎槬鍛ㄦ姤鎶ヨ〃'
Taborder: 3
]
}
@@ -70,8 +74,9 @@
]
Properties:
[
+ Description: 'Pipeline report'
Image: 'DOCUMENT_CONNECTION'
- Label: 'Pipeline report'
+ Label: '绠$嚎鎶ヨ〃'
Taborder: 5
]
}
@@ -152,6 +157,21 @@
Taborder: 11
]
}
+ Component ButtonEngineLogisticsCostReport
+ {
+ #keys: '[415136.0.989557433]'
+ BaseType: 'WebButton'
+ Children:
+ [
+ #child: ContextMenuEngineLogisticsCostReport
+ ]
+ Properties:
+ [
+ Image: 'MONEY2'
+ Label: '鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ Taborder: 12
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
new file mode 100644
index 0000000..90dcee1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component ContextMenuEngineLogisticsCostReport
+{
+ #keys: '[415136.0.989557478]'
+ BaseType: 'WebContextMenu'
+ Children:
+ [
+ Component MenuCCEngineLogisticsCostReport
+ {
+ #keys: '[415136.0.989557479]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Description: 'CC engine logistics cost report'
+ Image: 'MONEY2'
+ Taborder: 0
+ Title: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ ]
+ }
+ Component MenuDLEngineLogisticsCostReport
+ {
+ #keys: '[415136.0.991620623]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Description: 'DL engine logistics cost report'
+ Image: 'MONEY2'
+ Taborder: 1
+ Title: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
index 6e53b06..3cd265a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
@@ -11,9 +11,10 @@
BaseType: 'WebMenu'
Properties:
[
+ Description: 'Engine pipeline report'
Image: 'DOCUMENT_CONNECTION'
Taborder: 0
- Title: 'Engine pipeline report'
+ Title: '鍙戝姩鏈虹绾挎姤琛�'
]
}
Component MenuMachiningPipelineReport
@@ -22,9 +23,10 @@
BaseType: 'WebMenu'
Properties:
[
+ Description: 'Machining pipeline report'
Image: 'DOCUMENT_CONNECTION'
Taborder: 1
- Title: 'Machining pipeline report'
+ Title: '鏈哄姞浠剁绾挎姤琛�'
]
}
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuCCEngineLogis.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuCCEngineLogis.def
new file mode 100644
index 0000000..3362b31
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuCCEngineLogis.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ContextMenuEngineLogisticsCostReport/MenuCCEngineLogisticsCostReport
+Response OnClick () id:Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuCCEngineLogisticsCostReport_OnClick
+{
+ #keys: '[415136.0.989557681]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "CC_engine_logistics_cost_report_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def
new file mode 100644
index 0000000..81ec434
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ContextMenuEngineLogisticsCostReport/MenuDLEngineLogisticsCostReport
+Response OnClick () id:Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogisticsCostReport_OnClick
+{
+ #keys: '[415136.0.993328236]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "DL_engine_logistics_cost_report_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def"
new file mode 100644
index 0000000..7474baa
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def"
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorTable id:MatrixEditorTable_358
+{
+ #keys: '[415136.0.989500591]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.989500592]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.989500593]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'CCEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Row.Cell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'RentEnterCost;RentOutCost;FactoryToRentTransCost;RentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
+ Column: 'Column'
+ Row: 'Row'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.989500594]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.989500595]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'CCEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Row'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.989500596]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.989500597]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'CCEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Column'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable_1
+ #child: matrixeditorContextMenuTable_1
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportHeader.def
new file mode 100644
index 0000000..c2ab378
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportHeader.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelCCEngineLogisticsCostReportHeader
+{
+ #keys: '[415136.0.989500449]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelCCEngineLogisticsCostReportSearch
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportSearch.def
new file mode 100644
index 0000000..ce604b5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelCCEngineLogisticsCostReportSearch.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component PanelCCEngineLogisticsCostReportSearch
+{
+ #keys: '[415136.0.989500450]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelExport_670
+ #child: PanelPower_653
+ #child: PanelMQBMLB_667
+ #child: PanelGeneration_969
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def"
new file mode 100644
index 0000000..bb0fe40
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def"
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelExport id:PanelExport_670
+{
+ #keys: '[415136.0.989500459]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonExport
+ {
+ #keys: '[415136.0.989500460]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 1
+ ]
+ }
+ Component ButtonSearch
+ {
+ #keys: '[415136.0.989500461]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'VIEW'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelGeneration\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelGeneration\043969.def"
new file mode 100644
index 0000000..98fd409
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelGeneration\043969.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelGeneration id:PanelGeneration_969
+{
+ #keys: '[415136.0.989500453]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[415136.0.989500454]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelMQBMLB\043667.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelMQBMLB\043667.def"
new file mode 100644
index 0000000..095d66d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelMQBMLB\043667.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelMQBMLB id:PanelMQBMLB_667
+{
+ #keys: '[415136.0.989500455]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslMQBMLB
+ {
+ #keys: '[415136.0.989500456]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelPower\043653.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelPower\043653.def"
new file mode 100644
index 0000000..8631fe8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelPower\043653.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPower id:PanelPower_653
+{
+ #keys: '[415136.0.989500457]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslPower
+ {
+ #keys: '[415136.0.989500458]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Power'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelTable\043211.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelTable\043211.def"
new file mode 100644
index 0000000..8bec6f3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelTable\043211.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable id:PanelTable_211
+{
+ #keys: '[415136.0.989500590]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable_358
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable\0431.def"
new file mode 100644
index 0000000..84c5a9d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
+{
+ #keys: '[415136.0.989500598]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixeditorContextMenuTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixeditorContextMenuTable\0431.def"
new file mode 100644
index 0000000..02ffa78
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_matrixeditorContextMenuTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
+{
+ #keys: '[415136.0.989500599]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
new file mode 100644
index 0000000..ef0c204
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: MatrixEditorTable_358
+Response OnUpdateValue (
+ CCEngineLogisticsCostRow row,
+ CCEngineLogisticsCostColumn column,
+ CCEngineLogisticsCostCell cell,
+ Number value,
+ Number oldvalue
+) id:Response_MatrixEditorTable_358_OnUpdateValue
+{
+ #keys: '[415136.0.989501207]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMatrixEditor_OnUpdateValue'
+ QuillAction
+ {
+ Body:
+ [*
+ table := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
+ cell.Coefficient( value );
+ traverse( table, Row, trow, trow.Name() = row.Name() ){
+ traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
+ tcel.RentEnterCost( cell.RentEnterCost() );
+ tcel.RentOutCost( cell.RentOutCost() );
+ tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
+ tcel.RentStorageCost( cell.RentStorageCost() );
+ tcel.Coefficient( cell.Coefficient() );
+ }
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
new file mode 100644
index 0000000..0061f31
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCCEngineLogisticsCostReport_OnCreated
+{
+ #keys: '[415136.0.989500680]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍒濆鍖�
+ //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
+ CCEngineLogisticsCostReport::Initialize( MacroPlan );
+ //}
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
+ //info( '------------------2----------------', table.IsImport(), table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonExport_OnClick.def
new file mode 100644
index 0000000..3956972
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelExport_670/ButtonExport
+Response OnClick () id:Response_PanelExport_670_ButtonExport_OnClick
+{
+ #keys: '[415136.0.989500440]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := CCEngineLogisticsCostReport::Download( MacroPlan );
+
+ Application.Download( CCEngineLogisticsCostReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def
new file mode 100644
index 0000000..0396f68
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelExport_670/ButtonSearch
+Response OnClick () id:Response_PanelExport_670_ButtonSearch_OnClick
+{
+ #keys: '[415136.0.989500439]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..845a6c6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelGeneration_969/ddslGeneration
+Response OnCreated () id:Response_PanelGeneration_969_ddslGeneration_OnCreated
+{
+ #keys: '[415136.0.989500446]'
+ 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_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
new file mode 100644
index 0000000..a3099b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelGeneration_969/ddslGeneration
+Response OnSelectionChanged () id:Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged
+{
+ #keys: '[415136.0.989500445]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ 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_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..4c3fe96
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB_667/ddslMQBMLB
+Response OnCreated () id:Response_PanelMQBMLB_667_ddslMQBMLB_OnCreated
+{
+ #keys: '[415136.0.989500444]'
+ 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_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..6514388
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB_667/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged
+{
+ #keys: '[415136.0.989500443]'
+ 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_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnCreated.def
new file mode 100644
index 0000000..8e2b817
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelPower_653/ddslPower
+Response OnCreated () id:Response_PanelPower_653_ddslPower_OnCreated
+{
+ #keys: '[415136.0.989500442]'
+ 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_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
new file mode 100644
index 0000000..a5e290e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelPower_653/ddslPower
+Response OnSelectionChanged () id:Response_PanelPower_653_ddslPower_OnSelectionChanged
+{
+ #keys: '[415136.0.989500441]'
+ 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_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
new file mode 100644
index 0000000..5428df3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCCEngineLogisticsCostReport
+{
+ #keys: '[415136.0.989500338]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable id:DataHolderTable_437
+ {
+ #keys: '[415136.0.989500367]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'CCEngineLogisticsCostReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch id:dhSearch_902
+ {
+ #keys: '[415136.0.989500384]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'CCEngineLogisticsCostSearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelCCEngineLogisticsCostReportHeader
+ #child: PanelTable_211
+ ]
+ Properties:
+ [
+ Description: 'CC engine logistics cost report'
+ Image: 'MONEY2'
+ Title: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..eddbd91
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.992750484]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.992750485]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.992750486]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'DLEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Row.Cell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'CCRentEnterCost;CCRentOutCost;CCLongTransCoat;CCShortTransCost;CCRentStorageCost;DLRentEnterCost;DLRentOutCost;FactoryToDLRentTransCost;DLRentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
+ Column: 'Column'
+ Row: 'Row'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.992750487]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.992750488]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'DLEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Row'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.992750489]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.992750490]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'DLEngineLogisticsCostReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Column'
+ ]
+ }
+ ]
+ 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_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def
new file mode 100644
index 0000000..780d9b1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelDLEngineLogisticsCostReportHeader
+{
+ #keys: '[415136.0.992750421]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelDLEngineLogisticsCostReportSearch
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def
new file mode 100644
index 0000000..151c26b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component PanelDLEngineLogisticsCostReportSearch
+{
+ #keys: '[415136.0.992750422]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelExport
+ #child: PanelPower
+ #child: PanelMQBMLB
+ #child: PanelGeneration
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
new file mode 100644
index 0000000..bfe165a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelExport
+{
+ #keys: '[415136.0.992750423]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonExport
+ {
+ #keys: '[415136.0.992750424]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 1
+ ]
+ }
+ Component ButtonSearch
+ {
+ #keys: '[415136.0.992750425]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'VIEW'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def
new file mode 100644
index 0000000..0a77a61
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelGeneration
+{
+ #keys: '[415136.0.992750430]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[415136.0.992750431]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def
new file mode 100644
index 0000000..be8faab
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelMQBMLB
+{
+ #keys: '[415136.0.992750428]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslMQBMLB
+ {
+ #keys: '[415136.0.992750429]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def
new file mode 100644
index 0000000..a79871c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPower
+{
+ #keys: '[415136.0.992750426]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslPower
+ {
+ #keys: '[415136.0.992750427]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Power'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def
new file mode 100644
index 0000000..ef8cd4d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.992750483]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..d4dfb58
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.992750491]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..270ddaa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.992750492]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
new file mode 100644
index 0000000..70dd20a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: MatrixEditorTable
+Response OnUpdateValue (
+ DLEngineLogisticsCostRow row,
+ DLEngineLogisticsCostColumn column,
+ DLEngineLogisticsCostCell cell,
+ Number value,
+ Number oldvalue
+) id:Response_MatrixEditorTable_OnUpdateValue
+{
+ #keys: '[415136.0.992750480]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMatrixEditor_OnUpdateValue'
+ QuillAction
+ {
+ Body:
+ [*
+ table := selectobject( MacroPlan, DLEngineLogisticsCostReport, report, not report.IsShow() );
+ info( focusedattribute );
+ //cell.Coefficient( value );
+ //traverse( table, Row, trow, trow.Name() = row.Name() ){
+ // traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
+ // tcel.RentEnterCost( cell.RentEnterCost() );
+ // tcel.RentOutCost( cell.RentOutCost() );
+ // tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
+ // tcel.RentStorageCost( cell.RentStorageCost() );
+ // tcel.Coefficient( cell.Coefficient() );
+ // }
+ //}
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
new file mode 100644
index 0000000..ca7f4d4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormDLEngineLogisticsCostReport_OnCreated
+{
+ #keys: '[415136.0.997148779]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍒濆鍖�
+ //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
+ DLEngineLogisticsCostReport::Initialize( MacroPlan );
+ //}
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
+ //info( '------------------2----------------', table.IsImport(), table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
+ info( '------------------2----------------', isnull( dhSearch.Data() ) );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def
new file mode 100644
index 0000000..be0eca4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonExport
+Response OnClick () id:Response_PanelExport_ButtonExport_OnClick
+{
+ #keys: '[415136.0.992750420]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := DLEngineLogisticsCostReport::Download( MacroPlan );
+
+ Application.Download( DLEngineLogisticsCostReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def
new file mode 100644
index 0000000..52aab5d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonSearch
+Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick
+{
+ #keys: '[415136.0.992750419]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..9ae9bfa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/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.992750414]'
+ 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_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
new file mode 100644
index 0000000..ea16450
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelGeneration/ddslGeneration
+Response OnSelectionChanged () id:Response_PanelGeneration_ddslGeneration_OnSelectionChanged
+{
+ #keys: '[415136.0.992750413]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ 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_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..58c4ae0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/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.992750416]'
+ 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_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..e9f628d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged
+{
+ #keys: '[415136.0.992750415]'
+ 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_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnCreated.def
new file mode 100644
index 0000000..a402a02
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/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.992750418]'
+ 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_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
new file mode 100644
index 0000000..bb72128
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelPower/ddslPower
+Response OnSelectionChanged () id:Response_PanelPower_ddslPower_OnSelectionChanged
+{
+ #keys: '[415136.0.992750417]'
+ 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_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
new file mode 100644
index 0000000..5e6807d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormDLEngineLogisticsCostReport
+{
+ #keys: '[415136.0.992750301]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable
+ {
+ #keys: '[415136.0.992750351]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'DLEngineLogisticsCostReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch
+ {
+ #keys: '[415136.0.992750376]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'DLEngineLogisticsCostSearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelDLEngineLogisticsCostReportHeader
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Description: 'DL engine logistics cost report'
+ Image: 'MONEY2'
+ Title: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
index 3a6bcc9..bac49a1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -42,7 +42,8 @@
]
Properties:
[
+ Description: 'Engine pipeline report'
Image: 'DOCUMENT_CONNECTION'
- Title: 'Engine pipeline report'
+ Title: '鍙戝姩鏈虹绾挎姤琛�'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
index 146e986..7e63fb7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
@@ -32,7 +32,8 @@
]
Properties:
[
+ Description: 'Financial production report'
Image: 'DOCUMENT_REFRESH'
- Title: 'Financial production report'
+ Title: '璐㈠姟浜ч噺鎶ヨ〃'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
index 248b71f..a30e8a2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -32,7 +32,8 @@
]
Properties:
[
+ Description: 'Financial sales report'
Image: 'MONEY_COINS2'
- Title: 'Financial sales report'
+ Title: '璐㈠姟閿�閲忔姤琛�'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
index af4455d..349ef4e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
@@ -12,7 +12,8 @@
]
Properties:
[
+ Description: 'Financial weekly report'
Image: 'DOCUMENT_DIRTY'
- Title: 'Financial weekly report'
+ Title: '闀挎槬鍛ㄦ姤琛�'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
index 18cc120..0f7034e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -32,7 +32,8 @@
]
Properties:
[
+ Description: 'Inventory summary report'
Image: 'DOCUMENT_CHECK_EDIT'
- Title: 'Inventory summary report'
+ Title: '搴撳瓨姹囨�绘姤琛�'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
index 323e7bd..7d54e40 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
@@ -32,7 +32,8 @@
]
Properties:
[
+ Description: 'Machining pipeline report'
Image: 'DOCUMENT_CONNECTION'
- Title: 'Machining pipeline report'
+ Title: '鏈哄姞浠剁绾挎姤琛�'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/CC_engine_logistics_cost_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/CC_engine_logistics_cost_report_view.vw
new file mode 100644
index 0000000..d2ca7d4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/CC_engine_logistics_cost_report_view.vw
@@ -0,0 +1,104 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormCCEngineLogisticsCostReport
+ {
+ title: 'QMacroPlanner::FormCCEngineLogisticsCostReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormCCEngineLogisticsCostReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 13
+ }
+ components
+ {
+ FormCCEngineLogisticsCostReport_PanelCCEngineLogisticsCostReportHeader
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelCCEngineLogisticsCostReportSearch
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelGeneration
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelMQBMLB
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelPower
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelExport
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormCCEngineLogisticsCostReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 113
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormCCEngineLogisticsCostReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 27
+ image: 'MONEY2'
+ description: ''
+ }
+ formatversion: 2
+ id: 'CC_engine_logistics_cost_report_view'
+ name: 'CC engine logistics cost report view'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw
new file mode 100644
index 0000000..ad0533f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw
@@ -0,0 +1,200 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormDLEngineLogisticsCostReport
+ {
+ title: 'QMacroPlanner::FormDLEngineLogisticsCostReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormDLEngineLogisticsCostReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 13
+ }
+ components
+ {
+ FormDLEngineLogisticsCostReport_PanelDLEngineLogisticsCostReportHeader
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelDLEngineLogisticsCostReportSearch
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelGeneration
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelMQBMLB
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelPower
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelExport
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormDLEngineLogisticsCostReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormDLEngineLogisticsCostReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_CCRentEnterCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CCRentEnterCost'
+ }
+ attribute_CCRentOutCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CCRentOutCost'
+ }
+ attribute_CCLongTransCoat
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CCLongTransCoat'
+ }
+ attribute_CCShortTransCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 3
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CCShortTransCost'
+ }
+ attribute_CCRentStorageCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 4
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CCRentStorageCost'
+ }
+ attribute_DLRentEnterCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 5
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'DLRentEnterCost'
+ }
+ attribute_DLRentOutCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 6
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'DLRentOutCost'
+ }
+ attribute_FactoryToDLRentTransCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 7
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'FactoryToDLRentTransCost'
+ }
+ attribute_DLRentStorageCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 8
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'DLRentStorageCost'
+ }
+ attribute_EstimatedTotalCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 9
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'EstimatedTotalCost'
+ }
+ attribute_Coefficient
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 10
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Coefficient'
+ }
+ attribute_TotalCost
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 11
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'TotalCost'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 28
+ image: 'MONEY2'
+ description: ''
+ }
+ formatversion: 2
+ id: 'DL_engine_logistics_cost_report_view'
+ name: 'DL engine logistics cost report view'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw b/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
index 3f13663..177feb9 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
@@ -2,6 +2,142 @@
{
viewcontents
{
+ forms
+ {
+ form_FormDemandComparison
+ {
+ title: 'QMacroPlanner::FormDemandComparison'
+ shown: true
+ componentID: 'QMacroPlanner::FormDemandComparison'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 17
+ columnPosition: 1
+ columnSpan: 11
+ }
+ components
+ {
+ FormDemandComparison_PanelDemandComparison294
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_PanelSelection
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_PanelSelectionChecks
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionPR
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionPP
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionBudget
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionPPA
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionIDS
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pSelectionCurve
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_PanelFilter
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_PanelOperation
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_pVersionInfomation
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_PanelDemandComparison
+ {
+ sizeRatio: 1
+ }
+ FormDemandComparison_MatrixEditor
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormDemandComparison.MatrixEditor'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_BaseVersion
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'BaseVersion'
+ }
+ attribute_CompareVersion
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'CompareVersion'
+ }
+ attribute_Gap
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Gap'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
page: ''
group: ''
index: 0
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
index 7ecffee..7db21f8 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
@@ -2,10 +2,94 @@
{
viewcontents
{
- image: 'COMPASSES'
+ forms
+ {
+ form_FormShihtPlan
+ {
+ title: 'QMacroPlanner::FormShihtPlan'
+ shown: true
+ componentID: 'QMacroPlanner::FormShihtPlan'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 17
+ columnPosition: 1
+ columnSpan: 9
+ }
+ components
+ {
+ FormShihtPlan_PanelMatrix
+ {
+ sizeRatio: 1
+ }
+ FormShihtPlan_pOperation
+ {
+ sizeRatio: 1
+ }
+ FormShihtPlan_MatrixEditorTimeCapacities
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormShihtPlan.MatrixEditorTimeCapacities'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_Outcome
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Outcome'
+ }
+ attribute_Remark
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Remark'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'StartDate'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'DisplayIndex'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
page: ''
group: ''
index: 0
+ image: 'COMPASSES'
description: ''
}
formatversion: 2
--
Gitblit v1.9.3