From 6c6bbb2ae3ee0e8c539bb3b97d90590cff957a54 Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期五, 12 七月 2024 17:36:01 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951#480.def | 97 +
_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl | 6
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlContent.def | 36
_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl | 9
_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl | 13
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def | 10
_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl | 23
_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl | 23
_Main/BL/Type_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl | 10
_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw | 134 +
_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl | 17
_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl | 8
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw | 353 ++++
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def | 16
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl | 34
_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def | 17
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl | 7
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def | 22
_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl | 19
_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod#325.def | 35
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl | 47
_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl | 8
_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def | 22
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def | 14
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl | 73 +
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick#774.def | 24
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_MachiningPipelineCell/Attribute_InventoryQuantity.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def | 97 +
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl | 23
_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl | 10
_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl | 10
_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl | 10
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl | 1
_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def | 24
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl | 1
_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl | 26
_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl | 8
_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl | 7
_var/_Main/ProjSettings/EditorTC/Views/车道整班分析_[413988.0.1301140601].vw | 59
_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl | 8
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl | 38
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl | 1
_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_MachiningPipelineCell/Attribute_DemandQuantity.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def | 18
_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl | 9
_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl | 9
_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl | 48
_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl | 26
_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl | 6
_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl | 23
_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl | 20
_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl | 55
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def | 10
_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_MachiningPipelineCell/Attribute_ProductionQuantity.qbl | 8
_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl | 8
_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 11
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def | 17
_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl | 23
_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl | 6
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl | 26
_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl | 23
_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl | 23
_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl | 14
_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl | 10
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def | 12
_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl | 6
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl | 73 +
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl | 150 ++
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def | 14
_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl | 26
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl | 14
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl | 7
_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl | 16
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl | 23
_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl | 6
_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def | 10
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def | 40
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def | 48
_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl | 13
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl | 103 +
_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl | 8
_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl | 6
_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl | 8
_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl | 10
_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl | 23
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl | 7
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl | 7
_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl | 9
_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl | 7
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl | 6
_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def | 20
_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl | 8
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl | 6
_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl | 10
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl | 7
_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl | 8
_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl | 20
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def | 24
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def | 10
_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl | 10
_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def | 15
_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnOk_OnClick.def | 16
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnCancel_OnClick.def | 15
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl | 15
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl | 26
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def | 14
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def | 46
_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl | 8
_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl | 14
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def | 28
_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def | 5
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def | 15
_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl | 23
_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl | 8
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl | 7
_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250#1.def | 10
_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def | 17
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def | 1
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def | 42
_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl | 8
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl | 6
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl | 7
_Main/BL/Type_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl | 10
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204#1.def | 10
_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl | 10
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl | 23
_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl | 15
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl | 46
_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def | 10
_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl | 6
_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl | 8
_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl | 34
_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def | 42
_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl | 8
_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl | 7
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl | 2
_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl | 9
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl | 102 +
_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl | 6
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl | 6
_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def | 10
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl | 18
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def | 19
_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl | 18
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl | 8
_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl | 8
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl | 15
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl | 23
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def | 11
_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl | 6
_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def | 24
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl | 36
_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl | 61
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def | 27
_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def | 10
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl | 10
_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl | 7
_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl | 23
_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl | 13
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl | 7
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl | 23
_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl | 8
_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl | 22
/dev/null | 20
_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl | 10
_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw | 2
_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def | 18
_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl | 14
_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl | 9
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl | 6
226 files changed, 4,212 insertions(+), 117 deletions(-)
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
new file mode 100644
index 0000000..234a042
--- /dev/null
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell_AssemblyOnlinePlanColumn
+{
+ #keys: '1[413988.0.1348175595]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide AssemblyOnlinePlanCell
+ {
+ #keys: '3[413988.0.1348175597][413988.0.1348175596][413988.0.1348175598]'
+ Cardinality: '1toN'
+ ObjectDefinition: AssemblyOnlinePlanColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide AssemblyOnlinePlanColumn
+ {
+ #keys: '3[413988.0.1348175600][413988.0.1348175599][413988.0.1348175601]'
+ Cardinality: '0to1'
+ ObjectDefinition: AssemblyOnlinePlanCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl
new file mode 100644
index 0000000..bc0d983
--- /dev/null
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+Relation AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColumn
+{
+ #keys: '1[413988.0.1348175552]'
+ DeclarativeSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][413988.0.1348175574][413988.0.1348175568][413988.0.1348175575][413988.0.1348175569][413988.0.1348175576][413988.0.1348175570][413988.0.1348175577][413988.0.1348175571][413988.0.1348175578][413988.0.1348175572][413988.0.1348175579][413988.0.1348175573]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ SortAttributes:
+ [
+ DeclarativeSequenceRelationSortAttribute
+ {
+ #keys: '1[413988.0.1348175584]'
+ Attribute: 'ColumnDate'
+ }
+ ]
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1348175554][413988.0.1348175553][413988.0.1348175555]'
+ Cardinality: '0to1'
+ ObjectDefinition: AssemblyOnlinePlanColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide AssemblyOnlinePlanColumn
+ {
+ #keys: '3[413988.0.1348175557][413988.0.1348175556][413988.0.1348175558]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
new file mode 100644
index 0000000..e878ce8
--- /dev/null
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell_AssemblyOnlinePlanRow
+{
+ #keys: '1[413988.0.1348175621]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide AssemblyOnlinePlanCell
+ {
+ #keys: '3[413988.0.1348175623][413988.0.1348175622][413988.0.1348175624]'
+ Cardinality: '1toN'
+ ObjectDefinition: AssemblyOnlinePlanRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide AssemblyOnlinePlanRow
+ {
+ #keys: '3[413988.0.1348175626][413988.0.1348175625][413988.0.1348175627]'
+ Cardinality: '0to1'
+ ObjectDefinition: AssemblyOnlinePlanCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl
new file mode 100644
index 0000000..103c7c9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow
+{
+ #keys: '1[413988.0.1348175608]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1348175610][413988.0.1348175609][413988.0.1348175611]'
+ Cardinality: '0to1'
+ ObjectDefinition: AssemblyOnlinePlanRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide AssemblyOnlinePlanRow
+ {
+ #keys: '3[413988.0.1348175613][413988.0.1348175612][413988.0.1348175614]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl b/_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl
new file mode 100644
index 0000000..3064591
--- /dev/null
+++ b/_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity
+{
+ #keys: '1[413988.0.1348200027]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1348200029][413988.0.1348200028][413988.0.1348200030]'
+ Cardinality: '0to1'
+ ObjectDefinition: AssemblyOnlineQuantity
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide AssemblyOnlineQuantity
+ {
+ #keys: '3[413988.0.1348200032][413988.0.1348200031][413988.0.1348200033]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl b/_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl
new file mode 100644
index 0000000..f733b7f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue
+{
+ #keys: '1[415136.0.886711679]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Column
+ {
+ #keys: '3[415136.0.886711681][415136.0.886711680][415136.0.886711682]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineCellValue
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide CellValue
+ {
+ #keys: '3[415136.0.886711684][415136.0.886711683][415136.0.886711685]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineColumn
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl b/_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl
new file mode 100644
index 0000000..c2e500d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineCell_Production_EnginePipelineProduction_Cell
+{
+ #keys: '1[415136.0.883590181]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Production
+ {
+ #keys: '3[415136.0.883590183][415136.0.883590182][415136.0.883590184]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineCell
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Cell
+ {
+ #keys: '3[415136.0.883590186][415136.0.883590185][415136.0.883590187]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineProduction
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl b/_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl
new file mode 100644
index 0000000..dcd538e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineColumn_Cell_EnginePipelineCell_Column
+{
+ #keys: '1[415136.0.883590111]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.883590130][415136.0.883590124][415136.0.883590131][415136.0.883590125][415136.0.883590132][415136.0.883590126][415136.0.883590133][415136.0.883590127][415136.0.883590134][415136.0.883590128][415136.0.883590135][415136.0.883590129]'
+ SequenceElementSuffix: 'CellInColumn'
+ SequenceSuffix: 'CellInColumn'
+ }
+ RelationSide.LeftSide Cell
+ {
+ #keys: '3[415136.0.883590113][415136.0.883590112][415136.0.883590114]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Column
+ {
+ #keys: '3[415136.0.883590116][415136.0.883590115][415136.0.883590117]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl b/_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl
new file mode 100644
index 0000000..083f2c4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineDemand_Cell_EnginePipelineCell_Demand
+{
+ #keys: '1[415136.0.883590237]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Cell
+ {
+ #keys: '3[415136.0.883590239][415136.0.883590238][415136.0.883590240]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineDemand
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Demand
+ {
+ #keys: '3[415136.0.883590242][415136.0.883590241][415136.0.883590243]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineCell
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl b/_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl
new file mode 100644
index 0000000..ce13b04
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineReport_Column_EnginePipelineColumn_Report
+{
+ #keys: '1[415136.0.883590042]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.883590073][415136.0.883590067][415136.0.883590074][415136.0.883590068][415136.0.883590075][415136.0.883590069][415136.0.883590076][415136.0.883590070][415136.0.883590077][415136.0.883590071][415136.0.883590078][415136.0.883590072]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide Column
+ {
+ #keys: '3[415136.0.883590044][415136.0.883590043][415136.0.883590045]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Report
+ {
+ #keys: '3[415136.0.883590047][415136.0.883590046][415136.0.883590048]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl b/_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl
new file mode 100644
index 0000000..6be2a1d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineReport_Row_EnginePipelineRow_Report
+{
+ #keys: '1[415136.0.883590084]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Row
+ {
+ #keys: '3[415136.0.883590086][415136.0.883590085][415136.0.883590087]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Report
+ {
+ #keys: '3[415136.0.883590089][415136.0.883590088][415136.0.883590090]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl b/_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl
new file mode 100644
index 0000000..a029ad6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineRow_CellValue_EnginePipelineCellValue_Row
+{
+ #keys: '1[415136.0.886711663]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide CellValue
+ {
+ #keys: '3[415136.0.886711665][415136.0.886711664][415136.0.886711666]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Row
+ {
+ #keys: '3[415136.0.886711668][415136.0.886711667][415136.0.886711669]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineCellValue
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl b/_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl
new file mode 100644
index 0000000..982e533
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineRow_Cell_EnginePipelineCell_Row
+{
+ #keys: '1[415136.0.883590141]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Cell
+ {
+ #keys: '3[415136.0.883590143][415136.0.883590142][415136.0.883590144]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Row
+ {
+ #keys: '3[415136.0.883590146][415136.0.883590145][415136.0.883590147]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl b/_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl
new file mode 100644
index 0000000..b290f6b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource
+{
+ #keys: '1[415136.0.883574775]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.883574777][415136.0.883574776][415136.0.883574778]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineSource
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide EnginePipelineSource
+ {
+ #keys: '3[415136.0.883574780][415136.0.883574779][415136.0.883574781]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl b/_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl
new file mode 100644
index 0000000..6200815
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineSource_Report_EnginePipelineReport_Source
+{
+ #keys: '1[415136.0.883590029]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Report
+ {
+ #keys: '3[415136.0.883590031][415136.0.883590030][415136.0.883590032]'
+ Cardinality: '1toN'
+ ObjectDefinition: EnginePipelineSource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Source
+ {
+ #keys: '3[415136.0.883590034][415136.0.883590033][415136.0.883590035]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineReport
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl b/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
new file mode 100644
index 0000000..0c057e3
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineSource_Search_EnginePipelineSearch_Source
+{
+ #keys: '1[415136.0.883574788]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Search
+ {
+ #keys: '3[415136.0.883574790][415136.0.883574789][415136.0.883574791]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineSource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide Source
+ {
+ #keys: '3[415136.0.883574793][415136.0.883574792][415136.0.883574794]'
+ Cardinality: '0to1'
+ ObjectDefinition: EnginePipelineSearch
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl b/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
deleted file mode 100644
index ddb1bef..0000000
--- a/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn
-{
- #keys: '1[413988.0.1296697061]'
- DefaultRelationStrategy
- {
- }
- RelationSide.LeftSide MacroPlan
- {
- #keys: '3[413988.0.1296697063][413988.0.1296697062][413988.0.1296697064]'
- Cardinality: '0to1'
- ObjectDefinition: OfflinePlanColumn
- OwningSide: 'Reference'
- }
- RelationSide.RightSide OfflinePlanColumn
- {
- #keys: '3[413988.0.1296697066][413988.0.1296697065][413988.0.1296697067]'
- Cardinality: '1toN'
- ObjectDefinition: MacroPlan
- OwningSide: 'Owned'
- }
-}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl b/_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl
new file mode 100644
index 0000000..d24e7bb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColumn
+{
+ #keys: '1[413988.0.1337732899]'
+ DeclarativeSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][413988.0.1337732918][413988.0.1337732912][413988.0.1337732919][413988.0.1337732913][413988.0.1337732920][413988.0.1337732914][413988.0.1337732921][413988.0.1337732915][413988.0.1337732922][413988.0.1337732916][413988.0.1337732923][413988.0.1337732917]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ SortAttributes:
+ [
+ DeclarativeSequenceRelationSortAttribute
+ {
+ #keys: '1[413988.0.1337732928]'
+ Attribute: 'ColumnDate'
+ }
+ ]
+ }
+ RelationSide.LeftSide OfflinePlanTable
+ {
+ #keys: '3[413988.0.1337732901][413988.0.1337732900][413988.0.1337732902]'
+ Cardinality: '0to1'
+ ObjectDefinition: OfflinePlanColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OfflinePlanColumn
+ {
+ #keys: '3[413988.0.1337732904][413988.0.1337732903][413988.0.1337732905]'
+ Cardinality: '1toN'
+ ObjectDefinition: OfflinePlanTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl b/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
deleted file mode 100644
index c9dde81..0000000
--- a/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow
-{
- #keys: '1[413988.0.1296696992]'
- DefaultRelationStrategy
- {
- }
- RelationSide.LeftSide MacroPlan
- {
- #keys: '3[413988.0.1296696994][413988.0.1296696993][413988.0.1296696995]'
- Cardinality: '0to1'
- ObjectDefinition: OfflinePlanRow
- OwningSide: 'Reference'
- }
- RelationSide.RightSide OfflinePlanRow
- {
- #keys: '3[413988.0.1296696997][413988.0.1296696996][413988.0.1296696998]'
- Cardinality: '1toN'
- ObjectDefinition: MacroPlan
- OwningSide: 'Owned'
- }
-}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl b/_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl
new file mode 100644
index 0000000..c17df01
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow
+{
+ #keys: '1[413988.0.1337732881]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide OfflinePlanTable
+ {
+ #keys: '3[413988.0.1337732883][413988.0.1337732882][413988.0.1337732884]'
+ Cardinality: '0to1'
+ ObjectDefinition: OfflinePlanRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OfflinePlanRow
+ {
+ #keys: '3[413988.0.1337732886][413988.0.1337732885][413988.0.1337732887]'
+ Cardinality: '1toN'
+ ObjectDefinition: OfflinePlanTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl b/_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl
new file mode 100644
index 0000000..781206d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable
+{
+ #keys: '1[413988.0.1337732865]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1337732867][413988.0.1337732866][413988.0.1337732868]'
+ Cardinality: '0to1'
+ ObjectDefinition: OfflinePlanTable
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OfflinePlanTable
+ {
+ #keys: '3[413988.0.1337732870][413988.0.1337732869][413988.0.1337732871]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
new file mode 100644
index 0000000..4feff43
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryWeight
+{
+ #keys: '3[413988.0.1348175527][413988.0.1348175526][413988.0.1348175528]'
+ Description: '鍓╀綑搴撳瓨 - 鏈�灏忓簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl
new file mode 100644
index 0000000..d4f3732
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionSerialNumber
+{
+ #keys: '3[413988.0.1348175536][413988.0.1348175535][413988.0.1348175537]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..4a88e03
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[413988.0.1348175533][413988.0.1348175532][413988.0.1348175534]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl
new file mode 100644
index 0000000..7a2ac9b
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Shift
+{
+ #keys: '3[413988.0.1348175530][413988.0.1348175529][413988.0.1348175531]'
+ Description: '鐝'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl
new file mode 100644
index 0000000..07d672a
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[413988.0.1348175524][413988.0.1348175523][413988.0.1348175525]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl
new file mode 100644
index 0000000..b925fd8
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Shift
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl
new file mode 100644
index 0000000..913414b
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Value
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl
new file mode 100644
index 0000000..3fc9100
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl
@@ -0,0 +1,47 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ opcs := selectsortedset( macroPlan, AssemblyOnlinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
+ oprs := selectsortedset( macroPlan, AssemblyOnlinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
+ traverse ( opcs, Elements, opc ) {
+ column := xmlDOM.CreateElement( "column" );
+ name := xmlDOM.CreateElement( "name" );
+ type := xmlDOM.CreateElement( "type" );
+ name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
+ type.TextContent( "String" );
+ column.AppendChild( name );
+ column.AppendChild( type );
+
+ traverse ( oprs, Elements, opr ) {
+ c := select( opc, AssemblyOnlinePlanCell, tempOPC, tempOPC.AssemblyOnlinePlanRow() = opr );
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", guard( c.Value(), "" ) );
+ column.AppendChild( cell );
+ }
+
+ tableElement.AppendChild( column );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
new file mode 100644
index 0000000..733d439
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod RefreshData (
+ MacroPlan macroPlan,
+ OfflinePlanTable opt
+)
+{
+ TextBody:
+ [*
+ macroPlan.AssemblyOnlinePlanRow( relflush );
+ macroPlan.AssemblyOnlinePlanColumn( relflush );
+
+ // 鎵捐閰嶇嚎琛�
+ oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = "Spider Assy Line 1", tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
+ opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
+
+ // 鐢熸垚琛ㄦ牸
+ traverse ( opcs, Elements, opc ) {
+ aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
+ traverse ( oprs, Elements, opr ) {
+ aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
+ if ( isnull( aopr ) ) {
+ aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
+ }
+
+ cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
+ if ( not isnull( cellOPC ) ) {
+ cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
+ cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
+ }
+ }
+ }
+
+ // 澶勭悊鏃ュ巻浜嬩欢
+ *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl
new file mode 100644
index 0000000..f0ce00e
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type AssemblyOnlinePlanCell
+{
+ #keys: '5[413988.0.1348175520][413988.0.1348175518][0.0.0][413988.0.1348175519][413988.0.1348175521]'
+ BaseType: Object
+ StructuredName: 'AssemblyOnlinePlanCells'
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl
new file mode 100644
index 0000000..8121276
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnDate
+{
+ #keys: '3[413988.0.1348175542][413988.0.1348175541][413988.0.1348175543]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl
new file mode 100644
index 0000000..350460c
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnIndex
+{
+ #keys: '3[413988.0.1348175545][413988.0.1348175544][413988.0.1348175546]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl
new file mode 100644
index 0000000..d7e636b
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnName
+{
+ #keys: '3[413988.0.1348175548][413988.0.1348175547][413988.0.1348175549]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl
new file mode 100644
index 0000000..2ba9476
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ColumnName
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl
new file mode 100644
index 0000000..5063e35
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcColumnName
+{
+ TextBody:
+ [*
+ // lihongji Jun-27-2024 (created)
+
+ value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
+
+ this.ColumnName( value );
+ *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl b/_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl
new file mode 100644
index 0000000..5387722
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type AssemblyOnlinePlanColumn
+{
+ #keys: '5[413988.0.1348175510][413988.0.1348175508][0.0.0][413988.0.1348175509][413988.0.1348175511]'
+ BaseType: Object
+ StructuredName: 'AssemblyOnlinePlanColumns'
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..c0e500f
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[413988.0.1348175641][413988.0.1348175640][413988.0.1348175642]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
new file mode 100644
index 0000000..55d52d6
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionLine
+{
+ #keys: '3[413988.0.1348175644][413988.0.1348175643][413988.0.1348175645]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..57cebfa
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[413988.0.1348175635][413988.0.1348175634][413988.0.1348175636]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl
new file mode 100644
index 0000000..9796d2d
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Type
+{
+ #keys: '3[413988.0.1348175638][413988.0.1348175637][413988.0.1348175639]'
+ Description:
+ [*
+ 浜х嚎鍚嶈 锛�0
+ Quantity琛岋細1
+ Order琛� 锛�2
+ 鍚堣琛� 锛�3
+ 鐝琛� 锛�4
+ *]
+ ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
new file mode 100644
index 0000000..c59ec43
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ProductionLine
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl
new file mode 100644
index 0000000..a05f652
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: RowNr
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl
new file mode 100644
index 0000000..fd112e9
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Type
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl b/_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl
new file mode 100644
index 0000000..337cd85
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type AssemblyOnlinePlanRow
+{
+ #keys: '5[413988.0.1348175515][413988.0.1348175513][0.0.0][413988.0.1348175514][413988.0.1348175516]'
+ BaseType: Object
+ StructuredName: 'AssemblyOnlinePlanRows'
+}
diff --git a/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl b/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl
new file mode 100644
index 0000000..6b4893d
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCMoMo
+{
+ #keys: '3[413988.0.1348200056][413988.0.1348200055][413988.0.1348200057]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl b/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl
new file mode 100644
index 0000000..aeaad4a
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLMoMo
+{
+ #keys: '3[413988.0.1348200046][413988.0.1348200045][413988.0.1348200047]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl b/_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl
new file mode 100644
index 0000000..591a2de
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type AssemblyOnlineQuantity
+{
+ #keys: '5[413988.0.1348200024][413988.0.1348200022][0.0.0][413988.0.1348200023][413988.0.1348200025]'
+ BaseType: Object
+ StructuredName: 'AssemblyOnlineQuantitys'
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl b/_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl
new file mode 100644
index 0000000..d4578fa
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandQuantity
+{
+ #keys: '3[415136.0.883574849][415136.0.883574848][415136.0.883574850]'
+ Description: '闇�姹�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl b/_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl
new file mode 100644
index 0000000..a27f3e7
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryQuantity
+{
+ #keys: '3[415136.0.883574836][415136.0.883574835][415136.0.883574837]'
+ Description: '搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl b/_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl
new file mode 100644
index 0000000..7c57b40
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionQuantity
+{
+ #keys: '3[415136.0.883574826][415136.0.883574825][415136.0.883574827]'
+ Description: '鐢熶骇'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl b/_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl
new file mode 100644
index 0000000..cdcad31
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcDemandQuantity
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-9-2024 (created)
+
+ value := sum( this, Demand, demand, demand.Quantity() );
+
+ this.DemandQuantity( value );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl b/_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl
new file mode 100644
index 0000000..a69638d
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcProductionQuantity
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-9-2024 (created)
+ production := this.Production();
+ value := [Real]0;
+ if( not isnull( production ) ){
+ value := production.CCProduction() + production.DLProduction();
+ }
+
+ this.ProductionQuantity( value );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl b/_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl
new file mode 100644
index 0000000..a110f23
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method Copy (
+ EnginePipelineColumn column
+) as EnginePipelineCell
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-9-2024 (created)
+ cell := column.Cell( relnew, InventoryQuantity := this.InventoryQuantity() );
+
+ traverse( this, Demand, demand ){
+ cell.Demand( relnew, EngineType := demand.EngineType(), Model := demand.Model(), Period := demand.Period(), Quantity := demand.Quantity() );
+ }
+ production := this.Production();
+ cell.Production( relnew, EngineType := production.EngineType(), Period := production.Period(), DLProduction := production.DLProduction(), CCProduction := production.CCProduction() );
+ return cell;
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl b/_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl
new file mode 100644
index 0000000..e383691
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineCell
+{
+ #keys: '5[415136.0.883574656][415136.0.883574654][0.0.0][415136.0.883574655][415136.0.883574657]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'EnginePipelineCells'
+}
diff --git a/_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl b/_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl
new file mode 100644
index 0000000..2483b7c
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[415136.0.886711654][415136.0.886711653][415136.0.886711655]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl b/_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl
new file mode 100644
index 0000000..913414b
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Value
+}
diff --git a/_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl b/_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl
new file mode 100644
index 0000000..27cb759
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineCellValue
+{
+ #keys: '5[415136.0.886711642][415136.0.886711640][0.0.0][415136.0.886711641][415136.0.886711643]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎姤琛ㄦ樉绀哄崟鍏冩牸'
+ StructuredName: 'EnginePipelineCellValues'
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl b/_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..d5d3ac9
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.883574675][415136.0.883574674][415136.0.883574676]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl b/_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..e3025ae
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.883574678][415136.0.883574677][415136.0.883574679]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl b/_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..b07e6fa
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.883574681][415136.0.883574680][415136.0.883574682]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl b/_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..b1c79f5
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.883590099][415136.0.883590098][415136.0.883590100]'
+ Description: '鏃ユ湡绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl b/_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl b/_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..56bbf20
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-21-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl b/_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl
new file mode 100644
index 0000000..e4e61c9
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineColumn
+{
+ #keys: '5[415136.0.883574672][415136.0.883574670][0.0.0][415136.0.883574671][415136.0.883574673]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎姤琛ㄥ垪'
+ StructuredName: 'EnginePipelineColumns'
+}
diff --git a/_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl b/_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl
new file mode 100644
index 0000000..9f3f1a2
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EngineType
+{
+ #keys: '3[415136.0.883590198][415136.0.883590197][415136.0.883590199]'
+ Description: '鍙戝姩鏈哄瀷鍙�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl b/_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl
new file mode 100644
index 0000000..cc2d581
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Model
+{
+ #keys: '3[415136.0.883590218][415136.0.883590217][415136.0.883590219]'
+ Description: '杞﹀瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl b/_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl
new file mode 100644
index 0000000..c840b66
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.883590208][415136.0.883590207][415136.0.883590209]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl b/_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl
new file mode 100644
index 0000000..b4fa560
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[415136.0.883590228][415136.0.883590227][415136.0.883590229]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl b/_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl
new file mode 100644
index 0000000..dce6c57
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineDemand
+{
+ #keys: '5[415136.0.883574869][415136.0.883574867][0.0.0][415136.0.883574868][415136.0.883574870]'
+ BaseType: Object
+ Description: '闇�姹傚瓙琛�'
+ StructuredName: 'EnginePipelineDemands'
+}
diff --git a/_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl b/_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl
new file mode 100644
index 0000000..39d886d
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCProduction
+{
+ #keys: '3[415136.0.883590169][415136.0.883590168][415136.0.883590170]'
+ Description: '闀挎槬浜ч噺'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl b/_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl
new file mode 100644
index 0000000..a9bbcfd
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLProduction
+{
+ #keys: '3[415136.0.883574893][415136.0.883574892][415136.0.883574894]'
+ Description: '澶ц繛浜ч噺'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl b/_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl
new file mode 100644
index 0000000..9c97d29
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EngineType
+{
+ #keys: '3[415136.0.883574873][415136.0.883574872][415136.0.883574874]'
+ Description: '鍙戝姩鏈哄瀷鍙�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl b/_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl
new file mode 100644
index 0000000..5205478
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.883574883][415136.0.883574882][415136.0.883574884]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl b/_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl
new file mode 100644
index 0000000..4fd698c
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineProduction
+{
+ #keys: '5[415136.0.883574864][415136.0.883574862][0.0.0][415136.0.883574863][415136.0.883574865]'
+ BaseType: Object
+ Description: '鐢熶骇瀛愯〃'
+ StructuredName: 'EnginePipelineProductions'
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl b/_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl
new file mode 100644
index 0000000..7e0420a
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.883574713][415136.0.883574712][415136.0.883574714]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl b/_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..437a25d
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.883574719][415136.0.883574718][415136.0.883574720]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl b/_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl
new file mode 100644
index 0000000..aa6d530
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.883574722][415136.0.883574721][415136.0.883574723]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl b/_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl b/_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl
new file mode 100644
index 0000000..345583b
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear (
+ String timeunit,
+ Date startdate,
+ Date enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.Column( relflush );
+ this.Row( relflush );
+ this.Column( relnew, Name := '', TimeUnit := timeunit );
+ this.Column( relnew, Name := '', TimeUnit := timeunit );
+ this.GenerateColumn( this.Source().MacroPlan(), timeunit, startdate, enddate );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
new file mode 100644
index 0000000..846f44a
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -0,0 +1,150 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ EnginePipelineSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, Source.Report, report, not report.IsShow() );
+
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
+ Transaction::Transaction().Propagate( attribute( EnginePipelineColumn, Index ) );
+ Transaction::Transaction().Propagate( attribute( EnginePipelineCell, ProductionQuantity ) );
+ Transaction::Transaction().Propagate( attribute( EnginePipelineCell, DemandQuantity ) );
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, true, product.ID() );
+ rows := selectsortedset( table, Row, row, row.RowNr() );
+ //鏄剧ず鍒�
+ productcolumn := selectobject( this, Column, column, column.Index() = 0 );
+ attricolumn := selectobject( this, Column, column, column.Index() = 1 );
+ models := selectuniquevalues( table, Column.Cell.Demand, demand, demand.Model() );
+ cellnr := 5 + models.Size();
+ //鍚堣琛�
+ sumrowproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '鐢熶骇', rows.Size() * cellnr, true );
+ sumrowdlproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '澶ц繛浜ч噺', sumrowproduction.RowNr() + 1, false );
+ sumrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '闀挎槬浜ч噺', sumrowproduction.RowNr() + 2, false );
+ sumrowdemand := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '闇�姹�', sumrowproduction.RowNr() + 3, false );
+ rowno := sumrowproduction.RowNr() + 4;
+ traverse( models, Elements, model ){
+ EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', model, rowno, false );
+ rowno := rowno + 1;
+ }
+ sumrowinventory := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '搴撳瓨', rowno, false );
+
+ //琛岃鏁�
+ rownr := 0;
+ traverse( rows, Elements, row, productids.Find( row.Name() ) >= 0 ){
+
+ showrowproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '鐢熶骇', rownr, true );;
+ showrowdlproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '澶ц繛浜ч噺', rownr + 1, false );
+ showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闀挎槬浜ч噺', rownr + 2, false );
+ showrowdemand := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闇�姹�', rownr + 3, false );
+ rownr := rownr + 4;
+ traverse( models, Elements, model ){
+ EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), model, rownr, false );
+ rownr := rownr + 1;
+ }
+ showrowinventory := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '搴撳瓨', rownr, false );
+
+ traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
+
+ column := selectobject( this, Column, column, column.Name() = cell.Column().Name() and column.TimeUnit() = search.TimeUnit() );
+
+ if( not isnull( column ) ){
+
+ //鐢熶骇
+ production := column.CellValue( relnew, Value := [String]cell.ProductionQuantity() );
+ showrowproduction.CellValue( relinsert, production );
+ sumproduction := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
+ if( isnull( sumproduction ) ){
+ sumproduction := column.CellValue( relnew, Value := [String]0 );
+ sumrowproduction.CellValue( relinsert, sumproduction );
+ }
+ sumproduction.Value( [String]( [Real]sumproduction.Value() + cell.ProductionQuantity() ) );
+
+ //澶ц繛浜ч噺
+ dlproductionquantity := guard( cell.Production().DLProduction(), 0 );
+ dlproduction := column.CellValue( relnew, Value := [String]dlproductionquantity );
+ showrowdlproduction.CellValue( relinsert, dlproduction );
+ sumdlproduction := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
+ if( isnull( sumdlproduction ) ){
+ sumdlproduction := column.CellValue( relnew, Value := [String]0 );
+ sumrowdlproduction.CellValue( relinsert, sumdlproduction );
+ }
+ sumdlproduction.Value( [String]( [Real]sumdlproduction.Value() + dlproductionquantity ) );
+
+ //闀挎槬浜ч噺
+ ccproductionquantity := guard( cell.Production().CCProduction(), 0 );
+ ccproduction := column.CellValue( relnew, Value := [String]ccproductionquantity );
+ showrowccproduction.CellValue( relinsert, ccproduction );
+ sumccproduction := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
+ if( isnull( sumccproduction ) ){
+ sumccproduction := column.CellValue( relnew, Value := [String]0 );
+ sumrowccproduction.CellValue( relinsert, sumccproduction );
+ }
+ sumccproduction.Value( [String]( [Real]sumccproduction.Value() + ccproductionquantity ) );
+
+ //闇�姹�
+ totaldemand := column.CellValue( relnew, Value := [String]cell.DemandQuantity() );
+ showrowdemand.CellValue( relinsert, totaldemand );
+ sumdemand := selectobject( column, CellValue, c, c.Row() = sumrowdemand );
+ if( isnull( sumdemand ) ){
+ sumdemand := column.CellValue( relnew, Value := [String]0 );
+ sumrowdemand.CellValue( relinsert, sumdemand );
+ }
+ sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
+
+ traverse( cell, Demand, demand ){
+ demandrow := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
+ sumdemandrow := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
+
+ if( not isnull( demandrow ) ){
+ demandcell := column.CellValue( relnew, Value := [String]demand.Quantity() );
+ demandrow.CellValue( relinsert, demandcell );
+ }
+
+ sumdemandcell := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
+ if( isnull( sumdemandcell ) ){
+ sumdemandcell := column.CellValue( relnew, Value := [String]0 );
+ sumdemandrow.CellValue( relinsert, sumdemandcell );
+ }
+ sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demand.Quantity() ) );
+ }
+
+ for( demandr := showrowdemand.RowNr() + 1; demandr < showrowinventory.RowNr(); demandr := demandr + 1 ){
+ demandrow := selectobject( this, Row, r, r.RowNr() = demandr );
+ if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
+ demandcell := column.CellValue( relnew, Value := '' );
+ demandrow.CellValue( relinsert, demandcell );
+ }
+ }
+
+
+ //搴撳瓨
+ inventory := column.CellValue( relnew, Value := [String]cell.InventoryQuantity() );
+ showrowinventory.CellValue( relinsert, inventory );
+ suminventory := selectobject( column, CellValue, c, c.Row() = sumrowinventory );
+ if( isnull( suminventory ) ){
+ suminventory := column.CellValue( relnew, Value := [String]0 );
+ sumrowinventory.CellValue( relinsert, suminventory );
+ }
+ suminventory.Value( [String]( [Real]suminventory.Value() + cell.InventoryQuantity() ) );
+
+ }
+ }
+ }
+ traverse( this, Column, column ){
+ for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
+ demandrow := selectobject( this, Row, r, r.RowNr() = demandr );
+ if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
+ demandcell := column.CellValue( relnew, Value := '' );
+ demandrow.CellValue( relinsert, demandcell );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl b/_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..1eba4c1
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner,
+ String timeunit,
+ Date startdate,
+ Date enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
+ traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
+ and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
+ or period.TimeUnit() = timeunit ) ){
+ periodtime := period.StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl b/_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl
new file mode 100644
index 0000000..e4936c2
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String product
+) as EnginePipelineRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ row := selectobject( this, Row, row, row.Name() = product );
+
+ if( isnull( row ) ){
+ row := this.Row( relnew, Name := product );
+ //鍒濆鍖栧崟鍏冩牸
+ row.InitializeCell( this );
+ }
+
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..e912c3f
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/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_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..77d1f16
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/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_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..4759121
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/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 (Spain)';
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..cc879a1
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/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 'Engine pipelines';
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl b/_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl
new file mode 100644
index 0000000..633e95a
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineReport
+{
+ #keys: '5[415136.0.883574710][415136.0.883574708][0.0.0][415136.0.883574709][415136.0.883574711]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎姤琛�'
+ StructuredName: 'EnginePipelineReports'
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl b/_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl
new file mode 100644
index 0000000..5708f85
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.883574695][415136.0.883574694][415136.0.883574696]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl b/_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..b3b14d3
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.883574698][415136.0.883574697][415136.0.883574699]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl b/_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl b/_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl
new file mode 100644
index 0000000..d63c966
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ EnginePipelineColumn column
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := column.Cell( relnew, InventoryQuantity := 0 );
+
+ this.Cell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl b/_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl
new file mode 100644
index 0000000..78516db
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ EnginePipelineReport table
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ traverse( table, Column, column ){
+ this.Initialize( column );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl b/_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl
new file mode 100644
index 0000000..b1ce10b
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellDemandValue (
+ EnginePipelineColumn column,
+ String segment,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ demand := selectobject( cell, Demand, demand, demand.EngineType() = cell.Row().Name() and demand.Model() = segment and demand.Period() = column.Period() );
+
+ if( isnull( demand ) ){
+ demand := cell.Demand( relnew, EngineType := cell.Row().Name(), Period := column.Period(), Model := segment, Quantity := 0 );
+ }
+
+ demand.Quantity( demand.Quantity() + quantity );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl b/_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl
new file mode 100644
index 0000000..d72aa93
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellInventoryValue (
+ EnginePipelineColumn column,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ cell.InventoryQuantity( cell.InventoryQuantity() + quantity );
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl b/_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl
new file mode 100644
index 0000000..fbe0391
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellProductionValue (
+ EnginePipelineColumn column,
+ String unit,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ production := cell.Production();
+
+ if( isnull( production ) ){
+ production := cell.Production( relnew, EngineType := cell.Row().Name(), Period := column.Period(), DLProduction := 0, CCProduction := 0 );
+ }
+
+ if( unit = EnginePipelineReport::GetDefaultCCUnit() ){
+ production.CCProduction( production.CCProduction() + quantity );
+ }else if( unit = EnginePipelineReport::GetDefaultDLUnit() ){
+ production.DLProduction( production.DLProduction() + quantity );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl b/_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
new file mode 100644
index 0000000..bef755c
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CraeteCellValueForRow (
+ EnginePipelineReport table,
+ EnginePipelineColumn productcolumn,
+ EnginePipelineColumn attricolumn,
+ String productname,
+ String attriname,
+ Number rownr,
+ Boolean isfirst
+) as EnginePipelineRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-11-2024 (created)
+ row := table.Row( relnew, Name := productname, RowNr := rownr );
+ if( not isfirst ){
+ productname := '';
+ }
+ pcell := productcolumn.CellValue( relnew, Value := productname );
+ acell := attricolumn.CellValue( relnew, Value := attriname );
+ row.CellValue( relinsert, pcell );
+ row.CellValue( relinsert, acell );
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl b/_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl
new file mode 100644
index 0000000..7316365
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineRow
+{
+ #keys: '5[415136.0.883574689][415136.0.883574687][0.0.0][415136.0.883574688][415136.0.883574690]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾胯'
+ StructuredName: 'EnginePipelineRows'
+}
diff --git a/_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl b/_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl
new file mode 100644
index 0000000..31562fa
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+ #keys: '3[415136.0.883574814][415136.0.883574813][415136.0.883574815]'
+ Description: '缁撴潫鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl b/_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl
new file mode 100644
index 0000000..89459da
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.883574802][415136.0.883574801][415136.0.883574803]'
+ Description: '寮�濮嬫椂闂�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl b/_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..a246ec7
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.883590020][415136.0.883590019][415136.0.883590021]'
+ Description: '鏃ユ湡绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl b/_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl
new file mode 100644
index 0000000..359f4a5
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineSearch
+{
+ #keys: '5[415136.0.883574730][415136.0.883574728][0.0.0][415136.0.883574729][415136.0.883574731]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎煡璇㈢被'
+ StructuredName: 'EnginePipelineSearchs'
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl b/_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl
new file mode 100644
index 0000000..15c082a
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.883574762][415136.0.883574761][415136.0.883574763]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl b/_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl
new file mode 100644
index 0000000..b611c42
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇鍙戝姩鏈虹绾挎暟鎹�'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, EnginePipelineSource.Report, 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 );
+
+ traverse ( table, Column, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ if( column.Index() = 0 ){
+ nameelement.TextContent( 'Product' );
+ }else if( column.Index() = 1 ){
+ nameelement.TextContent( 'Attribute' );
+ }else{
+ nameelement.TextContent( column.Name() );
+ }
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
+
+ cells := selectsortedset( column, CellValue, cell, cell.Row().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", c.Value() );
+ columnelement.AppendChild( cellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( EnginePipelineReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..1afd930
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -0,0 +1,73 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ owner.FinancialProductionSource( relflush );
+ ccunit := EnginePipelineReport::GetDefaultCCUnit();
+ dlunit := EnginePipelineReport::GetDefaultDLUnit();
+ //allunit := EnginePipelineReport::GetDefaultAllUnit();
+ source := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
+ table := source.Report( relnew, ID := source.Name(), Name := source.Name() );
+ showtable := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
+
+ search := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
+
+ products := construct( Product_MPs );
+ //鍒濆鍖栧垪
+ table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
+
+ //鐢熸垚鐢熶骇鍜屽簱瀛樻暟鎹�
+ traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
+ unit := pisp.StockingPoint_MP().UnitID();
+ // info( unit, pisp.ProductID() );
+ //鍒濆鍖栬
+ row := table.GetRow( pisp.ProductID() );
+
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
+ and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
+ or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
+ periodtime := pispip.Period_MP().StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ // info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() );
+ column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
+ // info( '---------------------------------', isnull( column ), isnull( row ) );
+ // info( '---------------------------------', column.Name(), row.Name() );
+ if( unit = ccunit or unit = dlunit ){
+ row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
+ }
+ row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() );
+ }
+ }
+
+ //鐢熸垚闇�姹傛暟鎹�
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
+ row := table.GetRow( forecast.ProductID() );
+ weekdate := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
+ periodtime := forecast.StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
+ weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() );
+
+ if( not isnull( column ) ){
+ row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() );
+ }
+
+ if( not isnull( weekcolumn ) ){
+ row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.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_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl b/_Main/BL/Type_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl
new file mode 100644
index 0000000..ba748aa
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EnginePipelineSource
+{
+ #keys: '5[415136.0.883574750][415136.0.883574748][0.0.0][415136.0.883574749][415136.0.883574751]'
+ BaseType: Object
+ Description: '鍙戝姩鏈虹绾挎姤琛�'
+ StructuredName: 'EnginePipelineSources'
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
index f2bc208..0fc5d8b 100644
--- a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -33,14 +33,16 @@
traverse( row, InventorySummaryCell, cell, cell.InventorySummaryColumn().TimeUnit() = search.Category() ){
column := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
- sumcell := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
-
- showcell := column.InventorySummaryCell( relnew, EndingInventory := cell.EndingInventory(), MinimumInventory := cell.MinimumInventory(), MaximumInventory := cell.MaximumInventory(), AverageInventory := cell.AverageInventory() );
- showrow.InventorySummaryCell( relinsert, showcell );
- sumcell.EndingInventory( sumcell.EndingInventory() + cell.EndingInventory() );
- sumcell.MinimumInventory( sumcell.MinimumInventory() + cell.MinimumInventory() );
- sumcell.MaximumInventory( sumcell.MaximumInventory() + cell.MaximumInventory() );
- sumcell.AverageInventory( sumcell.AverageInventory() + cell.AverageInventory() );
+ if( not isnull( column ) ){
+ sumcell := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
+
+ showcell := column.InventorySummaryCell( relnew, EndingInventory := cell.EndingInventory(), MinimumInventory := cell.MinimumInventory(), MaximumInventory := cell.MaximumInventory(), AverageInventory := cell.AverageInventory() );
+ showrow.InventorySummaryCell( relinsert, showcell );
+ sumcell.EndingInventory( sumcell.EndingInventory() + cell.EndingInventory() );
+ sumcell.MinimumInventory( sumcell.MinimumInventory() + cell.MinimumInventory() );
+ sumcell.MaximumInventory( sumcell.MaximumInventory() + cell.MaximumInventory() );
+ sumcell.AverageInventory( sumcell.AverageInventory() + cell.AverageInventory() );
+ }
}
}
}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
index 1b7156e..8bdba43 100644
--- a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -21,28 +21,28 @@
if( endtime > startofendyear ){
endtime := startofendyear;
}
- for( start := starttime; start <= endtime; start := start.StartOfNextDay() ){
- periodtime := start.Date();
- periodname := periodtime.Format( "M2/D2/Y" );
-
- if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Day() ){
- this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
- }
- if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Week() ){
- weekend := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();
+ for( start := starttime; start <= endtime; start := start.StartOfNextDay() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
- if( periodtime = weekend ){
- this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Week() );
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Day() ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
+ }
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Week() ){
+ weekend := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();
+
+ if( periodtime = weekend ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Week() );
+ }
+ }
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Month() ){
+ monthend := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
+
+ if( periodtime = monthend ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Month() );
+ }
}
}
- if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Month() ){
- monthend := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
-
- if( periodtime = monthend ){
- this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Month() );
- }
- }
- }
}
*]
}
diff --git a/_Main/BL/Type_MachiningPipelineCell/Attribute_DemandQuantity.qbl b/_Main/BL/Type_MachiningPipelineCell/Attribute_DemandQuantity.qbl
new file mode 100644
index 0000000..ab40217
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineCell/Attribute_DemandQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandQuantity
+{
+ #keys: '3[415136.0.886711537][415136.0.886711536][415136.0.886711538]'
+ Description: '闇�姹�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachiningPipelineCell/Attribute_InventoryQuantity.qbl b/_Main/BL/Type_MachiningPipelineCell/Attribute_InventoryQuantity.qbl
new file mode 100644
index 0000000..e1be197
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineCell/Attribute_InventoryQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryQuantity
+{
+ #keys: '3[415136.0.886711534][415136.0.886711533][415136.0.886711535]'
+ Description: '搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachiningPipelineCell/Attribute_ProductionQuantity.qbl b/_Main/BL/Type_MachiningPipelineCell/Attribute_ProductionQuantity.qbl
new file mode 100644
index 0000000..7426e8f
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineCell/Attribute_ProductionQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionQuantity
+{
+ #keys: '3[415136.0.886711531][415136.0.886711530][415136.0.886711532]'
+ Description: '鐢熶骇'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl b/_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl
new file mode 100644
index 0000000..ae5d58c
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineCell
+{
+ #keys: '5[415136.0.886711528][415136.0.886711526][0.0.0][415136.0.886711527][415136.0.886711529]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾挎姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'MachiningPipelineCells'
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl
new file mode 100644
index 0000000..3834786
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.886711548][415136.0.886711547][415136.0.886711549]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl
new file mode 100644
index 0000000..8fef8cd
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.886711551][415136.0.886711550][415136.0.886711552]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl
new file mode 100644
index 0000000..4ee9a29
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.886711554][415136.0.886711553][415136.0.886711555]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..3e870fe
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.886711557][415136.0.886711556][415136.0.886711558]'
+ Description: '鏃ユ湡绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl b/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl b/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl
new file mode 100644
index 0000000..e29979e
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: TimeUnit
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl b/_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl
new file mode 100644
index 0000000..56bbf20
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-21-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl b/_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl
new file mode 100644
index 0000000..34b6217
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineColumn
+{
+ #keys: '5[415136.0.886711545][415136.0.886711543][0.0.0][415136.0.886711544][415136.0.886711546]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾挎姤琛ㄥ垪'
+ StructuredName: 'MachiningPipelineColumns'
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl b/_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl
new file mode 100644
index 0000000..5e6ab08
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.886711585][415136.0.886711584][415136.0.886711586]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl b/_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..169625c
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.886711588][415136.0.886711587][415136.0.886711589]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl b/_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl
new file mode 100644
index 0000000..ca400d3
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.886711591][415136.0.886711590][415136.0.886711592]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl b/_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl b/_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl b/_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl
new file mode 100644
index 0000000..9ea6219
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear (
+ String timeunit,
+ Date startdate,
+ Date enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.Column( relflush );
+ this.Row( relflush );
+
+ this.GenerateColumn( this.Source().MacroPlan(), timeunit, startdate, enddate );
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl b/_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl
new file mode 100644
index 0000000..5d68879
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ EnginePipelineSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, Source.Report, report, not report.IsShow() );
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, true, product.ID() );
+ sumrow := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
+ traverse( table, Row, row, productids.Find( row.Name() ) >= 0 ){
+ showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
+
+ traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
+ column := selectobject( this, Column, column, column.Name() = cell.Column().Name() and column.TimeUnit() = search.TimeUnit() );
+
+ if( not isnull( column ) ){
+ sumcell := selectobject( column, Cell, c, c.Row() = sumrow );
+ if( isnull( sumcell ) ){
+ sumcell := column.Cell( relnew, InventoryQuantity := 0 );
+ sumrow.Cell( relinsert, sumcell );
+ }
+
+ showcell := cell.Copy( column );
+ showrow.Cell( relinsert, showcell );
+
+ sumcell.InventoryQuantity( cell.InventoryQuantity() + sumcell.InventoryQuantity() );
+
+ traverse( cell, Demand, demand ){
+ sumcell.Demand( relnew, EngineType := demand.EngineType(), Model := demand.Model(), Period := demand.Period(), Quantity := demand.Quantity() );
+ }
+
+ traverse( cell, Production, production ){
+ sumcell.Production( relnew, EngineType := production.EngineType(), Period := production.Period(), DLProduction := production.DLProduction(), CCProduction := production.CCProduction() );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl b/_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..1eba4c1
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner,
+ String timeunit,
+ Date startdate,
+ Date enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
+ traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
+ and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
+ or period.TimeUnit() = timeunit ) ){
+ periodtime := period.StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl b/_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl
new file mode 100644
index 0000000..e4936c2
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String product
+) as EnginePipelineRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ row := selectobject( this, Row, row, row.Name() = product );
+
+ if( isnull( row ) ){
+ row := this.Row( relnew, Name := product );
+ //鍒濆鍖栧崟鍏冩牸
+ row.InitializeCell( this );
+ }
+
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..e912c3f
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/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_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..854cd00
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/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_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..00cad20
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/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 (Spain)';
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..cc879a1
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/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 'Engine pipelines';
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl b/_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl
new file mode 100644
index 0000000..322c157
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineReport
+{
+ #keys: '5[415136.0.886711582][415136.0.886711580][0.0.0][415136.0.886711581][415136.0.886711583]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾挎姤琛�'
+ StructuredName: 'MachiningPipelineReports'
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl b/_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl
new file mode 100644
index 0000000..a3fe676
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.886711571][415136.0.886711570][415136.0.886711572]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl b/_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..d416652
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.886711574][415136.0.886711573][415136.0.886711575]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl b/_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl b/_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl
new file mode 100644
index 0000000..d63c966
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ EnginePipelineColumn column
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := column.Cell( relnew, InventoryQuantity := 0 );
+
+ this.Cell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl b/_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl
new file mode 100644
index 0000000..78516db
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ EnginePipelineReport table
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ traverse( table, Column, column ){
+ this.Initialize( column );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl
new file mode 100644
index 0000000..b1ce10b
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellDemandValue (
+ EnginePipelineColumn column,
+ String segment,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ demand := selectobject( cell, Demand, demand, demand.EngineType() = cell.Row().Name() and demand.Model() = segment and demand.Period() = column.Period() );
+
+ if( isnull( demand ) ){
+ demand := cell.Demand( relnew, EngineType := cell.Row().Name(), Period := column.Period(), Model := segment, Quantity := 0 );
+ }
+
+ demand.Quantity( demand.Quantity() + quantity );
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl
new file mode 100644
index 0000000..d72aa93
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellInventoryValue (
+ EnginePipelineColumn column,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ cell.InventoryQuantity( cell.InventoryQuantity() + quantity );
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl
new file mode 100644
index 0000000..98a8272
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellProductionValue (
+ EnginePipelineColumn column,
+ String unit,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, Cell, cell, cell.Column() = column );
+
+ production := selectobject( cell, Production, production, production.EngineType() = cell.Row().Name() and production.Period() = column.Period() );
+
+ if( isnull( production ) ){
+ production := cell.Production( relnew, EngineType := cell.Row().Name(), Period := column.Period(), DLProduction := 0, CCProduction := 0 );
+ }
+
+ if( unit = EnginePipelineReport::GetDefaultCCUnit() ){
+ production.CCProduction( production.CCProduction() + quantity );
+ }else if( unit = EnginePipelineReport::GetDefaultDLUnit() ){
+ production.DLProduction( production.DLProduction() + quantity );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl b/_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl
new file mode 100644
index 0000000..bbe4ab8
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineRow
+{
+ #keys: '5[415136.0.886711568][415136.0.886711566][0.0.0][415136.0.886711567][415136.0.886711569]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾胯'
+ StructuredName: 'MachiningPipelineRows'
+}
diff --git a/_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl b/_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl
new file mode 100644
index 0000000..1a0f3cb
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+ #keys: '3[415136.0.886711605][415136.0.886711604][415136.0.886711606]'
+ Description: '缁撴潫鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl b/_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl
new file mode 100644
index 0000000..4e30a0e
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.886711602][415136.0.886711601][415136.0.886711603]'
+ Description: '寮�濮嬫椂闂�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl b/_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..ec161a6
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.886711608][415136.0.886711607][415136.0.886711609]'
+ Description: '鏃ユ湡绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl b/_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl
new file mode 100644
index 0000000..e29979e
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: TimeUnit
+}
diff --git a/_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl b/_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl
new file mode 100644
index 0000000..e8b9a36
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineSearch
+{
+ #keys: '5[415136.0.886711599][415136.0.886711597][0.0.0][415136.0.886711598][415136.0.886711600]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾挎煡璇㈢被'
+ StructuredName: 'MachiningPipelineSearchs'
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl b/_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl
new file mode 100644
index 0000000..e3fa381
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.886711619][415136.0.886711618][415136.0.886711620]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl b/_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl
new file mode 100644
index 0000000..f7ed28d
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl
@@ -0,0 +1,102 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇鍙戝姩鏈虹绾挎暟鎹�'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, EnginePipelineSource.Report, 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
+ productcellElement1 := xmlDOM.CreateElement( "cell" );
+ productcellElement1.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement1 );
+ productcellElement2 := xmlDOM.CreateElement( "cell" );
+ productcellElement2.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement2 );
+ productcellElement3 := xmlDOM.CreateElement( "cell" );
+ productcellElement3.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement3 );
+ //Attribute
+ //鐢熶骇
+ endcellElement := xmlDOM.CreateElement( "cell" );
+ endcellElement.SetAttribute( "value", 'ProductionQuantity' );
+ attricolumnelement.AppendChild( endcellElement );
+ //闇�姹�
+ mincellElement := xmlDOM.CreateElement( "cell" );
+ mincellElement.SetAttribute( "value", 'DemandQuantity' );
+ attricolumnelement.AppendChild( mincellElement );
+ //搴撳瓨
+ maxcellElement := xmlDOM.CreateElement( "cell" );
+ maxcellElement.SetAttribute( "value", 'InventoryQUantity' );
+ attricolumnelement.AppendChild( maxcellElement );
+ }
+ //鐢熶骇
+ endcellElement := xmlDOM.CreateElement( "cell" );
+ endcellElement.SetAttribute( "value", [String]c.ProductionQuantity() );
+ columnelement.AppendChild( endcellElement );
+ //闇�姹�
+ mincellElement := xmlDOM.CreateElement( "cell" );
+ mincellElement.SetAttribute( "value", [String]c.DemandQuantity() );
+ columnelement.AppendChild( mincellElement );
+ //搴撳瓨
+ maxcellElement := xmlDOM.CreateElement( "cell" );
+ maxcellElement.SetAttribute( "value", [String]c.InventoryQuantity() );
+ columnelement.AppendChild( maxcellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( EnginePipelineReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..0941931
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -0,0 +1,73 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ owner.FinancialProductionSource( relflush );
+ ccunit := EnginePipelineReport::GetDefaultCCUnit();
+ dlunit := EnginePipelineReport::GetDefaultDLUnit();
+ //allunit := EnginePipelineReport::GetDefaultAllUnit();
+ source := owner.EnginePipelineSource( relnew, Name := FinancialProductionReport::GetDefaultName() );
+ table := source.Report( relnew, ID := source.Name(), Name := source.Name() );
+ showtable := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
+
+ search := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
+
+ products := construct( Product_MPs );
+ //鍒濆鍖栧垪
+ table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
+
+ //鐢熸垚鐢熶骇鍜屽簱瀛樻暟鎹�
+ traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
+ unit := pisp.StockingPoint_MP().UnitID();
+ // info( unit, pisp.ProductID() );
+ //鍒濆鍖栬
+ row := table.GetRow( pisp.ProductID() );
+
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
+ and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
+ or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
+ periodtime := pispip.Period_MP().StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ // info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() );
+ column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
+ // info( '---------------------------------', isnull( column ), isnull( row ) );
+ // info( '---------------------------------', column.Name(), row.Name() );
+ if( unit = ccunit or unit = dlunit ){
+ row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
+ }
+ row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() );
+ }
+ }
+
+ //鐢熸垚闇�姹傛暟鎹�
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
+ row := table.GetRow( forecast.ProductID() );
+ weekdate := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
+ periodtime := forecast.StartDate();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
+ weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() );
+
+ if( not isnull( column ) ){
+ row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() );
+ }
+
+ if( not isnull( weekcolumn ) ){
+ row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.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_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl b/_Main/BL/Type_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl
new file mode 100644
index 0000000..c2ef091
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachiningPipelineSource
+{
+ #keys: '5[415136.0.886711616][415136.0.886711614][0.0.0][415136.0.886711615][415136.0.886711617]'
+ BaseType: Object
+ Description: '鏈哄姞宸ョ绾挎姤琛�'
+ StructuredName: 'MachiningPipelineSources'
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl
new file mode 100644
index 0000000..7a751da
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryWeight
+{
+ #keys: '3[413988.0.1322880151][413988.0.1322880150][413988.0.1322880152]'
+ Description: '鍓╀綑搴撳瓨 - 鏈�灏忓簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl
new file mode 100644
index 0000000..32962f1
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionSerialNumber
+{
+ #keys: '3[413988.0.1322244634][413988.0.1322244633][413988.0.1322244635]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..44711cf
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[413988.0.1313380008][413988.0.1313380007][413988.0.1313380009]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl b/_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl
new file mode 100644
index 0000000..d2192ef
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Method FindType (
+ String type,
+ String pl
+) as Boolean
+{
+ TextBody: 'return this.OfflinePlanRow().Type() = type and this.OfflinePlanRow().ProductionLine() = pl and this.Quantity() > 0.0;'
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl
new file mode 100644
index 0000000..d9685ab
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ opt := maxselect( macroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
+ opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
+ oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
+ traverse ( opcs, Elements, opc ) {
+ column := xmlDOM.CreateElement( "column" );
+ name := xmlDOM.CreateElement( "name" );
+ type := xmlDOM.CreateElement( "type" );
+ name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
+ type.TextContent( "String" );
+ column.AppendChild( name );
+ column.AppendChild( type );
+
+ traverse ( oprs, Elements, opr ) {
+ c := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow() = opr );
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", guard( c.Value(), "" ) );
+ column.AppendChild( cell );
+ }
+
+ tableElement.AppendChild( column );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
index 5e7cd09..75941d4 100644
--- a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
+++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -6,48 +6,51 @@
{
TextBody:
[*
- macroPlan.OfflinePlanRow( relflush );
- macroPlan.OfflinePlanColumn( relflush );
+ macroPlan.OfflinePlanTable( relflush );
+
+ opt := macroPlan.OfflinePlanTable( relnew, SaveDateTime := DateTime::ActualTime() );
// 鐢熸垚涓嬬嚎璁″垝琛�
- traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() and u.Name() = "ZP4-M3" ) {
+ traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() /*and u.Name() = "Spider Assy Line 1"*/ ) {
// 鍒涘缓浜х嚎琛�
- macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
+ opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
traverse ( u, Operation, o ) {
traverse ( o, PeriodTaskOperation.NewSupply, ns ) {
// 鎵捐
- oprQuantity := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "1" );
- oprOrder := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "2" );
+ oprQuantity := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = u.ID() and tempOPR.ProductID() = ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID() and tempOPR.Type() = "1" );
+ oprOrder := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = u.ID() and tempOPR.ProductID() = ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID() and tempOPR.Type() = "2" );
if ( isnull( oprQuantity ) and isnull( oprOrder ) ) {
- oprQuantity := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" );
- oprOrder := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" );
+ oprQuantity := opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" );
+ oprOrder := opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" );
}
// 鎵惧垪
- opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( ns.Start().Date() );
+ opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = ns.Start().Date() );
if ( isnull( opc ) ) {
- opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() );
+ opc := opt.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() );
}
// 璧嬪�煎崟鍏冩牸
- cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name() );
+ cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name(), Quantity := ns.Quantity() );
cellQuantity.OfflinePlanRow( relset, oprQuantity );
- cellOrder := opc.OfflinePlanCell( relnew, Value := "鍗曞彿" );
+ cellOrder := opc.OfflinePlanCell( relnew, Value := "鍗曞彿" + [String]ns.Quantity().Round( 0 ) + "_" + [String]( ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() ),
+ Quantity := ns.Quantity(),
+ InventoryWeight := ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() );
cellOrder.OfflinePlanRow( relset, oprOrder );
}
}
// 鍒涘缓鎬婚噺琛�
- macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
+ opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
// 鍒涘缓鐝琛�
- macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" );
+ opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" );
}
// 鍒涘缓浜у搧鍒�&绫诲瀷鍒�
- productOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
- typeOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
- traverse ( macroPlan, OfflinePlanRow, opr ) {
+ productOPC := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
+ typeOPC := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
+ traverse ( opt, OfflinePlanRow, opr ) {
if ( opr.Type() = "0" ) {
productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
productLineCell.OfflinePlanRow( relset, opr );
@@ -71,9 +74,9 @@
}
// 琛ュ叏鎬婚噺鍜岀彮娆�
- totalOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" );
- shiftOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" );
- traverse ( macroPlan, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) {
+ totalOPRs := selectset( opt, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" );
+ shiftOPRs := selectset( opt, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" );
+ traverse ( opt, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) {
traverse ( totalOPRs, Elements, totalOPR ) {
total := sum( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = totalOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1", [Real]tempOPC.Value() );
totalCell := opc.OfflinePlanCell( relnew, Value := [String]total );
@@ -93,11 +96,67 @@
indexDate := macroPlan.StartOfPlanning().Date();
endDate := Date::Construct( indexDate.Year(), 12, 31 );
while ( indexDate <= endDate ) {
- opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( indexDate );
+ opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = indexDate );
if ( isnull( opc ) ) {
- opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := indexDate );
+ opc := opt.OfflinePlanColumn( relnew, ColumnDate := indexDate );
}
indexDate := indexDate + 1;
}
+
+ Transaction::Transaction().PropagateAll();
+
+ // 璁剧疆鐢熶骇椤哄簭
+ productionLines := selectuniquevalues( opt, OfflinePlanRow, tempOPR, true, tempOPR.ProductionLine() );
+ traverse ( productionLines, Elements, pl ) {
+ indexColumn := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = macroPlan.StartOfPlanning().Date() );
+ previousColumn := indexColumn.PreviousColumn();
+ nextColumn := indexColumn.NextColumn();
+
+ while ( not isnull( indexColumn.NextColumn() ) ) {
+ productionSerialNumber := 1;
+ opcs := selectsortedset( indexColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.InventoryWeight() );
+ if ( opcs.Size() > 0 ) {
+ // 鍒ゅ畾1
+ previousOPC := maxselect( previousColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.ProductionSerialNumber() );
+ if ( isnull( previousOPC ) or indexColumn.ColumnDate() = macroPlan.StartOfPlanning().Date() ) {
+ opc := opcs.Element( 0 );
+ opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
+ opc.ProductionSerialNumber( productionSerialNumber );
+ productionSerialNumber++;
+ opcs.Remove( opc );
+ } else {
+ opc := select( opcs, Elements, tempOPC, tempOPC.OfflinePlanRow().ProductID() = previousOPC.OfflinePlanRow().ProductID() );
+ if ( not isnull( opc ) ) {
+ opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
+ opc.ProductionSerialNumber( productionSerialNumber );
+ productionSerialNumber++;
+ opcs.Remove( opc );
+ }
+ }
+
+ // 鍒ゅ畾2
+ nextOPCs := selectset( opcs, Elements, tempOPC,
+ exists( nextColumn, OfflinePlanCell, nextOPC, nextOPC.FindType( "2", pl ) and nextOPC.OfflinePlanRow().ProductID() = tempOPC.OfflinePlanRow().ProductID() ) );
+ if ( nextOPCs.Size() = 1 ) {
+ opc := nextOPCs.Element( 0 );
+ opc.Value( "#" + opcs.Size().Format( "N(LPad0(2))" ) );
+ opc.ProductionSerialNumber( opcs.Size() );
+ opcs.Remove( opc );
+ }
+
+ // 鍒ゅ畾3
+ traverse ( opcs, Elements, opc ) {
+ opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
+ opc.ProductionSerialNumber( productionSerialNumber );
+ productionSerialNumber++;
+ opcs.Remove( opc );
+ }
+ }
+
+ indexColumn := indexColumn.NextColumn();
+ previousColumn := indexColumn.PreviousColumn();
+ nextColumn := indexColumn.NextColumn();
+ }
+ }
*]
}
diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl
new file mode 100644
index 0000000..6ca5594
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SaveAsDraft (
+ MacroPlan macroPlan,
+ OfflinePlanTable opt
+) as OfflinePlanTable
+{
+ TextBody:
+ [*
+ newTable := opt.DeepCopy().astype( OfflinePlanTable );
+ newOPT := macroPlan.OfflinePlanTable( relinsert, &newTable );
+ newOPT.SaveDateTime( DateTime::ActualTime() );
+
+ return newOPT;
+ *]
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
index 620f728..506fc85 100644
--- a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
+++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
@@ -3,6 +3,5 @@
Attribute ColumnDate
{
#keys: '3[413988.0.1295080211][413988.0.1295080210][413988.0.1295080212]'
- IsReadOnly: true
ValueType: Date
}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl b/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
index 5063e35..075e8f9 100644
--- a/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
+++ b/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
@@ -6,7 +6,7 @@
[*
// lihongji Jun-27-2024 (created)
- value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
+ value := ifexpr( this.ColumnDate() < this.OfflinePlanTable().MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
this.ColumnName( value );
*]
diff --git a/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl b/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
deleted file mode 100644
index 15f5410..0000000
--- a/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
+++ /dev/null
@@ -1,12 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-TypeIndex OfflinePlanColumnTypeIndex
-{
- Attributes:
- [
- TypeIndexAttribute
- {
- ModelElement: ColumnDate
- }
- ]
-}
diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
index 0bd3a84..a10bf69 100644
--- a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
@@ -3,6 +3,5 @@
Attribute ProductID
{
#keys: '3[413988.0.1296697032][413988.0.1296697031][413988.0.1296697033]'
- IsReadOnly: true
ValueType: String
}
diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
index 2393a64..8033bb8 100644
--- a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
@@ -3,6 +3,5 @@
Attribute ProductionLine
{
#keys: '3[413988.0.1296697022][413988.0.1296697021][413988.0.1296697023]'
- IsReadOnly: true
ValueType: String
}
diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
index 4905125..491fe54 100644
--- a/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
@@ -11,6 +11,5 @@
鍚堣琛� 锛�3
鐝琛� 锛�4
*]
- IsReadOnly: true
ValueType: String
}
diff --git a/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl b/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
deleted file mode 100644
index 9850e05..0000000
--- a/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-TypeIndex OfflinePlanRowTypeIndex
-{
- Attributes:
- [
- TypeIndexAttribute
- {
- ModelElement: ProductionLine
- }
- TypeIndexAttribute
- {
- ModelElement: ProductID
- }
- TypeIndexAttribute
- {
- ModelElement: Type
- }
- ]
-}
diff --git a/_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl b/_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl
new file mode 100644
index 0000000..19036eb
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SaveDateTime
+{
+ #keys: '3[413988.0.1337732856][413988.0.1337732855][413988.0.1337732857]'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl b/_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl
new file mode 100644
index 0000000..808173a
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type OfflinePlanTable
+{
+ #keys: '5[413988.0.1337732852][413988.0.1337732850][0.0.0][413988.0.1337732851][413988.0.1337732853]'
+ BaseType: Object
+ StructuredName: 'OfflinePlanTables'
+}
diff --git a/_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl b/_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl
new file mode 100644
index 0000000..c870139
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ // 绗竴鍒楋紙鍚嶇О锛�
+ tprs := selectsortedset( macroPlan, TransferPlanRow, tempTPR, true, tempTPR.SourceStockpoingPointID(), tempTPR.TargetStockpoingPointID(), tempTPR.ProductID() );
+ firstColumn := xmlDOM.CreateElement( "column" );
+ firstName := xmlDOM.CreateElement( "name" );
+ firstType := xmlDOM.CreateElement( "type" );
+ firstName.TextContent( "" );
+ firstType.TextContent( "String" );
+ firstColumn.AppendChild( firstName );
+ firstColumn.AppendChild( firstType );
+ traverse ( tprs, Elements, tpr ) {
+ firstCell := xmlDOM.CreateElement( "cell" );
+ firstCell.SetAttribute( "value", tpr.Name() );
+ firstColumn.AppendChild( firstCell );
+ }
+ tableElement.AppendChild( firstColumn );
+
+ tpcs := selectsortedset( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() );
+ traverse ( tpcs, Elements, tpc ) {
+ column := xmlDOM.CreateElement( "column" );
+ name := xmlDOM.CreateElement( "name" );
+ type := xmlDOM.CreateElement( "type" );
+ name.TextContent( tpc.ColumnName() );
+ type.TextContent( /*ifexpr( tpc.ColumnDate().IsMinInfinity(), "String", "Number" )*/ "String" );
+ column.AppendChild( name );
+ column.AppendChild( type );
+
+ traverse ( tprs, Elements, tpr ) {
+ c := select( tpc, TransferPlanCell, tempTPC, tempTPC.TransferPlanRow() = tpr );
+ cell := xmlDOM.CreateElement( "cell" );
+ cell.SetAttribute( "value", guard( c.Value(), "" ) );
+ column.AppendChild( cell );
+ }
+ tableElement.AppendChild( column );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 7b5cae3..8417130 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -60,6 +60,17 @@
Taborder: 4
]
}
+ Component ButtonEnginePipelineReport
+ {
+ #keys: '[415136.0.884991586]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_CONNECTION'
+ Label: 'Engine pipeline report'
+ Taborder: 5
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
index 0eca66a..db2e7a4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,7 +22,7 @@
BaseType: 'WebButton'
Properties:
[
- Taborder: 2
+ Taborder: 3
]
}
Component bOfflinePlan
@@ -36,6 +36,18 @@
Taborder: 1
]
}
+ Component bAssemblyOnlinePlan
+ {
+ #keys: '[413988.0.1351375850]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Description: 'AssemblyOnlinePlan'
+ Image: 'PALM_TREE'
+ Label: 'Assembly online plan'
+ Taborder: 2
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def
new file mode 100644
index 0000000..e5bc9a9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonEnginePipelineReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClick
+{
+ #keys: '[415136.0.888144270]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Engine_pipleline_report", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def
new file mode 100644
index 0000000..22f9fef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgSecondDevelopmentPlan/bAssemblyOnlinePlan
+Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick
+{
+ #keys: '[413988.0.1351376064]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "AssemblyOnlinePlan", true);
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def
new file mode 100644
index 0000000..06c800f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+ #keys: '[413988.0.1353873495]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component btnOk
+ {
+ #keys: '[413988.0.1353873499]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'OK'
+ Taborder: 0
+ ]
+ }
+ Component btnCancel
+ {
+ #keys: '[413988.0.1353873501]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Cancel'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ Border: true
+ ExcludeFromActiveComponent: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Padding: 'true'
+ Style: 'footer'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlContent.def
new file mode 100644
index 0000000..84293b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlContent.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+ #keys: '[413988.0.1353873493]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component npDL
+ {
+ #keys: '[413988.0.1352730618]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'MacroPlan.AssemblyOnlineQuantity.DLMoMo'
+ Label: 'DL-MoMo (pcs)'
+ Taborder: 0
+ ]
+ }
+ Component npCC
+ {
+ #keys: '[413988.0.1353963744]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'MacroPlan.AssemblyOnlineQuantity.CCMoMo'
+ Label: 'CC-MoMo (pcs)'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Padding: 'true'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..ed92cc0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+ #keys: '[413988.0.1353873505]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..bceac07
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+ #keys: '[413988.0.1353873504]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.ApplyChanges();
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def
new file mode 100644
index 0000000..0ebf0d4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogAssemblyOnlineQuantity
+{
+ #keys: '[413988.0.1353873491]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pnlContent
+ #child: pnlActions
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ EnterButton: 'btnOk'
+ EscapeButton: 'btnCancel'
+ ExcludeFromActiveComponent: true
+ Padding: 'false'
+ Title: 'Assembly Online Quantity'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951\043480.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951\043480.def"
new file mode 100644
index 0000000..60dcc04
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951\043480.def"
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor951 id:MatrixEditor951_480
+{
+ #keys: '[413988.0.1351212727]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell491
+ {
+ #keys: '[413988.0.1351212728]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor548
+ {
+ #keys: '[413988.0.1351212729]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'AssemblyOnlinePlanColumn.AssemblyOnlinePlanCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'AssemblyOnlinePlanColumn'
+ Row: 'AssemblyOnlinePlanRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows271
+ {
+ #keys: '[413988.0.1351212730]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor869
+ {
+ #keys: '[413988.0.1351212731]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'AssemblyOnlinePlanRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'RowNr'
+ SortCriteria: 'ProductionLine;ProductID;Type'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns844
+ {
+ #keys: '[413988.0.1351212732]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor259
+ {
+ #keys: '[413988.0.1351212733]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'AssemblyOnlinePlanColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'ColumnName'
+ SortCriteria: 'ColumnDate'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage250_1
+ #child: matrixeditorContextMenu204_1
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns844'
+ ContextMenu: 'matrixeditorContextMenu204'
+ Rows: 'MatrixEditorRows271'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250\0431.def"
new file mode 100644
index 0000000..85a4ce3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage250 id:matrixEditorActionBarPage250_1
+{
+ #keys: '[413988.0.1351212734]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204\0431.def"
new file mode 100644
index 0000000..4f9427a
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu204 id:matrixeditorContextMenu204_1
+{
+ #keys: '[413988.0.1351212735]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def
new file mode 100644
index 0000000..40be45a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+ #keys: '[413988.0.1351212599]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor951_480
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def
new file mode 100644
index 0000000..68b8f49
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component pHeader
+{
+ #keys: '[413988.0.1351212581]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bDownload
+ {
+ #keys: '[413988.0.1351212648]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Download'
+ Taborder: 1
+ ]
+ }
+ Component bOnlineQuantity
+ {
+ #keys: '[413988.0.1351212668]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Online quantity'
+ Taborder: 2
+ ]
+ }
+ Component bRefresh id:bRefresh_187
+ {
+ #keys: '[413988.0.1351403370]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Refresh'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def
new file mode 100644
index 0000000..182017c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bDownload
+Response OnClick () id:Response_pHeader_bDownload_OnClick
+{
+ #keys: '[413988.0.1351313883]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := AssemblyOnlinePlanCell::Download( MacroPlan );
+
+ Application.Download( "Assembly online plan.xlsx", binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def
new file mode 100644
index 0000000..a69b457
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: pHeader/bOnlineQuantity
+Response OnClick () id:Response_pHeader_bOnlineQuantity_OnClick
+{
+ #keys: '[413988.0.1352760396]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ aoq := MacroPlan.AssemblyOnlineQuantity();
+ if ( isnull( aoq ) ) {
+ MacroPlan.AssemblyOnlineQuantity( relnew );
+ }
+
+ dlg := construct( DialogAssemblyOnlineQuantity );
+
+ ApplicationMacroPlanner.ShowFormModal( dlg );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick\043774.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick\043774.def"
new file mode 100644
index 0000000..7dc7da8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick\043774.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: pHeader/bRefresh_187
+Response OnClick () id:Response_pHeader_bRefresh_OnClick_774
+{
+ #keys: '[413988.0.1351403369]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
+
+ AssemblyOnlinePlanCell::RefreshData( MacroPlan, opt );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def
new file mode 100644
index 0000000..0ab03c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormAssemblyOnlinePlan
+{
+ #keys: '[413988.0.1351212562]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pHeader
+ #child: pContent
+ ]
+ Properties:
+ [
+ Title: 'Assembly online plan'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def
new file mode 100644
index 0000000..27d66db
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListEnginePipelineDemand
+{
+ #keys: '[415136.0.889610579]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorEnginePipelineDemand
+ {
+ #keys: '[415136.0.889610580]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[external[EnginePipelineCell]]'
+ Source: 'FormEnginePipelineReport.dhEnginePipelineCells'
+ Taborder: 0
+ Transformation: 'Elements.Demand'
+ ]
+ }
+ #child: listActionBarPageEnginePipelineDemand
+ Component DataSetLevelEnginePipelineDemand
+ {
+ #keys: '[415136.0.889610585]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuEnginePipelineDemand
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineType","title":"EngineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Model","title":"Model","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Model"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Period","title":"Period","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Period"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}}]'
+ ContextMenu: 'listContextMenuEnginePipelineDemand'
+ SortCriteria: 'EngineType;Model;Period'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def
new file mode 100644
index 0000000..cfc1102
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageEnginePipelineDemand
+{
+ #keys: '[415136.0.889610582]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def
new file mode 100644
index 0000000..dad609b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuEnginePipelineDemand
+{
+ #keys: '[415136.0.889610587]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def
new file mode 100644
index 0000000..16a715b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormEnginePipelineDemand
+{
+ #keys: '[415136.0.889610518]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListEnginePipelineDemand
+ ]
+ Properties:
+ [
+ Image: 'NOTE'
+ Title: 'Engine pipeline demand'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def
new file mode 100644
index 0000000..85baf9c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListEnginePipelineProduction
+{
+ #keys: '[415136.0.888050782]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorEnginePipelineProduction
+ {
+ #keys: '[415136.0.888050783]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[EnginePipelineCell]'
+ Source: 'FormEnginePipelineReport.dhEnginePipelineCells'
+ Taborder: 0
+ Transformation: 'Elements.Production'
+ ]
+ }
+ #child: listActionBarPageEnginePipelineProduction
+ Component DataSetLevelEnginePipelineProduction
+ {
+ #keys: '[415136.0.888050788]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuEnginePipelineProduction
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineType","title":"EngineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Period","title":"Period","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Period"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DLProduction","title":"DLProduction","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DLProduction"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CCProduction","title":"CCProduction","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CCProduction"}}]'
+ ContextMenu: 'listContextMenuEnginePipelineProduction'
+ SortCriteria: 'EngineType;Period'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def
new file mode 100644
index 0000000..360385c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageEnginePipelineProduction
+{
+ #keys: '[415136.0.888050785]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def
new file mode 100644
index 0000000..4e440a5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuEnginePipelineProduction
+{
+ #keys: '[415136.0.888050790]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def
new file mode 100644
index 0000000..4937166
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormEnginePipelineProduction
+{
+ #keys: '[415136.0.886943096]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListEnginePipelineProduction
+ ]
+ Properties:
+ [
+ Image: 'NOTE'
+ Title: 'Engine pipeline production'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..b681d32
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.884991429]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.884991430]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.884991431]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'EnginePipelineReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Column.CellValue'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'Column'
+ Row: 'Row'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.884991434]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.884991435]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'EnginePipelineReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Row'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'RowNr'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.884991438]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.884991439]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'EnginePipelineReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'Column'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable
+ #child: matrixeditorContextMenuTable
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def"
new file mode 100644
index 0000000..490d3d9
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelExport id:PanelExport_570
+{
+ #keys: '[415136.0.884991008]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonSummaryExport
+ {
+ #keys: '[415136.0.884991009]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def
new file mode 100644
index 0000000..647dc18
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelHeader
+{
+ #keys: '[415136.0.884990889]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelSearch
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod\043325.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod\043325.def"
new file mode 100644
index 0000000..adcaaa3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod\043325.def"
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+Component PanelPeriod id:PanelPeriod_325
+{
+ #keys: '[415136.0.884991005]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component DateSelectorStart
+ {
+ #keys: '[415136.0.884991006]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start date'
+ Taborder: 0
+ ]
+ }
+ Component DateSelectorEnd
+ {
+ #keys: '[415136.0.884991007]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Date: 9999-12-31
+ Label: 'End date'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def
new file mode 100644
index 0000000..7cfd66b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component PanelSearch
+{
+ #keys: '[415136.0.884991004]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelPeriod_325
+ #child: PanelExport_570
+ #child: PanelTimeUnit
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def
new file mode 100644
index 0000000..88e1943
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.884991246]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def
new file mode 100644
index 0000000..47c86f2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelTimeUnit
+{
+ #keys: '[415136.0.884991010]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component RadioButtonGroupUseForTimeUnit
+ {
+ #keys: '[415136.0.884991011]'
+ BaseType: 'WebRadioButtonGroup'
+ Properties:
+ [
+ ButtonLabels: 'Day;Week'
+ ButtonValues: 'Day;Week'
+ Orientation: 'horizontal'
+ ShowTitle: false
+ Taborder: 0
+ Title: 'Periods'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..511fcad
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.884991442]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..5a9cab1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.884991445]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def
new file mode 100644
index 0000000..2e8c090
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: MatrixEditorTable
+Response OnSelectionChanged (
+ structured[EnginePipelineCell] selection
+) id:Response_MatrixEditorTable_OnSelectionChanged
+{
+ #keys: '[415136.0.886943328]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMatrixEditor_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //閫夋嫨鐨勫崟鍏冩牸
+ dhEnginePipelineCells.Data( selection.Copy() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
new file mode 100644
index 0000000..54cbda2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormEnginePipelineReport_OnCreated
+{
+ #keys: '[415136.0.884991340]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
+ EnginePipelineSource::Initialize( MacroPlan );
+ //}
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
+ //info( '------------------2----------------', table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.Source().Search() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def
new file mode 100644
index 0000000..42b92ae
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelExport_570/ButtonSummaryExport
+Response OnClick () id:Response_PanelExport_570_ButtonSummaryExport_OnClick
+{
+ #keys: '[415136.0.884991001]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := EnginePipelineSource::Download( MacroPlan );
+
+ Application.Download( EnginePipelineReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
new file mode 100644
index 0000000..166de15
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelPeriod_325/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_325_DateSelectorEnd_OnChanged
+{
+ #keys: '[415136.0.884991002]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( this.Date() < DateSelectorStart.Date() ){
+ this.HintError( 'The end date cannot be less than the start date!' );
+ }else{
+ if( dhSearch.Data().EndDate() <> this.Date() ){
+ dhSearch.Data().EndDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
new file mode 100644
index 0000000..223f7f8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelPeriod_325/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_325_DateSelectorStart_OnChanged
+{
+ #keys: '[415136.0.884991003]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( this.Date() > DateSelectorEnd.Date() ){
+ this.HintError( 'The start date cannot be later than the end date!' );
+ }else{
+ if( dhSearch.Data().StartDate() <> this.Date() ){
+ dhSearch.Data().StartDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
new file mode 100644
index 0000000..57a65bb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
+Response OnChanged () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged
+{
+ #keys: '[415136.0.884991000]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
+ dhSearch.Data().TimeUnit( this.BoundValue() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
new file mode 100644
index 0000000..86c7e81
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
+Response OnCreated () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated
+{
+ #keys: '[415136.0.884990999]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
new file mode 100644
index 0000000..3a6bcc9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormEnginePipelineReport
+{
+ #keys: '[415136.0.884990753]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable id:DataHolderTable_750
+ {
+ #keys: '[415136.0.884990847]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'EnginePipelineReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch id:dhSearch_316
+ {
+ #keys: '[415136.0.884990864]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'EnginePipelineSearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelHeader
+ #child: PanelTable
+ Component dhEnginePipelineCells id:dhEnginePipelineCells_430
+ {
+ #keys: '[415136.0.888401920]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[EnginePipelineCell]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CONNECTION'
+ Title: 'Engine pipeline report'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
index fe8fadd..f819d7b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -17,7 +17,6 @@
ShowTitle: false
Taborder: 0
Title: 'Periods'
- Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
]
}
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
index b27dd5e..c0791c3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
@@ -17,8 +17,8 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
+ DataType: 'OfflinePlanTable'
+ Source: 'dhOfflinePlanTable'
Taborder: 0
Transformation: 'OfflinePlanColumn.OfflinePlanCell'
]
@@ -44,8 +44,8 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
+ DataType: 'OfflinePlanTable'
+ Source: 'dhOfflinePlanTable'
Taborder: 0
Transformation: 'OfflinePlanRow'
]
@@ -70,8 +70,8 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
+ DataType: 'OfflinePlanTable'
+ Source: 'dhOfflinePlanTable'
Taborder: 0
Transformation: 'OfflinePlanColumn'
]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def"
index 540aa26..a78013e 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def"
@@ -6,6 +6,16 @@
Children:
[
#child: MatrixEditor951
+ Component dhOfflinePlanTable
+ {
+ #keys: '[413988.0.1334780926]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'OfflinePlanTable'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def
new file mode 100644
index 0000000..910175d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pContent/dhOfflinePlanTable
+Response OnCreated () id:Response_pContent_dhOfflinePlanTable_OnCreated
+{
+ #keys: '[413988.0.1334780966]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
+
+ this.Data( opt );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
index 3df7e29..7e12122 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
@@ -5,8 +5,18 @@
#keys: '[413988.0.1297973899]'
CanBindMultiple: false
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
QuillAction
{
+ Body:
+ [*
+ binaryValue := OfflinePlanCell::Download( MacroPlan );
+
+ Application.Download( "Offline plan.xlsx", binaryValue.AsBinaryData() );
+ *]
GroupServerCalls: false
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
index 98e2fa5..94d48f9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
@@ -14,6 +14,11 @@
Body:
[*
OfflinePlanCell::RefreshOfflinePlan( MacroPlan );
+
+ opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
+ dhOfflinePlanTable.Data( opt );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
index 2fcf6dc..14e4993 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
@@ -5,8 +5,23 @@
#keys: '[413988.0.1297974069]'
CanBindMultiple: false
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
QuillAction
{
+ Body:
+ [*
+ currentOPT := dhOfflinePlanTable.Data();
+ targetOPT := maxselect( MacroPlan, OfflinePlanTable, tempOPT, tempOPT <> currentOPT, tempOPT.SaveDateTime() );
+ if ( not isnull( targetOPT ) ) {
+ currentOPT.Delete();
+ dhOfflinePlanTable.Data( targetOPT );
+ }
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
GroupServerCalls: false
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
index 6b50c94..e94ded1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
@@ -5,8 +5,19 @@
#keys: '[413988.0.1297974155]'
CanBindMultiple: false
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
QuillAction
{
+ Body:
+ [*
+ opt := OfflinePlanCell::SaveAsDraft( MacroPlan, dhOfflinePlanTable.Data() );
+ dhOfflinePlanTable.Data( opt );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
GroupServerCalls: false
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
index 17323ed..3895e17 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
@@ -5,8 +5,18 @@
#keys: '[413988.0.1292330526]'
CanBindMultiple: false
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
QuillAction
{
+ Body:
+ [*
+ binaryValue := TransferPlanCell::Download( MacroPlan );
+
+ Application.Download( "Transfer plan.xlsx", binaryValue.AsBinaryData() );
+ *]
GroupServerCalls: false
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw b/_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw
new file mode 100644
index 0000000..949db5a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw
@@ -0,0 +1,134 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormAssemblyOnlinePlan
+ {
+ title: 'QMacroPlanner::FormAssemblyOnlinePlan'
+ shown: true
+ componentID: 'QMacroPlanner::FormAssemblyOnlinePlan'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 14
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormAssemblyOnlinePlan_pHeader
+ {
+ sizeRatio: 1
+ }
+ FormAssemblyOnlinePlan_pContent
+ {
+ sizeRatio: 1
+ }
+ FormAssemblyOnlinePlan_MatrixEditor951
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 28
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 173
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormAssemblyOnlinePlan.MatrixEditor951'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_Value
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Value'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'ColumnDate'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'ProductionLine';datamember:'ProductID';datamember:'Type'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ form_FormGeneralSettings
+ {
+ title: 'General Settings'
+ shown: true
+ componentID: 'FormGeneralSettings'
+ layout
+ {
+ mode: 'dockright'
+ index: 0
+ }
+ components
+ {
+ FormGeneralSettings_PanelContent
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelGeneralParameter
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelLeadTimeDependent
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelShelfLife
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelSustainability
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelForecastNetting
+ {
+ sizeRatio: 1
+ }
+ FormGeneralSettings_PanelActions
+ {
+ sizeRatio: 1
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 0
+ image: 'HANDHELD_DEVICE'
+ description: ''
+ }
+ formatversion: 2
+ id: 'AssemblyOnlinePlan'
+ name: 'AssemblyOnlinePlan'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw b/_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw
new file mode 100644
index 0000000..c757468
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw
@@ -0,0 +1,353 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormEnginePipelineReport
+ {
+ title: 'QMacroPlanner::FormEnginePipelineReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormEnginePipelineReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormEnginePipelineReport_PanelHeader
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_PanelSearch
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_PanelPeriod
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_PanelTimeUnit
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_PanelExport
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormEnginePipelineReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormEnginePipelineReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_ProductionQuantity
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'ProductionQuantity'
+ }
+ attribute_DemandQuantity
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'DemandQuantity'
+ }
+ attribute_InventoryQuantity
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'InventoryQuantity'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ form_FormEnginePipelineProduction
+ {
+ title: 'QMacroPlanner::FormEnginePipelineProduction'
+ shown: true
+ componentID: 'QMacroPlanner::FormEnginePipelineProduction'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 16
+ rowSpan: 6
+ columnPosition: 1
+ columnSpan: 6
+ }
+ components
+ {
+ FormEnginePipelineProduction_ListEnginePipelineProduction
+ {
+ }
+ FormEnginePipelineProduction_DataSetLevelEnginePipelineProduction
+ {
+ groupDepth: -1
+ column_EngineType
+ {
+ columnId: 'EngineType'
+ dataPath: 'EngineType'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_Period
+ {
+ columnId: 'Period'
+ dataPath: 'Period'
+ dataType: 'date'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_DLProduction
+ {
+ columnId: 'DLProduction'
+ dataPath: 'DLProduction'
+ dataType: 'real'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_CCProduction
+ {
+ columnId: 'CCProduction'
+ dataPath: 'CCProduction'
+ dataType: 'real'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ form_FormEnginePipelineDemand
+ {
+ title: 'QMacroPlanner::FormEnginePipelineDemand'
+ shown: true
+ componentID: 'QMacroPlanner::FormEnginePipelineDemand'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 16
+ rowSpan: 6
+ columnPosition: 7
+ columnSpan: 6
+ }
+ components
+ {
+ FormEnginePipelineDemand_ListEnginePipelineDemand
+ {
+ }
+ FormEnginePipelineDemand_DataSetLevelEnginePipelineDemand
+ {
+ groupDepth: -1
+ column_EngineType
+ {
+ columnId: 'EngineType'
+ dataPath: 'EngineType'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_Model
+ {
+ columnId: 'Model'
+ dataPath: 'Model'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_Period
+ {
+ columnId: 'Period'
+ dataPath: 'Period'
+ dataType: 'date'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_Quantity
+ {
+ columnId: 'Quantity'
+ dataPath: 'Quantity'
+ dataType: 'real'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ form_FormOptimizerPuzzles
+ {
+ title: 'Optimizer Puzzles'
+ shown: false
+ componentID: 'FormOptimizerPuzzles'
+ layout
+ {
+ mode: 'dockright'
+ index: 0
+ }
+ components
+ {
+ FormOptimizerPuzzles_ListOptimizerPuzzles
+ {
+ }
+ FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 109
+ }
+ column_Description
+ {
+ columnId: 'Description'
+ dataPath: 'Description'
+ dataType: 'string'
+ title: 'Description'
+ index: 2
+ subtotals: ''
+ width: 207
+ }
+ }
+ }
+ }
+ form_FormKPI
+ {
+ title: 'KPI Dashboard'
+ shown: true
+ componentID: 'FormKPI'
+ layout
+ {
+ mode: 'dockright'
+ index: 1
+ }
+ components
+ {
+ FormKPI_PanelKPI
+ {
+ sizeRatio: 1
+ activeChild: 'PanelKPISelection'
+ }
+ FormKPI_PanelKPIDashboard
+ {
+ sizeRatio: 1
+ }
+ FormKPI_PanelKPISelection
+ {
+ sizeRatio: 1
+ }
+ FormKPI_ListKPISelection
+ {
+ QuillViewData
+ {
+ Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+ }
+ }
+ FormKPI_DataSetLevelKPISelection
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 200
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 20
+ image: 'DOCUMENT_CONNECTION'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Engine_pipleline_report'
+ name: 'Engine pipleline report'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
index 7bce92d..14d976f 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
@@ -33,7 +33,7 @@
totalHeaderWidth: 36
attributeHeaderWidthRatio: 0.6
nameHeaderWidthRatio: 0.4
- columnWidth: 100
+ columnWidth: 177
horizontalGrid: true
verticalGrid: true
backendState
diff --git "a/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw" "b/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw"
index f976497..7f49c04 100644
--- "a/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw"
+++ "b/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw"
@@ -17,7 +17,7 @@
CREATIONUSER 'quintiq/lihongji'
UPDATEDATETIME '2024-06-28T13:59:54'
UPDATEUSER 'quintiq/lihongji'
- LASTACCESSDATE '2024-06-28'
+ LASTACCESSDATE '2024-07-09'
VIEWSCOPE 0
}
AUTHORIZATIONS
@@ -43,13 +43,13 @@
INFOOBJECT
{
KEY [892.10.659695]
- OBJECTTYPE Application // appEditor
+ OBJECTTYPE Application
INFOOBJECTS
{
INFOOBJECT
{
KEY [892.10.659696]
- OBJECTTYPE Frame // Frame
+ OBJECTTYPE Frame
CONTENTS
{
State := maximized
@@ -61,7 +61,7 @@
INFOOBJECT
{
KEY [103784.990.795900613]
- OBJECTTYPE ValueHolder // vhSearchHistory
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value ''
@@ -70,7 +70,7 @@
INFOOBJECT
{
KEY [10786.1.820220316]
- OBJECTTYPE ValueHolder // vhLoadingErrCount
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value '0'
@@ -79,7 +79,7 @@
INFOOBJECT
{
KEY [10786.1.820229990]
- OBJECTTYPE ValueHolder // vhLoadReason
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value 'Startup'
@@ -88,7 +88,7 @@
INFOOBJECT
{
KEY [10786.1.821405088]
- OBJECTTYPE ValueHolder // vhWriteErrorCount
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value '0'
@@ -97,13 +97,10 @@
INFOOBJECT
{
KEY [10786.2.342765638]
- OBJECTTYPE ValueHolder // vhGlobals
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value ''
- }
- BASEINFOOBJECTS
- {
}
}
INFOOBJECT
@@ -112,7 +109,7 @@
SINGLEINSTANCE false
ID 'Type Details'
PARENTKEY [892.10.659696]
- OBJECTTYPE Form // frmObjectDefinitionBrowser
+ OBJECTTYPE Form
CREATETYPE frmObjectDefinitionBrowser
CONTENTS
{
@@ -120,15 +117,12 @@
(485,0,400,912)
DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;B0.5727;]TabIdx[0]Selection[FRONT]
}
- BASEINFOOBJECTS
- {
- }
INFOOBJECTS
{
INFOOBJECT
{
KEY [121142.0.500922030]
- OBJECTTYPE GUIDataSetLevel // dslTypes
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -170,7 +164,7 @@
INFOOBJECT
{
KEY [121142.0.500923128]
- OBJECTTYPE List // lstObjectDefinitionBrowser
+ OBJECTTYPE List
CONTENTS
{
Quantorrow := false
@@ -180,7 +174,7 @@
INFOOBJECT
{
KEY [121142.0.500923177]
- OBJECTTYPE GUIDataSetLevel // dslElements
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -224,7 +218,7 @@
INFOOBJECT
{
KEY [121142.0.500923178]
- OBJECTTYPE GUIDataSetLevel // dslOverrides
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -261,7 +255,7 @@
SINGLEINSTANCE false
ID 'Types per Module'
PARENTKEY [892.10.659696]
- OBJECTTYPE Form // frmTypesByModule
+ OBJECTTYPE Form
CREATETYPE frmTypesByModule
CONTENTS
{
@@ -274,7 +268,7 @@
BASEINFOOBJECT
{
KEY [136402.0.98084624]
- OBJECTTYPE GUIComponent // frmTypesByModule
+ OBJECTTYPE GUIComponent
COMPONENTDATA
{
[136402.0.98084624]:[103784.990.728734692]:[892.10.659816]:[514.0.129466]:[892.10.659835] STR 'true'
@@ -286,7 +280,7 @@
INFOOBJECT
{
KEY [121142.0.1211769996]
- OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel776
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -315,7 +309,7 @@
INFOOBJECT
{
KEY [103784.990.728734692]
- OBJECTTYPE List // ListTypes
+ OBJECTTYPE List
CONTENTS
{
Quantorrow := false
@@ -325,7 +319,7 @@
INFOOBJECT
{
KEY [101180.2.890701323]
- OBJECTTYPE ValueHolder // ValueHolder
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value 'false'
@@ -334,7 +328,7 @@
INFOOBJECT
{
KEY [10786.2.342808981]
- OBJECTTYPE ValueHolder // vhGlobals
+ OBJECTTYPE ValueHolder
CONTENTS
{
Value ''
@@ -343,7 +337,7 @@
INFOOBJECT
{
KEY [892.10.659838]
- OBJECTTYPE GUIDataSetLevel // dslTypes
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -377,7 +371,7 @@
INFOOBJECT
{
KEY [136402.0.98091406]
- OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelTypes
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -410,7 +404,7 @@
INFOOBJECT
{
KEY [135566.0.318964952]
- OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSpecializations
+ OBJECTTYPE GUIDataSetLevel
CONTENTS
{
Columns
@@ -451,7 +445,7 @@
SINGLEINSTANCE false
ID 'Model Overview'
PARENTKEY [892.10.659696]
- OBJECTTYPE Form // frmModelOverview
+ OBJECTTYPE Form
CREATETYPE frmModelOverview
CONTENTS
{
@@ -464,7 +458,7 @@
BASEINFOOBJECT
{
KEY [121142.0.36340892]
- OBJECTTYPE GUIContainerComponent // frmModelOverview
+ OBJECTTYPE GUIContainerComponent
COMPONENTDATA
{
[121142.0.36340892]:[121142.0.37512339]:[121142.0.40573788] STR 'PeriodTaskOperation:Unit:PeriodTaskLaneLeg:Operation:MacroPlan:Lane:PeriodTask_MP:NewSupply:LaneLeg:UnitPeriod:DependentDemand:ProductInTrip:Trip#601:266:-40:657:238:266:189:211:497:17:178:464:513#168:437:163:276:350:529:165:274:436:277:59:59:244#219:54:197:109:109:54:153:109:87:120:175:153:54#26:26:26:26:26:26:26:26:26:26:26:26:26'
@@ -477,14 +471,11 @@
INFOOBJECT
{
KEY [121142.0.37512339]
- OBJECTTYPE CustomDrawComponent // customDraw
+ OBJECTTYPE CustomDrawComponent
CONTENTS
{
ZoomX 1.331
ZoomY 1.331
- }
- INFOOBJECTS
- {
}
}
}
--
Gitblit v1.9.3