From 335657ab76933960edb1f13eca7f2d417041d902 Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期三, 03 七月 2024 10:22:34 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportHeader.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def | 19
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def | 6
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl | 27
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def | 47
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl | 23
_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl | 7
_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl | 57
_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def | 24
_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_FinancialSalesSource/Attribute_IsXLSX.qbl | 7
_Main/BL/Type_ProductInStockingPointInPeriod#228/_ROOT_Type_ProductInStockingPointInPeriod.qbl | 6
_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl | 26
_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl | 5
_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl | 8
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl | 27
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl | 2
_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def | 12
_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl | 40
_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl | 9
_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def | 10
_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def | 5
_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl | 20
_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl | 53
_Main/BL/Type_FinancialProductionReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_FinancialSalesSearch/_ROOT_Type_FinancialSalesSearch.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def | 20
_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl | 8
_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def | 24
_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl | 6
_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl | 17
_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl | 40
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable#1.def | 10
_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl | 7
_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl | 9
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl | 23
_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl | 10
_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl | 6
_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def | 16
_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def | 12
_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl | 7
_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl | 7
_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl | 7
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl | 8
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl | 15
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl | 16
_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 20
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl | 104 +
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_FinancialSalesColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl | 10
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl | 23
_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl | 13
_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl | 10
_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit#715.def | 24
_var/_Main/ProjSettings/EditorTC/Views/车道整班分析_[413988.0.1301140601].vw | 500 +++++
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointDLLine.qbl | 10
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl | 7
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl | 7
_Main/BL/Type_FinancialSalesRow/Attribute_Unit.qbl | 8
_Main/BL/Type_FinancialSalesSource/Attribute_FileBinaryValue.qbl | 7
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl | 20
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl | 8
_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl | 6
_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl | 44
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl | 2
_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl | 7
_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl | 6
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/_ROOT_XML_FinancialSalesReportXMLHeaders.qbl | 8
_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl | 6
_Main/BL/Type_InventroySummaryRow/Method_Initialize#0.qbl | 15
_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl | 22
_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl | 23
_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl | 7
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl | 20
_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl | 8
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl | 23
_Main/BL/Type_FinancialSalesReport/Attribute_Name.qbl | 8
_Main/BL/Type_FinancialSalesReport/Method_GenerateColumn.qbl | 20
_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl | 8
_Main/BL/Type_FinancialSalesReport/Method_ImportVerification.qbl | 57
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 22
_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl | 6
_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def | 5
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def | 10
_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl | 53
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl | 10
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl | 20
_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl | 8
_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def | 97 +
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def | 20
_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def | 24
_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl | 18
_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl | 36
_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl | 6
_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl | 6
_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl | 10
_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def | 20
_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__[124808.0.140900041].vw | 2
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl | 23
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl | 19
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower#858.def | 24
_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl | 10
_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl | 7
_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def | 20
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl | 23
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable#424.def | 14
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl | 103 +
_Main/BL/Type_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl | 10
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl | 11
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl | 6
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentAll.qbl | 10
_Main/BL/InfoMessages.qbl | 36
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def | 8
_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl | 15
_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl | 8
_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl | 27
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def | 18
_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl | 7
_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def | 16
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl | 7
_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def | 20
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def | 24
_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def | 10
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl | 35
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 20
_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def | 4
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def | 14
_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl | 10
_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def | 38
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def | 12
_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl | 6
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl | 10
_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl | 10
_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl | 39
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def | 19
_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl | 23
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl | 8
_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def | 11
_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl | 13
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl | 17
_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def | 34
_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw | 140 +
_Main/BL/Type_FinancialSalesCell/Attribute_Value.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def | 98 +
_Main/BL/Relations/Relation_FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_Financia.qbl | 26
_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def | 20
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl | 53
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl | 41
_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl | 13
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def | 46
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl | 7
_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl | 8
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable#623.def | 97 +
_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def | 38
_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl | 13
_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def | 30
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnCreated.def | 23
_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl | 8
_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl | 10
_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl | 44
_Main/BL/Type_FinancialSalesSearch/Attribute_Generation.qbl | 7
_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl | 6
_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSa.qbl | 23
_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl | 4
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def | 5
_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl | 6
_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl | 78
_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl | 78
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl | 11
_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def | 24
_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def | 6
_Main/BL/Type_FinancialSalesRow/_ROOT_Type_FinancialSalesRow.qbl | 10
_Main/BL/Type_FinancialSalesRow/Method_Initialize0.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB#603.def | 24
_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl | 13
_Main/BL/Type_FinancialSalesSource/StaticMethod_Upload.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def | 20
_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl | 7
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultName.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def | 12
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated.def | 23
_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl | 8
_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def | 20
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl | 6
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl | 13
_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration#844.def | 24
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl | 23
_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl | 7
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl | 44
_Main/BL/Type_FinancialSalesSource/Attribute_IsImport.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.def | 24
_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw | 120 +
_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def | 4
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def | 4
_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl | 13
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl | 23
_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def | 76
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def | 12
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 5
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def | 14
_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_FinancialSalesSearch/Attribute_MqbMlb.qbl | 7
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl | 6
_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl | 23
_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl | 7
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl | 26
_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl | 6
_Main/BL/Type_FinancialSalesSearch/Attribute_Unit.qbl | 8
_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl | 9
_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw | 92
_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 5
_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl | 23
_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl | 8
_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl | 9
285 files changed, 5,663 insertions(+), 45 deletions(-)
diff --git a/_Main/BL/InfoMessages.qbl b/_Main/BL/InfoMessages.qbl
index c2762b7..2e0fc10 100644
--- a/_Main/BL/InfoMessages.qbl
+++ b/_Main/BL/InfoMessages.qbl
@@ -98,6 +98,42 @@
{
DefaultText: 'The two products selected are the same.'
}
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyDuplicateData
+ {
+ DefaultText: 'There is duplicate data present.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyFactoryNoExist
+ {
+ DefaultText: 'Factory does not exist.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyIllegalCharacter
+ {
+ DefaultText: 'The required quantity contains illegal characters.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyIllegalTime
+ {
+ DefaultText: 'The required period contains illegal time.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyNegativeNumber
+ {
+ DefaultText: 'The required quantity includes negative numbers.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyNullStrings
+ {
+ DefaultText: 'Required fields contain empty data.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyOverPeriod
+ {
+ DefaultText: 'The template month is not within the planning cycle.'
+ }
+ InfoMessage MP_FinancialProductionReport_ImportIndetifyProductNoExist
+ {
+ DefaultText: 'Product does not exist.'
+ }
+ InfoMessage MP_FinancialProductionReport_Question
+ {
+ DefaultText: '瀵煎叆妯℃澘鍖呭惈鏈潵鏈堜唤鐨勮储鍔℃暟鎹紝鏄惁瑕嗙洊绯荤粺璁$畻缁撴灉锛�'
+ }
InfoMessage MP_LibCal_EventType_Exist
{
DefaultText: 'The ID or name is the same.'
diff --git a/_Main/BL/Relations/Relation_FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_Financia.qbl b/_Main/BL/Relations/Relation_FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_Financia.qbl
new file mode 100644
index 0000000..bfe2c42
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_Financia.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_FinancialSalesColumn
+{
+ #keys: '1[415136.0.857450656]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.857450675][415136.0.857450669][415136.0.857450676][415136.0.857450670][415136.0.857450677][415136.0.857450671][415136.0.857450678][415136.0.857450672][415136.0.857450679][415136.0.857450673][415136.0.857450680][415136.0.857450674]'
+ SequenceElementSuffix: 'CellInColumn'
+ SequenceSuffix: 'CellInColumn'
+ }
+ RelationSide.LeftSide FinancialSalesCell
+ {
+ #keys: '3[415136.0.857450658][415136.0.857450657][415136.0.857450659]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialSalesColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialSalesColumn
+ {
+ #keys: '3[415136.0.857450661][415136.0.857450660][415136.0.857450662]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl
new file mode 100644
index 0000000..107d9d8
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_FinancialSalesReport
+{
+ #keys: '1[415136.0.857450615]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.857450634][415136.0.857450628][415136.0.857450635][415136.0.857450629][415136.0.857450636][415136.0.857450630][415136.0.857450637][415136.0.857450631][415136.0.857450638][415136.0.857450632][415136.0.857450639][415136.0.857450633]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide FinancialSalesColumn
+ {
+ #keys: '3[415136.0.857450617][415136.0.857450616][415136.0.857450618]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialSalesReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialSalesReport
+ {
+ #keys: '3[415136.0.857450620][415136.0.857450619][415136.0.857450621]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl
new file mode 100644
index 0000000..8993e50
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_FinancialSalesReport
+{
+ #keys: '1[415136.0.857450551]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialSalesSource
+ {
+ #keys: '3[415136.0.857450553][415136.0.857450552][415136.0.857450554]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesReport
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialSalesReport
+ {
+ #keys: '3[415136.0.857450556][415136.0.857450555][415136.0.857450557]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialSalesSource
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSa.qbl b/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSa.qbl
new file mode 100644
index 0000000..e8a093d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSalesRow
+{
+ #keys: '1[415136.0.857450694]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialSalesCell
+ {
+ #keys: '3[415136.0.857450696][415136.0.857450695][415136.0.857450697]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialSalesRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialSalesRow
+ {
+ #keys: '3[415136.0.857450699][415136.0.857450698][415136.0.857450700]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl b/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl
new file mode 100644
index 0000000..5515d5d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_FinancialSalesRow
+{
+ #keys: '1[415136.0.857450585]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialSalesReport
+ {
+ #keys: '3[415136.0.857450587][415136.0.857450586][415136.0.857450588]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialSalesRow
+ {
+ #keys: '3[415136.0.857450590][415136.0.857450589][415136.0.857450591]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialSalesReport
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
new file mode 100644
index 0000000..e037345
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_FinancialSalesSource
+{
+ #keys: '1[415136.0.865304861]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialSalesSearch
+ {
+ #keys: '3[415136.0.865304863][415136.0.865304862][415136.0.865304864]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesSource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialSalesSource
+ {
+ #keys: '3[415136.0.865304866][415136.0.865304865][415136.0.865304867]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesSearch
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl b/_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl
new file mode 100644
index 0000000..0986a76
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource
+{
+ #keys: '1[415136.0.857450485]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.857450487][415136.0.857450486][415136.0.857450488]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialSalesSource
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialSalesSource
+ {
+ #keys: '3[415136.0.857450490][415136.0.857450489][415136.0.857450491]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl b/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl
new file mode 100644
index 0000000..b73e32a
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStockingPointInPeriod_InventorySummaryCell
+{
+ #keys: '1[415136.0.865101866]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ProductInStockingPointInPeriod
+ {
+ #keys: '3[415136.0.865101868][415136.0.865101867][415136.0.865101869]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865101871][415136.0.865101870][415136.0.865101872]'
+ Cardinality: '0to1'
+ ObjectDefinition: ProductInStockingPointInPeriod
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl b/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl
new file mode 100644
index 0000000..c042c63
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_InventorySummaryColumn
+{
+ #keys: '1[415136.0.865304752]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.865304771][415136.0.865304765][415136.0.865304772][415136.0.865304766][415136.0.865304773][415136.0.865304767][415136.0.865304774][415136.0.865304768][415136.0.865304775][415136.0.865304769][415136.0.865304776][415136.0.865304770]'
+ SequenceElementSuffix: 'CellInColumn'
+ SequenceSuffix: 'CellInColumn'
+ }
+ RelationSide.LeftSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865304754][415136.0.865304753][415136.0.865304755]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryColumn
+ {
+ #keys: '3[415136.0.865304757][415136.0.865304756][415136.0.865304758]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl b/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl
new file mode 100644
index 0000000..e1575bb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryReport_InventorySummaryColumn_InventorySummaryColumn_InventorySummaryReport
+{
+ #keys: '1[415136.0.865304722]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.865304741][415136.0.865304735][415136.0.865304742][415136.0.865304736][415136.0.865304743][415136.0.865304737][415136.0.865304744][415136.0.865304738][415136.0.865304745][415136.0.865304739][415136.0.865304746][415136.0.865304740]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide InventorySummaryColumn
+ {
+ #keys: '3[415136.0.865304724][415136.0.865304723][415136.0.865304725]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304727][415136.0.865304726][415136.0.865304728]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl b/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl
new file mode 100644
index 0000000..b0030b0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_InventorySummaryReport
+{
+ #keys: '1[415136.0.865304709]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventroySummaryRow
+ {
+ #keys: '3[415136.0.865304711][415136.0.865304710][415136.0.865304712]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304714][415136.0.865304713][415136.0.865304715]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventroySummaryRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl b/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
new file mode 100644
index 0000000..2fd19a0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySearch_InventorySummarySource_InventorySummarySource_InventorySummarySearch
+{
+ #keys: '1[415136.0.865304882]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304884][415136.0.865304883][415136.0.865304885]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySearch
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummarySearch
+ {
+ #keys: '3[415136.0.865304887][415136.0.865304886][415136.0.865304888]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl b/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl
new file mode 100644
index 0000000..2b2803e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySource_InventorySummaryReport_InventorySummaryReport_InventorySummarySource
+{
+ #keys: '1[415136.0.865304908]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummaryReport
+ {
+ #keys: '3[415136.0.865304910][415136.0.865304909][415136.0.865304911]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304913][415136.0.865304912][415136.0.865304914]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryReport
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl b/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl
new file mode 100644
index 0000000..ebfbb87
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource
+{
+ #keys: '1[415136.0.865304895]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.865304897][415136.0.865304896][415136.0.865304898]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummarySource
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventorySummarySource
+ {
+ #keys: '3[415136.0.865304900][415136.0.865304899][415136.0.865304901]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl b/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl
new file mode 100644
index 0000000..eeac640
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_InventroySummaryRow
+{
+ #keys: '1[415136.0.865304782]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InventorySummaryCell
+ {
+ #keys: '3[415136.0.865304784][415136.0.865304783][415136.0.865304785]'
+ Cardinality: '1toN'
+ ObjectDefinition: InventroySummaryRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InventroySummaryRow
+ {
+ #keys: '3[415136.0.865304787][415136.0.865304786][415136.0.865304788]'
+ Cardinality: '0to1'
+ ObjectDefinition: InventorySummaryCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl
new file mode 100644
index 0000000..44c130e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell
+{
+ #keys: '1[413988.0.1296697089]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide OfflinePlanColumn
+ {
+ #keys: '3[413988.0.1296697091][413988.0.1296697090][413988.0.1296697092]'
+ Cardinality: '0to1'
+ ObjectDefinition: OfflinePlanCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OfflinePlanCell
+ {
+ #keys: '3[413988.0.1296697094][413988.0.1296697093][413988.0.1296697095]'
+ Cardinality: '1toN'
+ ObjectDefinition: OfflinePlanColumn
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl
new file mode 100644
index 0000000..dfd7e00
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell
+{
+ #keys: '1[413988.0.1296697102]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide OfflinePlanRow
+ {
+ #keys: '3[413988.0.1296697104][413988.0.1296697103][413988.0.1296697105]'
+ Cardinality: '0to1'
+ ObjectDefinition: OfflinePlanCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OfflinePlanCell
+ {
+ #keys: '3[413988.0.1296697107][413988.0.1296697106][413988.0.1296697108]'
+ Cardinality: '1toN'
+ ObjectDefinition: OfflinePlanRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl b/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
new file mode 100644
index 0000000..ddb1bef
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
@@ -0,0 +1,23 @@
+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_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl b/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
new file mode 100644
index 0000000..c9dde81
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
@@ -0,0 +1,23 @@
+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/Type_FinancialProductionReport/Attribute_IsShow.qbl b/_Main/BL/Type_FinancialProductionReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..7d5bdf3
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.853939545][415136.0.853939544][415136.0.853939546]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl b/_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl
new file mode 100644
index 0000000..a629770
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.FinancialProductionColumn( relflush );
+ this.FinancialProductionRow( relflush );
+
+ this.GenerateColumn( this.FinancialProductionSource().MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl b/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
new file mode 100644
index 0000000..8ed085f
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ FinancialProductionSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, FinancialProductionSource.FinancialProductionReport, report, not report.IsShow() );
+ allunit := '<All>';
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear();
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+ sumrow := this.FinancialProductionRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.FinancialProductionRow( relsize ) );
+ traverse( table, FinancialProductionRow, row, row.Unit() = search.Unit() ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.FinancialProductionRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
+
+ traverse( row, FinancialProductionCell, cell ){
+ column := selectobject( this, FinancialProductionColumn, column, column.Name() = cell.FinancialProductionColumn().Name() );
+
+ sumcell := selectobject( column, FinancialProductionCell, c, c.FinancialProductionRow() = sumrow );
+ if( isnull( sumcell ) ){
+ sumcell := column.FinancialProductionCell( relnew, Value := '0' );
+ sumrow.FinancialProductionCell( relinsert, sumcell );
+ }
+
+ showcell := column.FinancialProductionCell( relnew, Value := cell.Value() );
+ showrow.FinancialProductionCell( relinsert, showcell );
+ value := [Real]cell.Value() + [Real]sumcell.Value();
+ sumcell.Value( [String]value );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl b/_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..85b473e
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ this.FinancialProductionColumn( relnew, Name := periodname, Period := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl b/_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl
new file mode 100644
index 0000000..eea236e
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+#parent: #root
+Method IdentifyNullValues
+{
+ TextBody:
+ [*
+ // 鍒犻櫎绌鸿鏁版嵁
+ productcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 0 );
+ unitcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 1 );
+ //鍒犻櫎娌℃湁瀵瑰簲鏃ユ湡鏁版嵁鐨勮
+ traverse ( this, FinancialProductionRow, row ) {
+ if ( forall( row, FinancialProductionCell, cell, true, ( cell.FinancialProductionColumn() <> productcolumn or cell.FinancialProductionColumn() <> unitcolumn ) and cell.Value().TrimBoth() = "" ) ) {
+ row.Delete();
+ }
+ }
+
+ // 鍒ゆ柇鏄惁瀛樺湪璐熸暟
+ traverse ( this, FinancialProductionRow.FinancialProductionCell, cell ) {
+ if ( cell.FinancialProductionColumn().Index() <= 1 ) {
+ if ( cell.Value().TrimBoth() = "" ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ }
+ } else {
+ if ( cell.Value().TrimBoth() = "" ) {
+ cell.Value( '0' );
+ // error( Translations::AC_SalesForecastInputSource_Error6() );
+ } else {
+ stn := StringToReal::StandardConverter();
+ if ( not stn.CanConvert( cell.Value().TrimBoth() ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalCharacter() );
+ } else {
+ if ( stn.Convert( cell.Value().TrimBoth() ) >= 0 ) {
+ cell.Value( [String]ceil( stn.Convert( cell.Value().TrimBoth() ) ) );
+ } else {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNegativeNumber() );
+ }
+ }
+ }
+ }
+
+ cell.FinancialProductionRow().DuplicateValueMarker( cell.FinancialProductionRow().DuplicateValueMarker() +
+ ifexpr( cell.FinancialProductionColumn().Index() = 0, "", "-" ) +
+ cell.Value()
+ );
+ }
+
+ // 鍒ゆ柇鏄惁瀛樺湪閲嶅鏁版嵁
+ row := selectduplicates( this, FinancialProductionRow, row, true, row.DuplicateValueMarker() );
+ if ( row.Size() > 1 ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyDuplicateData() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl b/_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl
new file mode 100644
index 0000000..55ea3ee
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl
@@ -0,0 +1,57 @@
+Quintiq file version 2.0
+#parent: #root
+Method ImportVerification
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-27-2024 (created)
+ owner := this.FinancialProductionSource().MacroPlan();
+ startofthisyear := owner.StartOfPlanning().StartOfYear().Date();
+ startofnextyear := owner.StartOfPlanning().StartOfNextYear().Date();
+
+ if ( exists( this, FinancialProductionColumn, column, ( column.Index() = 0 and column.Name() <> "Product" ) or
+ ( column.Index() = 1 and column.Name() <> "Unit" ) ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ }
+
+ indexcolumn := select( this, FinancialProductionColumn, column, column.Index() = 2 );
+ if ( isnull( indexcolumn ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ } else {
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( "dd/MM/yyyy" );
+
+ while ( not isnull( indexcolumn ) ) {
+ if ( not cnv2.CanConvert( indexcolumn.Name() ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalTime() );
+ }
+ period := cnv2.Convert( indexcolumn.Name() );
+ // info( "寮�濮嬫椂闂达細", this.SalesForecastInputSource().PlanningStartDate().Format( "Y-M2-D2" ),
+ // "缁撴潫鏃堕棿锛�", this.SalesForecastInputSource().PlanningEndDate().Format( "Y-M2-D2" ),
+ // "鍒楁椂闂达細", cnv2.Convert( indexColumn.name() ).Format( "Y-M2-D2" ) );
+ // 鍒ゆ柇鏄惁鍦ㄨ鍒掑懆鏈熷唴
+ if ( period <= startofthisyear or period >= startofnextyear ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyOverPeriod() );
+ }
+ indexcolumn := indexcolumn.NextColumn();
+ }
+ }
+
+ productcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 0 );
+ unitcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 1 );
+
+ units := selectuniquevalues( unitcolumn, FinancialProductionCell, cell, cell.Value() );
+ if( units.Size() <> 2 or ( units.Find( FinancialProductionReport::GetDefaultCCUnit() ) >= 0
+ and units.Find( FinancialProductionReport::GetDefaultDLUnit() ) >= 0 ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyFactoryNoExist() );
+ }
+
+ products := selectuniquevalues( productcolumn, FinancialProductionCell, cell, cell.Value() );
+ productnames := selectuniquevalues( owner, Product_MP, product, product.ID() );
+
+ if( not productnames.ContainsAll( products ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyProductNoExist() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
index 0c1bf92..e469589 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,6 +5,6 @@
TextBody:
[*
// 鐢勫叞楦� Jun-25-2024 (created)
- return 'Assembly Plant (France)';
+ return '闀挎槬';
*]
}
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
index a7800dd..71132d4 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,6 +5,6 @@
TextBody:
[*
// 鐢勫叞楦� Jun-25-2024 (created)
- return 'Assembly Plant (Spain)';
+ return '澶ц繛';
*]
}
diff --git a/_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl b/_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..4374a63
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DuplicateValueMarker
+{
+ #keys: '3[415136.0.857450433][415136.0.857450432][415136.0.857450434]'
+ Description: '鍒ゆ柇鏄惁瀛樺湪閲嶅鍊�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl b/_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..bbb8a45
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: DuplicateValueMarker
+}
diff --git a/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl b/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
index b5170ce..3d1ed85 100644
--- a/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
@@ -6,24 +6,27 @@
[*
// 鐢勫叞楦� Jun-24-2024 (created)
allunit := FinancialProductionReport::GetDefaultAllUnit();
- table := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
+ table := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and not table.IsShow() );
//info( '--------------------------', table.Name() );
traverse( this, FinancialProductionReport, report ){
productcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' );
unitcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Unit' );
+ // info( '----------------------1-----------------', productcolumn.Name(), unitcolumn.Name() );
traverse( report, FinancialProductionRow, row ){
product := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn );
unit := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn );
+ // info( '----------------------2-----------------', product.Value(), unit.Value() );
unitrow := selectobject( table, FinancialProductionRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
allrow := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
-
- traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)' ){
+ // info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
+ // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
+ traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn ){
column := cell.FinancialProductionColumn();
unitcell := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn().Name() = column.Name() );
allcell := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn().Name() = column.Name() );
- info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
+ // info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
if( not isnull( unitcell ) ){
unitcell.Value( cell.Value() );
}
diff --git a/_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl b/_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl
new file mode 100644
index 0000000..af99ca3
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Method IsExistFutureMonthData () as Boolean
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-26-2024 (created)
+ startofplanning := this.MacroPlan().StartOfPlanning().Date().Format( 'M2/D2/Y' );
+ columns := selectset( this, FinancialProductionReport.FinancialProductionColumn, column, column.Name() > startofplanning );
+ return exists( columns, Elements.FinancialProductionCell, cell, cell.Value() <> '' );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl b/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl
index 9e66381..44f9498 100644
--- a/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl
@@ -24,8 +24,13 @@
this.FinancialProductionReport( relinsert, &xlstable );
Transaction::Transaction().Propagate( attribute( FinancialProductionColumn, Index ) );
+
+ // 锛堝鍏ュ墠锛夌粰绌哄�艰祴浜堥粯璁ゅ�硷紙N/A锛�,骞朵笖鍒犻櫎绌鸿鏁版嵁鍜屾暟鎹牎楠�
+ xlstable.IdentifyNullValues();
+
+ xlstable.ImportVerification();
}
//瀵煎叆鍚庡鐞嗘暟鎹�
- this.AfterImport();
+ //this.AfterImport();
*]
}
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
index 102cea7..87f56b0 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
@@ -1,16 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
- MacroPlan macroPlan,
- Boolean istemplate
+ MacroPlan macroPlan
) as BinaryValue
{
Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
TextBody:
[*
- startofplanning := macroPlan.StartOfPlanning().Date();
- allunit := FinancialProductionReport::GetDefaultAllUnit();
- table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
+
+ table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
xmlDOMI := XMLDOMImplementation::Create();
xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
@@ -35,7 +33,7 @@
tableElement.AppendChild( productcolumnelement );
tableElement.AppendChild( unitcolumnelement );
- traverse ( table, FinancialProductionColumn, column, not istemplate or column.Period() < startofplanning ) {
+ traverse ( table, FinancialProductionColumn, column ) {
columnelement := xmlDOM.CreateElement( "column" );
nameelement := xmlDOM.CreateElement( "name" );
typeelement := xmlDOM.CreateElement( "type" );
@@ -44,7 +42,7 @@
columnelement.AppendChild( nameelement );
columnelement.AppendChild( typeelement );
- cells := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().Unit() <> allunit, cell.FinancialProductionRow().Name() );
+ cells := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().RowNr() );
traverse ( cells, Elements, c ) {
if( column.Index() = 0 ){
@@ -59,11 +57,7 @@
unitcolumnelement.AppendChild( unitcellElement );
}
cellElement := xmlDOM.CreateElement( "cell" );
- if( istemplate ){
- cellElement.SetAttribute( "value", '' );
- }else{
- cellElement.SetAttribute( "value", c.Value() );
- }
+ cellElement.SetAttribute( "value", c.Value() );
columnelement.AppendChild( cellElement );
}
tableElement.AppendChild( columnelement );
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl
index 6952017..10e878b 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl
@@ -12,9 +12,9 @@
tableElement := xmlDOM.GetElementByTagName( "table", 0 );
startofyear := macroPlan.StartOfPlanning().StartOfYear();
- startofplanning := macroPlan.StartOfPlanning();
+ startofnextyear := macroPlan.StartOfPlanning().StartOfNextYear();
- for( start := startofyear; start < startofplanning; start := start.StartOfNextMonth() ){
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
columnElement := xmlDOM.CreateElement( "column" );
nameElement := xmlDOM.CreateElement( "name" );
typeElement := xmlDOM.CreateElement( "type" );
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
index 8f1db4a..7a5ef26 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -13,12 +13,17 @@
allunit := FinancialProductionReport::GetDefaultAllUnit();
source := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() );
table := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
+ showtable := source.FinancialProductionReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsImport := false, IsShow := true );
startofplanning := owner.StartOfPlanning();
startofnextmonth := owner.StartOfPlanning().StartOfNextMonth();
startofyear := startofplanning.StartOfYear();
startofnextyear := startofplanning.StartOfNextYear();
- source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
+ search := source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
+
+ products := construct( Product_MPs );
+
+ table.GenerateColumn( owner );
traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
unit := pisp.StockingPoint_MP().UnitID();
@@ -32,6 +37,7 @@
dlrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit );
}
if( isnull( allrow ) ){
+ products.Add( pisp.Product_MP() );
allrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := allunit );
}
@@ -39,10 +45,6 @@
periodtime := start.Date();
periodname := periodtime.Format( "M2/D2/Y" );
column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime );
-
- if( isnull( column ) ){
- column := table.FinancialProductionColumn( relnew, Name := periodname, Period := periodtime );
- }
if( not isnull( ccrow ) ){
ccrow.Initialize( column, ccunit );
@@ -72,5 +74,12 @@
allrow.Initialize( column, pispip.NewSupplyProductionQuantity() );
}
}
+ rows := selectsortedset( table, FinancialProductionRow, 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_FinancialSalesCell/Attribute_Value.qbl b/_Main/BL/Type_FinancialSalesCell/Attribute_Value.qbl
new file mode 100644
index 0000000..4cd3ade
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[415136.0.857450650][415136.0.857450649][415136.0.857450651]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl b/_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl
new file mode 100644
index 0000000..913414b
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Value
+}
diff --git a/_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl b/_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl
new file mode 100644
index 0000000..f1bc544
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesCell
+{
+ #keys: '5[415136.0.857450647][415136.0.857450645][0.0.0][415136.0.857450646][415136.0.857450648]'
+ BaseType: Object
+ Description: '璐㈠姟閿�閲忔姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'FinancialSalesCells'
+}
diff --git a/_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl b/_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..ff0c958
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.857450603][415136.0.857450602][415136.0.857450604]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl b/_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..fc78517
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.857450606][415136.0.857450605][415136.0.857450607]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl b/_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..4f47768
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.857450609][415136.0.857450608][415136.0.857450610]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialSalesColumn/Function_CalcIndex.qbl b/_Main/BL/Type_FinancialSalesColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..56bbf20
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/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_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl b/_Main/BL/Type_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl
new file mode 100644
index 0000000..3e9adbd
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesColumn
+{
+ #keys: '5[415136.0.857450600][415136.0.857450598][0.0.0][415136.0.857450599][415136.0.857450601]'
+ BaseType: Object
+ Description: '璐㈠姟閿�閲忓垪'
+ StructuredName: 'FinancialSalesColumns'
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl b/_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl
new file mode 100644
index 0000000..bc94ba1
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.857450536][415136.0.857450535][415136.0.857450537]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl b/_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl
new file mode 100644
index 0000000..b8c1b97
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsImport
+{
+ #keys: '3[415136.0.857450539][415136.0.857450538][415136.0.857450540]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl b/_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..86e138b
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.857450542][415136.0.857450541][415136.0.857450543]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Attribute_Name.qbl b/_Main/BL/Type_FinancialSalesReport/Attribute_Name.qbl
new file mode 100644
index 0000000..5c81481
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.857450545][415136.0.857450544][415136.0.857450546]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl b/_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl b/_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl
new file mode 100644
index 0000000..60fd446
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.FinancialSalesColumn( relflush );
+ this.FinancialSalesRow( relflush );
+
+ this.GenerateColumn( this.FinancialSalesSource().MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl b/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl
new file mode 100644
index 0000000..767f175
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ FinancialSalesSearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, FinancialSalesSource.FinancialSalesReport, report, not report.IsShow() );
+ allunit := '<All>';
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear();
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+ sumrow := this.FinancialSalesRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.FinancialSalesRow( relsize ) );
+ traverse( table, FinancialSalesRow, row, row.Unit() = search.Unit() ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.FinancialSalesRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
+
+ traverse( row, FinancialSalesCell, cell ){
+ column := selectobject( this, FinancialSalesColumn, column, column.Name() = cell.FinancialSalesColumn().Name() );
+
+ sumcell := selectobject( column, FinancialSalesCell, c, c.FinancialSalesRow() = sumrow );
+ if( isnull( sumcell ) ){
+ sumcell := column.FinancialSalesCell( relnew, Value := '0' );
+ sumrow.FinancialSalesCell( relinsert, sumcell );
+ }
+
+ showcell := column.FinancialSalesCell( relnew, Value := cell.Value() );
+ showrow.FinancialSalesCell( relinsert, showcell );
+ value := [Real]cell.Value() + [Real]sumcell.Value();
+ sumcell.Value( [String]value );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_GenerateColumn.qbl b/_Main/BL/Type_FinancialSalesReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..8aed8c8
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_GenerateColumn.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ this.FinancialSalesColumn( relnew, Name := periodname, Period := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl b/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
new file mode 100644
index 0000000..a656035
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String salessegment,
+ String product,
+ DateTime startdate,
+ DateTime enddate
+) as FinancialSalesRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ row := selectobject( this, FinancialSalesRow, row, row.Name() = product and row.Unit() = salessegment );
+
+ if( isnull( row ) ){
+ row := this.FinancialSalesRow( relnew, Name := product, Unit := salessegment );
+ //鍒濆鍖栧崟鍏冩牸
+ row.InitializeCell( this, startdate, enddate );
+ }
+
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl b/_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl
new file mode 100644
index 0000000..efa6489
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+#parent: #root
+Method IdentifyNullValues
+{
+ TextBody:
+ [*
+ // 鍒犻櫎绌鸿鏁版嵁
+ productcolumn := selectobject( this, FinancialSalesColumn, column, column.Index() = 0 );
+ unitcolumn := selectobject( this, FinancialSalesColumn, column, column.Index() = 1 );
+ //鍒犻櫎娌℃湁瀵瑰簲鏃ユ湡鏁版嵁鐨勮
+ traverse ( this, FinancialSalesRow, row ) {
+ if ( forall( row, FinancialSalesCell, cell, true, ( cell.FinancialSalesColumn() <> productcolumn or cell.FinancialSalesColumn() <> unitcolumn ) and cell.Value().TrimBoth() = "" ) ) {
+ row.Delete();
+ }
+ }
+
+ // 鍒ゆ柇鏄惁瀛樺湪璐熸暟
+ traverse ( this, FinancialSalesRow.FinancialSalesCell, cell ) {
+ if ( cell.FinancialSalesColumn().Index() <= 1 ) {
+ if ( cell.Value().TrimBoth() = "" ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ }
+ } else {
+ if ( cell.Value().TrimBoth() = "" ) {
+ cell.Value( '0' );
+ // error( Translations::AC_SalesForecastInputSource_Error6() );
+ } else {
+ stn := StringToReal::StandardConverter();
+ if ( not stn.CanConvert( cell.Value().TrimBoth() ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalCharacter() );
+ } else {
+ if ( stn.Convert( cell.Value().TrimBoth() ) >= 0 ) {
+ cell.Value( [String]ceil( stn.Convert( cell.Value().TrimBoth() ) ) );
+ } else {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNegativeNumber() );
+ }
+ }
+ }
+ }
+
+ cell.FinancialSalesRow().DuplicateValueMarker( cell.FinancialSalesRow().DuplicateValueMarker() +
+ ifexpr( cell.FinancialSalesColumn().Index() = 0, "", "-" ) +
+ cell.Value()
+ );
+ }
+
+ // 鍒ゆ柇鏄惁瀛樺湪閲嶅鏁版嵁
+ row := selectduplicates( this, FinancialSalesRow, row, true, row.DuplicateValueMarker() );
+ if ( row.Size() > 1 ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyDuplicateData() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_ImportVerification.qbl b/_Main/BL/Type_FinancialSalesReport/Method_ImportVerification.qbl
new file mode 100644
index 0000000..73d9cf9
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_ImportVerification.qbl
@@ -0,0 +1,57 @@
+Quintiq file version 2.0
+#parent: #root
+Method ImportVerification
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-27-2024 (created)
+ owner := this.FinancialSalesSource().MacroPlan();
+ startofthisyear := owner.StartOfPlanning().StartOfYear().Date();
+ startofnextyear := owner.StartOfPlanning().StartOfNextYear().Date();
+
+ if ( exists( this, FinancialSalesColumn, column, ( column.Index() = 0 and column.Name() <> "Product" ) or
+ ( column.Index() = 1 and column.Name() <> "Unit" ) ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ }
+
+ indexcolumn := select( this, FinancialSalesColumn, column, column.Index() = 2 );
+ if ( isnull( indexcolumn ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
+ } else {
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( "dd/MM/yyyy" );
+
+ while ( not isnull( indexcolumn ) ) {
+ if ( not cnv2.CanConvert( indexcolumn.Name() ) ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalTime() );
+ }
+ period := cnv2.Convert( indexcolumn.Name() );
+ // info( "寮�濮嬫椂闂达細", this.SalesForecastInputSource().PlanningStartDate().Format( "Y-M2-D2" ),
+ // "缁撴潫鏃堕棿锛�", this.SalesForecastInputSource().PlanningEndDate().Format( "Y-M2-D2" ),
+ // "鍒楁椂闂达細", cnv2.Convert( indexColumn.name() ).Format( "Y-M2-D2" ) );
+ // 鍒ゆ柇鏄惁鍦ㄨ鍒掑懆鏈熷唴
+ if ( period <= startofthisyear or period >= startofnextyear ) {
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyOverPeriod() );
+ }
+ indexcolumn := indexcolumn.NextColumn();
+ }
+ }
+
+ productcolumn := selectobject( this, FinancialSalesColumn, column, column.Index() = 0 );
+ unitcolumn := selectobject( this, FinancialSalesColumn, column, column.Index() = 1 );
+
+ units := selectuniquevalues( unitcolumn, FinancialSalesCell, cell, cell.Value() );
+ if( units.Size() <> 2 or ( units.Find( FinancialProductionReport::GetDefaultCCUnit() ) >= 0
+ and units.Find( FinancialProductionReport::GetDefaultDLUnit() ) >= 0 ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyFactoryNoExist() );
+ }
+
+ products := selectuniquevalues( productcolumn, FinancialSalesCell, cell, cell.Value() );
+ productnames := selectuniquevalues( owner, Product_MP, product, product.ID() );
+
+ if( not productnames.ContainsAll( products ) ){
+ error( Translations::MP_FinancialProductionReport_ImportIndetifyProductNoExist() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl b/_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl
new file mode 100644
index 0000000..d58822b
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+Method SyncRows
+{
+ TextBody:
+ [*
+ totalRows := 0;
+ totalColumns := this.FinancialSalesColumn( relsize );
+
+ if ( totalColumns > 0 ) {
+ randomCol := select( this, FinancialSalesColumn, tempFPC, true );
+ totalRows := randomCol.FinancialSalesCell( relsize );
+
+ this.FinancialSalesRow( relflush );
+
+ cells := construct( FinancialSalesCells );
+ traverse ( this, FinancialSalesColumn, fpc ) {
+ cells.Add( fpc.FirstCellInColumn() );
+ }
+
+ for ( i := 0; i < totalRows; i++ ) {
+ assert( selectvalues( cells, Elements, c, true, c.FinancialSalesColumn().Index() ).ToString( "" ) =
+ selectvalues( selectsortedset( cells, Elements, c, true, c.FinancialSalesColumn().Index() ), Elements, c, true, c.FinancialSalesColumn().Index() ).ToString( "" ),
+ "Assertion error in FrockDataTable::syncRows: Cells not sorted by column index" );
+ row := this.FinancialSalesRow( relnew, RowNr := i );
+
+ newCells := construct( FinancialSalesCells );
+
+ traverse ( cells, Elements, c ) {
+ row.FinancialSalesCell( relinsert, c );
+
+ newCells.Add( c.NextCellInColumn() );
+ }
+
+ cells := &newCells;
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..14fdc56
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/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 'Financial sales';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl
new file mode 100644
index 0000000..356d9fd
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultTripLeadingTime () as Duration
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return Duration::Days( 2 );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentAll.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentAll.qbl
new file mode 100644
index 0000000..4163b5e
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentAll.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentAll () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '<All>';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl
new file mode 100644
index 0000000..05eb2ce
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentCC () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬';
+ //return 'China';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl
new file mode 100644
index 0000000..062b883
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentDL () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶ц繛';
+ //return 'Foregin';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl
new file mode 100644
index 0000000..70e1ce3
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentFS () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '浣涘北';
+ //return 'Germany';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl
new file mode 100644
index 0000000..7ad4f41
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalesSegmentTJ () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶╂触';
+ //return 'USA';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl
new file mode 100644
index 0000000..a57ce47
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointCCLine () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬瑁呴厤绾胯竟搴�';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl
new file mode 100644
index 0000000..d1d47c2
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointCCRent () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬澶栫搴�';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointDLLine.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointDLLine.qbl
new file mode 100644
index 0000000..7f89636
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointDLLine.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetStockingPointDLLine () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶ц繛瑁呴厤绾胯竟搴�';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLAddressType { }
+ XMLID Key { }
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLID QuintiqType { }
+ XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl
new file mode 100644
index 0000000..b72febd
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+ IdField: Key
+ ObjectTypeField: QuintiqType
+ TargetType: FinancialSalesCell
+ XMLID cell { }
+ Attributes:
+ [
+ XMLAttribute
+ {
+ Attribute: Value
+ XMLID value { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..7ff067e
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+ IdField: Key
+ ObjectTypeField: QuintiqType
+ TargetType: FinancialSalesColumn
+ XMLID column { }
+ Aggregates:
+ [
+ XMLAggregate
+ {
+ ElementDefinition: cell
+ GenerateOutput: false
+ Relation: FinancialSalesCell
+ XMLID FinancialSalesCell { }
+ }
+ ]
+ Attributes:
+ [
+ XMLAttribute
+ {
+ Attribute: Name
+ XMLID name { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..1a8667a
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+ IdField: Key
+ ObjectTypeField: QuintiqType
+ TargetType: FinancialSalesReport
+ XMLID table { }
+ Aggregates:
+ [
+ XMLAggregate
+ {
+ ElementDefinition: column
+ GenerateOutput: false
+ Relation: FinancialSalesColumn
+ XMLID FinancialSalesColumn { }
+ }
+ ]
+ Attributes:
+ [
+ XMLAttribute
+ {
+ Attribute: Name
+ XMLID name { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl
new file mode 100644
index 0000000..2cd2b1c
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#root
+#parent: #root
+XML FinancialSalesReportXML
+{
+ Direction: 'ImportExport'
+ Root: table
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl
new file mode 100644
index 0000000..4f408a0
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLAddressType { }
+ XMLID Key { }
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl
new file mode 100644
index 0000000..7468757
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+XMLElementId
+{
+ XMLID QuintiqType { }
+ XMLQualifierType { }
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl
new file mode 100644
index 0000000..341842b
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+ IdField: Key
+ ObjectTypeField: QuintiqType
+ TargetType: FinancialSalesColumn
+ XMLID column { }
+ Attributes:
+ [
+ XMLAttribute
+ {
+ Attribute: Name
+ XMLID name { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl
new file mode 100644
index 0000000..1a8667a
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+XMLObjectBase.ObjectDefinitions
+{
+ IdField: Key
+ ObjectTypeField: QuintiqType
+ TargetType: FinancialSalesReport
+ XMLID table { }
+ Aggregates:
+ [
+ XMLAggregate
+ {
+ ElementDefinition: column
+ GenerateOutput: false
+ Relation: FinancialSalesColumn
+ XMLID FinancialSalesColumn { }
+ }
+ ]
+ Attributes:
+ [
+ XMLAttribute
+ {
+ Attribute: Name
+ XMLID name { }
+ }
+ ]
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/_ROOT_XML_FinancialSalesReportXMLHeaders.qbl b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/_ROOT_XML_FinancialSalesReportXMLHeaders.qbl
new file mode 100644
index 0000000..205104a
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/_ROOT_XML_FinancialSalesReportXMLHeaders.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#root
+#parent: #root
+XML FinancialSalesReportXMLHeaders
+{
+ Direction: 'ImportExport'
+ Root: table
+}
diff --git a/_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl b/_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl
new file mode 100644
index 0000000..645566f
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesReport
+{
+ #keys: '5[415136.0.857450533][415136.0.857450531][0.0.0][415136.0.857450532][415136.0.857450534]'
+ BaseType: Object
+ Description: '璐㈠姟閿�閲忔姤琛�'
+ StructuredName: 'FinancialSalesReports'
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl b/_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..57e3d1f
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DuplicateValueMarker
+{
+ #keys: '3[415136.0.857450578][415136.0.857450577][415136.0.857450579]'
+ Description: '鍒ゆ柇鏄惁瀛樺湪閲嶅鍊�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl b/_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl
new file mode 100644
index 0000000..98dcd0d
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.857450569][415136.0.857450568][415136.0.857450570]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl b/_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..b0377b7
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.857450572][415136.0.857450571][415136.0.857450573]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Attribute_Unit.qbl b/_Main/BL/Type_FinancialSalesRow/Attribute_Unit.qbl
new file mode 100644
index 0000000..c8effb6
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.857450575][415136.0.857450574][415136.0.857450576]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl b/_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl
new file mode 100644
index 0000000..bbb8a45
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: DuplicateValueMarker
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl b/_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl b/_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl
new file mode 100644
index 0000000..8c62e9b
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filter (
+ FinancialProductionSearch search,
+ Product_MPs products
+) declarative remote as Boolean
+{
+ Description: '杩囨护'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ allunit := '<All>';
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+
+ productid := construct( Strings );
+ productid.Add( this.Name() );
+
+ return productids.ContainsAll( productid ) and this.Unit() = search.Unit();
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl b/_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl
new file mode 100644
index 0000000..e262727
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ FinancialSalesColumn column,
+ String unit
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := column.FinancialSalesCell( relnew, Value := '' );
+
+ this.FinancialSalesCell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Method_Initialize0.qbl b/_Main/BL/Type_FinancialSalesRow/Method_Initialize0.qbl
new file mode 100644
index 0000000..dd0f3b8
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Method_Initialize0.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ FinancialSalesColumn column,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, FinancialSalesCell, cell, cell.FinancialSalesColumn() = column );
+
+ value := [Real]cell.Value() + quantity;
+ cell.Value( [String]value );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl b/_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl
new file mode 100644
index 0000000..0ef49d7
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ FinancialSalesReport table,
+ DateTime startdate,
+ DateTime enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ for( start := startdate; start < enddate; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
+
+ this.Initialize( column, this.Unit() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesRow/_ROOT_Type_FinancialSalesRow.qbl b/_Main/BL/Type_FinancialSalesRow/_ROOT_Type_FinancialSalesRow.qbl
new file mode 100644
index 0000000..99a2b84
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/_ROOT_Type_FinancialSalesRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesRow
+{
+ #keys: '5[415136.0.857450566][415136.0.857450564][0.0.0][415136.0.857450565][415136.0.857450567]'
+ BaseType: Object
+ Description: '璐㈠姟閿�閲忚'
+ StructuredName: 'FinancialSalesRows'
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/Attribute_Generation.qbl b/_Main/BL/Type_FinancialSalesSearch/Attribute_Generation.qbl
new file mode 100644
index 0000000..2f19f9d
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[415136.0.857450503][415136.0.857450502][415136.0.857450504]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_FinancialSalesSearch/Attribute_MqbMlb.qbl
new file mode 100644
index 0000000..239bdc6
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/Attribute_MqbMlb.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MqbMlb
+{
+ #keys: '3[415136.0.857450506][415136.0.857450505][415136.0.857450507]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl b/_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl
new file mode 100644
index 0000000..97f1960
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Power
+{
+ #keys: '3[415136.0.857450509][415136.0.857450508][415136.0.857450510]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/Attribute_Unit.qbl b/_Main/BL/Type_FinancialSalesSearch/Attribute_Unit.qbl
new file mode 100644
index 0000000..8491b88
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.857450512][415136.0.857450511][415136.0.857450513]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl
new file mode 100644
index 0000000..78982c5
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MqbMlb
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl
new file mode 100644
index 0000000..4922731
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Power
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_FinancialSalesSearch/_ROOT_Type_FinancialSalesSearch.qbl b/_Main/BL/Type_FinancialSalesSearch/_ROOT_Type_FinancialSalesSearch.qbl
new file mode 100644
index 0000000..a529cb1
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSearch/_ROOT_Type_FinancialSalesSearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesSearch
+{
+ #keys: '5[415136.0.857450500][415136.0.857450498][0.0.0][415136.0.857450499][415136.0.857450501]'
+ BaseType: Object
+ Description: '鏌ヨ绫�'
+ StructuredName: 'FinancialSalesSearchs'
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_FileBinaryValue.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_FileBinaryValue.qbl
new file mode 100644
index 0000000..9872597
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_FileBinaryValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FileBinaryValue
+{
+ #keys: '3[415136.0.857450463][415136.0.857450462][415136.0.857450464]'
+ ValueType: BinaryValue
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_IsImport.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_IsImport.qbl
new file mode 100644
index 0000000..51e3fe5
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_IsImport.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsImport
+{
+ #keys: '3[415136.0.857450466][415136.0.857450465][415136.0.857450467]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_IsXLSX.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_IsXLSX.qbl
new file mode 100644
index 0000000..60d01bb
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_IsXLSX.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsXLSX
+{
+ #keys: '3[415136.0.857450469][415136.0.857450468][415136.0.857450470]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl
new file mode 100644
index 0000000..1e9a85d
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.857450472][415136.0.857450471][415136.0.857450473]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl
new file mode 100644
index 0000000..609affc
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UploadDateTime
+{
+ #keys: '3[415136.0.857450475][415136.0.857450474][415136.0.857450476]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl b/_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl
new file mode 100644
index 0000000..f7b6f0f
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UploadUser
+{
+ #keys: '3[415136.0.857450478][415136.0.857450477][415136.0.857450479]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl b/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl
new file mode 100644
index 0000000..8dde94e
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: UploadDateTime
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl b/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl
new file mode 100644
index 0000000..3dbb1dc
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: UploadUser
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl b/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
new file mode 100644
index 0000000..1ddcfd6
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+Method AfterImport
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ allunit := FinancialProductionReport::GetDefaultAllUnit();
+ table := selectobject( this.MacroPlan(), FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and not table.IsShow() );
+ //info( '--------------------------', table.Name() );
+ traverse( this, FinancialSalesReport, report ){
+ productcolumn := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Product' );
+ unitcolumn := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Unit' );
+ // info( '----------------------1-----------------', productcolumn.Name(), unitcolumn.Name() );
+
+ traverse( report, FinancialSalesRow, row ){
+ product := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = productcolumn );
+ unit := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = unitcolumn );
+ // info( '----------------------2-----------------', product.Value(), unit.Value() );
+
+ unitrow := selectobject( table, FinancialSalesRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
+ allrow := selectobject( table, FinancialSalesRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
+ // info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
+ // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
+ traverse( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() <> productcolumn and cell.FinancialSalesColumn() <> unitcolumn ){
+ column := cell.FinancialSalesColumn();
+ unitcell := selectobject( unitrow, FinancialSalesCell, unitcell, unitcell.FinancialSalesColumn().Name() = column.Name() );
+ allcell := selectobject( allrow, FinancialSalesCell, allcell, allcell.FinancialSalesColumn().Name() = column.Name() );
+ // info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
+ if( not isnull( unitcell ) ){
+ unitcell.Value( cell.Value() );
+ }
+ if( not isnull( allcell ) ){
+ value := [Real]cell.Value() + [Real]allcell.Value();
+ allcell.Value( [String]value );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl b/_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl
new file mode 100644
index 0000000..3bd0498
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Method IsExistFutureMonthData () as Boolean
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-26-2024 (created)
+ startofplanning := this.MacroPlan().StartOfPlanning().Date().Format( 'M2/D2/Y' );
+ columns := selectset( this, FinancialSalesReport.FinancialSalesColumn, column, column.Name() > startofplanning );
+ return exists( columns, Elements.FinancialSalesCell, cell, cell.Value() <> '' );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl b/_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl
new file mode 100644
index 0000000..95c9a0a
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+Method ReadStructure
+{
+ TextBody:
+ [*
+ tableGroupHandle := TableGroupHandle::Create( this.Name() );
+ tableGroupHandle := XLS::LoadTableGroupFromBinaryData( this.FileBinaryValue().AsBinaryData(), tableGroupHandle, true, this.IsXLSX() );
+ sheets := tableGroupHandle.TableNames();
+
+ traverse ( sheets, Elements, sheetName ) {
+ tableHandle := tableGroupHandle.Table( sheetName );
+ tableXML := TableHandle::ExportXML( tableHandle );
+
+ // info( tableXML.AsQUILL() );
+
+ FinancialSalesReport::XMLImportFinancialSalesReportXMLHeaders( tableXML );
+ xlstable := FinancialSalesReport::XMLImportFinancialSalesReportXML( tableXML );
+
+ xlstable.SyncRows();
+
+ xlstable.Name( sheetName );
+ xlstable.IsImport( true );
+ this.FinancialSalesReport( relinsert, &xlstable );
+
+ Transaction::Transaction().Propagate( attribute( FinancialSalesColumn, Index ) );
+
+ // 锛堝鍏ュ墠锛夌粰绌哄�艰祴浜堥粯璁ゅ�硷紙N/A锛�,骞朵笖鍒犻櫎绌鸿鏁版嵁鍜屾暟鎹牎楠�
+ xlstable.IdentifyNullValues();
+
+ xlstable.ImportVerification();
+ }
+ //瀵煎叆鍚庡鐞嗘暟鎹�
+ //this.AfterImport();
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl
new file mode 100644
index 0000000..6fe5b7f
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl
@@ -0,0 +1,78 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //Product
+ productcolumnelement := xmlDOM.CreateElement( "column" );
+ productnameelement := xmlDOM.CreateElement( "name" );
+ producttypeelement := xmlDOM.CreateElement( "type" );
+ productnameelement.TextContent( 'Product' );
+ producttypeelement.TextContent( "String" );
+ productcolumnelement.AppendChild( productnameelement );
+ productcolumnelement.AppendChild( producttypeelement );
+ //Unit
+ unitcolumnelement := xmlDOM.CreateElement( "column" );
+ unitnameelement := xmlDOM.CreateElement( "name" );
+ unittypeelement := xmlDOM.CreateElement( "type" );
+ unitnameelement.TextContent( 'Unit' );
+ unittypeelement.TextContent( "String" );
+ unitcolumnelement.AppendChild( unitnameelement );
+ unitcolumnelement.AppendChild( unittypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( unitcolumnelement );
+ traverse ( table, FinancialSalesColumn, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ nameelement.TextContent( column.Name() );
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
+
+ cells := selectsortedset( column, FinancialSalesCell, cell, cell.FinancialSalesRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.FinancialSalesRow();
+ //Product
+ productcellElement := xmlDOM.CreateElement( "cell" );
+ productcellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement );
+ //Unit
+ unitcellElement := xmlDOM.CreateElement( "cell" );
+ unitcellElement.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement );
+ }
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", c.Value() );
+ columnelement.AppendChild( cellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl
new file mode 100644
index 0000000..a47c88a
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod DownloadTemplate (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Product</name><type>String</type></column><column><name>Unit</name><type>String</type></column></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ startofyear := macroPlan.StartOfPlanning().StartOfYear();
+ startofnextyear := macroPlan.StartOfPlanning().StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ columnElement := xmlDOM.CreateElement( "column" );
+ nameElement := xmlDOM.CreateElement( "name" );
+ typeElement := xmlDOM.CreateElement( "type" );
+ nameElement.TextContent( start.Format( "M2/D2/Y" ) );
+ typeElement.TextContent( "String" );
+ columnElement.AppendChild( nameElement );
+ columnElement.AppendChild( typeElement );
+ tableElement.AppendChild( columnElement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..8f63f1f
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -0,0 +1,104 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ Description: '鍒濆鍖�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ owner.FinancialSalesSource( relflush );
+ products := construct( Product_MPs );
+ allsalessegment := FinancialSalesReport::GetSalesSegmentAll();
+ ccsalessegment := FinancialSalesReport::GetSalesSegmentCC();
+ dlsalessegment := FinancialSalesReport::GetSalesSegmentDL();
+ tjsalessegment := FinancialSalesReport::GetSalesSegmentTJ();
+ fssalessegment := FinancialSalesReport::GetSalesSegmentFS();
+ ccspline := FinancialSalesReport::GetStockingPointCCLine();
+ dlspline := FinancialSalesReport::GetStockingPointDLLine();
+ ccrent := FinancialSalesReport::GetStockingPointCCRent();
+
+ source := owner.FinancialSalesSource( relnew, IsImport := false, Name := FinancialSalesReport::GetDefaultName() );
+ table := source.FinancialSalesReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
+ showtable := source.FinancialSalesReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsImport := false, IsShow := true );
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ search := source.FinancialSalesSearch( relnew, Unit := allsalessegment, Generation := allsalessegment, MqbMlb := allsalessegment, Power := allsalessegment );
+
+ table.GenerateColumn( owner );
+
+ //浠嶧orecast鏌ヨ
+ traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear.Date() and ( ( forecast.SalesSegmentName() = ccsalessegment and forecast.Product_MP().MQBMLB() = 'MLB' )
+ or forecast.SalesSegmentName() = tjsalessegment or forecast.SalesSegmentName() = fssalessegment ) ){
+ product := forecast.Product_MP();
+ allrow := table.GetRow( allsalessegment, product.ID(), startofyear, startofnextyear );
+ periodtime := forecast.StartDate().StartOfMonth();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ if( products.Find( product ) < 0 ){
+ products.Add( product );
+ }
+ // info( '------------------------', periodname, periodtime );
+ column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
+ // info( '------------------------', column.Name() );
+ //Forecast鐨凷ales Segment涓洪暱鏄ワ紝璇嗗埆鍑篗LB鐨勬墍鏈変骇鍝佹眹鎬�
+ if( forecast.SalesSegmentName() = ccsalessegment and product.MQBMLB() = 'MLB' ){
+ // info( '------------------------', column.Name() );
+ ccrow := table.GetRow( ccsalessegment, product.ID(), startofyear, startofnextyear );
+ // info( '------------------------', ccrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) );
+ ccrow.Initialize( column, forecast.Quantity() );
+ }else if( forecast.SalesSegmentName() = tjsalessegment or forecast.SalesSegmentName() = fssalessegment ){
+ //澶ц繛璐㈠姟閿�閲忥細棣栧厛鍦╢orecast鐣岄潰鏌ユ壘Sales Segment鏄ぉ娲ュ拰浣涘北鐨勬墍鏈夐渶姹傦紝姣忎釜浜у搧鎸夋湀姹囨�婚渶姹傛暟閲�
+ // info( '------------------------', column.Name() );
+ dlrow := table.GetRow( dlsalessegment, product.ID(), startofyear, startofnextyear );
+ // info( '------------------------', dlrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) );
+ dlrow.Initialize( column, forecast.Quantity() );
+ }
+ allrow.Initialize( column, forecast.Quantity() );
+ }
+ //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴撶殑鎵�鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+ traverse( owner, Product_MP, product, product.IsLeaf() and product.MQBMLB() = 'MQB' ){//浜у搧涓篗QB
+ traverse( product, ProductInStockingPoint_MP, pisp, pisp.StockingPointID() = ccspline ){//搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴�
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning
+ and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ){
+ periodtime := pispip.Start().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
+ ccrow := table.GetRow( ccsalessegment, product.ID(), startofyear, startofnextyear );
+ ccrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allsalessegment, product.ID(), startofyear, startofnextyear );
+ allrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );
+ }
+ }
+ }
+ startofnextyearlead := startofplanning.StartOfNextYear() + FinancialSalesReport::GetDefaultTripLeadingTime();
+ //澶ц繛璐㈠姟閿�閲忥細闀挎槬鐨勯渶姹傞渶瑕佸湪trip plan閲岄潰鎵惧埌璧峰搴撳瓨鐐逛负澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撶殑浜у搧锛岀敱浜庨渶瑕佽�冭檻浜у搧杩愯緭lead time锛屾瘡涓湀鐨勬眹鎬绘暟鎹渶瑕佹帹杩熶袱澶╄繘琛岃绠�
+ traverse( owner, Unit.Lane.LaneLeg, laneleg, laneleg.OriginStockingPointID() = dlspline and laneleg.DestinationStockingPointID() = ccrent ){
+ traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){
+ periodtime := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
+ traverse( trip, ProductInTrip, pit ){
+ dlrow := table.GetRow( dlsalessegment, pit.ProductID(), startofyear, startofnextyear );
+ dlrow.Initialize( column, pit.Quantity() );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allsalessegment, pit.ProductID(), startofyear, startofnextyear );
+ allrow.Initialize( column, pit.Quantity() );
+ }
+ }
+ }
+
+ rows := selectsortedset( table, FinancialSalesRow, 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_FinancialSalesSource/StaticMethod_Upload.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Upload.qbl
new file mode 100644
index 0000000..df950f0
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Upload.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Upload (
+ MacroPlan owner,
+ BinaryValue binaryValue,
+ String filePath
+) as FinancialSalesSource
+{
+ TextBody:
+ [*
+ fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
+
+ source := owner.FinancialSalesSource( relnew, FileBinaryValue := binaryValue,
+ Name := fileName,
+ IsXLSX := fileName.EndsWith( "xlsx" ),
+ IsImport := true,
+ UploadDateTime := DateTime::ActualTime().Format( "Y-M2-D2 H:m:s" ),
+ UploadUser := guard( QuintiqUser::CurrentUser().Username(), "" ) );
+
+ return source;
+ *]
+}
diff --git a/_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl b/_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl
new file mode 100644
index 0000000..96ba160
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialSalesSource
+{
+ #keys: '5[415136.0.857450460][415136.0.857450458][0.0.0][415136.0.857450459][415136.0.857450461]'
+ BaseType: Object
+ Description: '璐㈠姟閿�閲忔姤琛�'
+ StructuredName: 'FinancialSalesSources'
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl
new file mode 100644
index 0000000..cc4cf47
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AverageInventory
+{
+ #keys: '3[415136.0.865305024][415136.0.865305023][415136.0.865305025]'
+ Description: '璇勪环搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl
new file mode 100644
index 0000000..f51b0bc
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndingInventory
+{
+ #keys: '3[415136.0.865304924][415136.0.865304923][415136.0.865304925]'
+ Description: '鏈熸湯搴撳瓨'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl
new file mode 100644
index 0000000..341b8e7
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaximumInventory
+{
+ #keys: '3[415136.0.865304944][415136.0.865304943][415136.0.865304945]'
+ Description: '鏈�澶у簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl
new file mode 100644
index 0000000..d686c7f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MinimumInventory
+{
+ #keys: '3[415136.0.865304934][415136.0.865304933][415136.0.865304935]'
+ Description: '鏈�灏忓簱瀛�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl
new file mode 100644
index 0000000..976add9
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcAverageInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcAverageInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := average( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.AverageInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl
new file mode 100644
index 0000000..7fcd1da
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEndingInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := maxobject( this, ProductInStockingPointInPeriod, pispip, pispip.Start() );
+
+ this.EndingInventory( value.PlannedInventoryLevelEnd() );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl
new file mode 100644
index 0000000..db9ad44
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcMaximumInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := max( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.MaximumInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl b/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl
new file mode 100644
index 0000000..e730b7c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcMinimumInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+
+ value := min( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
+
+ this.MinimumInventory( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl b/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl
new file mode 100644
index 0000000..153a82e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryCell
+{
+ #keys: '5[415136.0.865304684][415136.0.865304682][0.0.0][415136.0.865304683][415136.0.865304685]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛ㄥ崟鍏冩牸'
+ StructuredName: 'InventorySummaryCells'
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl
new file mode 100644
index 0000000..2674d93
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Category
+{
+ #keys: '3[415136.0.865101993][415136.0.865101992][415136.0.865101994]'
+ Description: 'day;week;month'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..851f48d
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.865304670][415136.0.865304669][415136.0.865304671]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..0503193
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304673][415136.0.865304672][415136.0.865304674]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..5c8b136
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.865304676][415136.0.865304675][415136.0.865304677]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl b/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..56bbf20
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-21-2024 (created)
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl b/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl
new file mode 100644
index 0000000..8025104
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryColumn
+{
+ #keys: '5[415136.0.865304667][415136.0.865304665][0.0.0][415136.0.865304666][415136.0.865304668]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�诲垪'
+ StructuredName: 'InventorySummaryColumns'
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl
new file mode 100644
index 0000000..6c9df63
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.865304629][415136.0.865304628][415136.0.865304630]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..43d060a
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.865304635][415136.0.865304634][415136.0.865304636]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl b/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl
new file mode 100644
index 0000000..5951a3f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304638][415136.0.865304637][415136.0.865304639]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl b/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl
new file mode 100644
index 0000000..ec171dc
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.InventorySummaryColumn( relflush );
+ this.InventroySummaryRow( relflush );
+
+ this.GenerateColumn( this.InventorySummarySource().MacroPlan() );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
new file mode 100644
index 0000000..8fbefce
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ InventorySummarySearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ table := selectobject( this, InventorySummarySource.InventorySummaryReport, report, not report.IsShow() );
+ allunit := '<All>';
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear();
+ //杩囨护鍚庣殑浜у搧id
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+ sumrow := this.InventroySummaryRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.InventroySummaryRow( relsize ) );
+ traverse( table, InventroySummaryRow, row, row.Unit() = search.Unit() ){
+ productid := construct( Strings );
+ productid.Add( row.Name() );
+
+ if( productids.ContainsAll( productid ) ){
+ showrow := this.InventroySummaryRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
+
+ traverse( row, InventorySummaryCell, cell ){
+ // column := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
+ //
+ // sumcell := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
+ // if( isnull( sumcell ) ){
+ // sumcell := column.InventorySummaryCell( relnew, Value := '0' );
+ // sumrow.InventorySummaryCell( relinsert, sumcell );
+ // }
+ //
+ // showcell := column.InventorySummaryCell( relnew, Value := cell.Value() );
+ // showrow.InventorySummaryCell( relinsert, showcell );
+ // value := [Real]cell.Value() + [Real]sumcell.Value();
+ // sumcell.Value( [String]value );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..bce7074
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
new file mode 100644
index 0000000..c11af49
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String unit,
+ String product,
+ DateTime startdate,
+ DateTime enddate
+) as InventroySummaryRow
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ row := selectobject( this, InventroySummaryRow, row, row.Name() = product and row.Unit() = unit );
+
+ if( isnull( row ) ){
+ row := this.InventroySummaryRow( relnew, Name := product, Unit := unit );
+ //鍒濆鍖栧崟鍏冩牸
+ row.InitializeCell( this, startdate, enddate );
+ }
+
+ return row;
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..518f4c6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultAllUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '<All>';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..6b92234
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultCCUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '闀挎槬';
+ //return 'China';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..f21ff7d
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultDLUnit () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ return '澶ц繛';
+ //return 'Foregin';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..fba1410
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultName () const as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ return 'Inventory summary';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl b/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl
new file mode 100644
index 0000000..d260b23
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummaryReport
+{
+ #keys: '5[415136.0.865304626][415136.0.865304624][0.0.0][415136.0.865304625][415136.0.865304627]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛�'
+ StructuredName: 'InventorySummaryReports'
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl
new file mode 100644
index 0000000..795b6e6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Category
+{
+ #keys: '3[415136.0.865101964][415136.0.865101963][415136.0.865101965]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl
new file mode 100644
index 0000000..a0f273b
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+ #keys: '3[415136.0.865304981][415136.0.865304980][415136.0.865304982]'
+ Description: '鎺ュ彈鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl
new file mode 100644
index 0000000..f1d7453
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Generation
+{
+ #keys: '3[415136.0.865304596][415136.0.865304595][415136.0.865304597]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl
new file mode 100644
index 0000000..c60b1d6
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MqbMlb
+{
+ #keys: '3[415136.0.865304599][415136.0.865304598][415136.0.865304600]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl
new file mode 100644
index 0000000..e993cb3
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Power
+{
+ #keys: '3[415136.0.865304602][415136.0.865304601][415136.0.865304603]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl
new file mode 100644
index 0000000..1f97228
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.865101837][415136.0.865101836][415136.0.865101838]'
+ Description: '寮�濮嬫棩鏈�'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl b/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl
new file mode 100644
index 0000000..b265b0c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.865304605][415136.0.865304604][415136.0.865304606]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl
new file mode 100644
index 0000000..9e5b51e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Generation
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl
new file mode 100644
index 0000000..78982c5
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: MqbMlb
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl
new file mode 100644
index 0000000..4922731
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Power
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl b/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl
new file mode 100644
index 0000000..56a668e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummarySearch
+{
+ #keys: '5[415136.0.865304593][415136.0.865304591][0.0.0][415136.0.865304592][415136.0.865304594]'
+ BaseType: Object
+ Description: '鏌ヨ绫�'
+ StructuredName: 'InventorySummarySearchs'
+}
diff --git a/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl b/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl
new file mode 100644
index 0000000..77f645f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.865304968][415136.0.865304967][415136.0.865304969]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl b/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl
new file mode 100644
index 0000000..56307c5
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304835][415136.0.865304834][415136.0.865304836]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl b/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
new file mode 100644
index 0000000..6fe5b7f
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
@@ -0,0 +1,78 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //Product
+ productcolumnelement := xmlDOM.CreateElement( "column" );
+ productnameelement := xmlDOM.CreateElement( "name" );
+ producttypeelement := xmlDOM.CreateElement( "type" );
+ productnameelement.TextContent( 'Product' );
+ producttypeelement.TextContent( "String" );
+ productcolumnelement.AppendChild( productnameelement );
+ productcolumnelement.AppendChild( producttypeelement );
+ //Unit
+ unitcolumnelement := xmlDOM.CreateElement( "column" );
+ unitnameelement := xmlDOM.CreateElement( "name" );
+ unittypeelement := xmlDOM.CreateElement( "type" );
+ unitnameelement.TextContent( 'Unit' );
+ unittypeelement.TextContent( "String" );
+ unitcolumnelement.AppendChild( unitnameelement );
+ unitcolumnelement.AppendChild( unittypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( unitcolumnelement );
+ traverse ( table, FinancialSalesColumn, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ nameelement.TextContent( column.Name() );
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
+
+ cells := selectsortedset( column, FinancialSalesCell, cell, cell.FinancialSalesRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.FinancialSalesRow();
+ //Product
+ productcellElement := xmlDOM.CreateElement( "cell" );
+ productcellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement );
+ //Unit
+ unitcellElement := xmlDOM.CreateElement( "cell" );
+ unitcellElement.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement );
+ }
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", c.Value() );
+ columnelement.AppendChild( cellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl
new file mode 100644
index 0000000..a47c88a
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod DownloadTemplate (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ TextBody:
+ [*
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Product</name><type>String</type></column><column><name>Unit</name><type>String</type></column></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ startofyear := macroPlan.StartOfPlanning().StartOfYear();
+ startofnextyear := macroPlan.StartOfPlanning().StartOfNextYear();
+
+ for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
+ columnElement := xmlDOM.CreateElement( "column" );
+ nameElement := xmlDOM.CreateElement( "name" );
+ typeElement := xmlDOM.CreateElement( "type" );
+ nameElement.TextContent( start.Format( "M2/D2/Y" ) );
+ typeElement.TextContent( "String" );
+ columnElement.AppendChild( nameElement );
+ columnElement.AppendChild( typeElement );
+ tableElement.AppendChild( columnElement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..6ed8f07
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ Description: '鍒濆鍖�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ owner.InventorySummarySource( relflush );
+ products := construct( Product_MPs );
+ allunit := InventorySummaryReport::GetDefaultAllUnit();
+ ccunit := InventorySummaryReport::GetDefaultCCUnit();
+ dlunit := InventorySummaryReport::GetDefaultDLUnit();
+
+ source := owner.InventorySummarySource( relnew, ID := InventorySummaryReport::GetDefaultName(), Name := InventorySummaryReport::GetDefaultName() );
+ table := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
+ showtable := source.InventorySummaryReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofnextyear := startofplanning.StartOfNextYear();
+
+ search := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+
+ table.GenerateColumn( owner );
+
+ //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴撶殑鎵�鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+ traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
+ unit := pisp.StockingPoint_MP().UnitID();
+ product := pisp.Product_MP();
+ traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning
+ and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ){
+ periodtime := pispip.Start().StartOfMonth().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
+ ccrow := table.GetRow( ccunit, product.ID(), startofyear, startofnextyear );
+ ccrow.Initialize( column, pispip );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allunit, product.ID(), startofyear, startofnextyear );
+ allrow.Initialize( column, pispip );
+ }
+ }
+
+ rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
+ i := 0;
+ traverse( rows, Elements, e ){
+ e.RowNr( i );
+ i := i + 1;
+ }
+ showtable.Generate( search, products );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl
new file mode 100644
index 0000000..df950f0
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Upload (
+ MacroPlan owner,
+ BinaryValue binaryValue,
+ String filePath
+) as FinancialSalesSource
+{
+ TextBody:
+ [*
+ fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
+
+ source := owner.FinancialSalesSource( relnew, FileBinaryValue := binaryValue,
+ Name := fileName,
+ IsXLSX := fileName.EndsWith( "xlsx" ),
+ IsImport := true,
+ UploadDateTime := DateTime::ActualTime().Format( "Y-M2-D2 H:m:s" ),
+ UploadUser := guard( QuintiqUser::CurrentUser().Username(), "" ) );
+
+ return source;
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl b/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl
new file mode 100644
index 0000000..3ba4e03
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventorySummarySource
+{
+ #keys: '5[415136.0.865304823][415136.0.865304821][0.0.0][415136.0.865304822][415136.0.865304824]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�绘姤琛�'
+ StructuredName: 'InventorySummarySources'
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl
new file mode 100644
index 0000000..b941a62
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.865304652][415136.0.865304651][415136.0.865304653]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..05992ac
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.865304655][415136.0.865304654][415136.0.865304656]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl b/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl
new file mode 100644
index 0000000..066f3de
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.865304658][415136.0.865304657][415136.0.865304659]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl
new file mode 100644
index 0000000..7e60e2c
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Unit
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl b/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl
new file mode 100644
index 0000000..8c62e9b
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filter (
+ FinancialProductionSearch search,
+ Product_MPs products
+) declarative remote as Boolean
+{
+ Description: '杩囨护'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ allunit := '<All>';
+ productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
+ and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
+ and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
+
+ productid := construct( Strings );
+ productid.Add( this.Name() );
+
+ return productids.ContainsAll( productid ) and this.Unit() = search.Unit();
+ *]
+}
diff --git "a/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl" "b/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl"
new file mode 100644
index 0000000..ec79cf4
--- /dev/null
+++ "b/_Main/BL/Type_InventroySummaryRow/Method_Initialize\0430.qbl"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ InventorySummaryColumn column,
+ ProductInStockingPointInPeriod pispip
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, InventorySummaryCell, cell, cell.InventorySummaryColumn() = column );
+
+ cell.ProductInStockingPointInPeriod( relinsert, pispip );
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl b/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
new file mode 100644
index 0000000..fbffb32
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Initialize (
+ InventorySummaryColumn column,
+ String unit
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := column.InventorySummaryCell( relnew );
+
+ this.InventorySummaryCell( relinsert, cell );
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl b/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
new file mode 100644
index 0000000..a619b37
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ InventorySummaryReport table,
+ DateTime startdate,
+ DateTime enddate
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ for( start := startdate; start < enddate; start := start.StartOfNextMonth() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
+
+ this.Initialize( column, this.Unit() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..dc906f4
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-1-2024 (created)
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl b/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl
new file mode 100644
index 0000000..746a1ea
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventroySummaryRow
+{
+ #keys: '5[415136.0.865304646][415136.0.865304644][0.0.0][415136.0.865304645][415136.0.865304647]'
+ BaseType: Object
+ Description: '搴撳瓨姹囨�昏'
+ StructuredName: 'InventroySummaryRows'
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl
new file mode 100644
index 0000000..b0e804c
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Shift
+{
+ #keys: '3[413988.0.1303338462][413988.0.1303338461][413988.0.1303338463]'
+ Description: '鐝'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl
new file mode 100644
index 0000000..bf64a48
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[413988.0.1296697080][413988.0.1296697079][413988.0.1296697081]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
new file mode 100644
index 0000000..5e7cd09
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -0,0 +1,103 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod RefreshOfflinePlan (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ macroPlan.OfflinePlanRow( relflush );
+ macroPlan.OfflinePlanColumn( relflush );
+
+ // 鐢熸垚涓嬬嚎璁″垝琛�
+ traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() and u.Name() = "ZP4-M3" ) {
+ // 鍒涘缓浜х嚎琛�
+ macroPlan.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" );
+ 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" );
+ }
+
+ // 鎵惧垪
+ opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( ns.Start().Date() );
+ if ( isnull( opc ) ) {
+ opc := macroPlan.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.OfflinePlanRow( relset, oprQuantity );
+ cellOrder := opc.OfflinePlanCell( relnew, Value := "鍗曞彿" );
+ cellOrder.OfflinePlanRow( relset, oprOrder );
+ }
+ }
+
+ // 鍒涘缓鎬婚噺琛�
+ macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
+ // 鍒涘缓鐝琛�
+ macroPlan.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 ) {
+ if ( opr.Type() = "0" ) {
+ productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
+ productLineCell.OfflinePlanRow( relset, opr );
+ } else if( opr.Type() = "1" ) {
+ productCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductID() );
+ productCell.OfflinePlanRow( relset, opr );
+ typeCell := typeOPC.OfflinePlanCell( relnew, Value := "Quantity" );
+ typeCell.OfflinePlanRow( relset, opr );
+ } else if ( opr.Type() = "2" ) {
+ typeCell := typeOPC.OfflinePlanCell( relnew, Value := "Order" );
+ typeCell.OfflinePlanRow( relset, opr );
+ } else if ( opr.Type() = "3" ) {
+ totalCell := productOPC.OfflinePlanCell( relnew, Value := "鍚堣" );
+ totalCell.OfflinePlanRow( relset, opr );
+ totalCell := typeOPC.OfflinePlanCell( relnew, Value := "鎬婚噺" );
+ totalCell.OfflinePlanRow( relset, opr );
+ } else if ( opr.Type() = "4" ) {
+ shiftCell := typeOPC.OfflinePlanCell( relnew, Value := "鐝" );
+ shiftCell.OfflinePlanRow( relset, opr );
+ }
+ }
+
+ // 琛ュ叏鎬婚噺鍜岀彮娆�
+ 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() ) {
+ 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 );
+ totalCell.OfflinePlanRow( relset, totalOPR );
+ }
+
+ traverse ( shiftOPRs, Elements, shiftOPR ) {
+ shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = shiftOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" );
+ if ( not isnull( shift ) ) {
+ shiftCell := opc.OfflinePlanCell( relnew, Value := shift.Shift() );
+ shiftCell.OfflinePlanRow( relset, shiftOPR );
+ }
+ }
+ }
+
+ // 琛ュ叏鏃堕棿鍒�
+ indexDate := macroPlan.StartOfPlanning().Date();
+ endDate := Date::Construct( indexDate.Year(), 12, 31 );
+ while ( indexDate <= endDate ) {
+ opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( indexDate );
+ if ( isnull( opc ) ) {
+ opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := indexDate );
+ }
+ indexDate := indexDate + 1;
+ }
+ *]
+}
diff --git a/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl b/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl
new file mode 100644
index 0000000..e946428
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type OfflinePlanCell
+{
+ #keys: '5[413988.0.1296696989][413988.0.1296696987][0.0.0][413988.0.1296696988][413988.0.1296696990]'
+ BaseType: Object
+ StructuredName: 'OfflinePlanCells'
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
new file mode 100644
index 0000000..620f728
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnDate
+{
+ #keys: '3[413988.0.1295080211][413988.0.1295080210][413988.0.1295080212]'
+ IsReadOnly: true
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl
new file mode 100644
index 0000000..d0d56a5
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnIndex
+{
+ #keys: '3[413988.0.1296697042][413988.0.1296697041][413988.0.1296697043]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl
new file mode 100644
index 0000000..b23a75b
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnName
+{
+ #keys: '3[413988.0.1296697052][413988.0.1296697051][413988.0.1296697053]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl b/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
new file mode 100644
index 0000000..5063e35
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/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_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl b/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
new file mode 100644
index 0000000..15f5410
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex OfflinePlanColumnTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: ColumnDate
+ }
+ ]
+}
diff --git a/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl b/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl
new file mode 100644
index 0000000..cf06591
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type OfflinePlanColumn
+{
+ #keys: '5[413988.0.1296696984][413988.0.1296696982][0.0.0][413988.0.1296696983][413988.0.1296696985]'
+ BaseType: Object
+ StructuredName: 'OfflinePlanColumns'
+}
diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..0bd3a84
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+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
new file mode 100644
index 0000000..2393a64
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+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_RowNr.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..5638be5
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[413988.0.1296697012][413988.0.1296697011][413988.0.1296697013]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
new file mode 100644
index 0000000..4905125
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Type
+{
+ #keys: '3[413988.0.1295121717][413988.0.1295121716][413988.0.1295121718]'
+ Description:
+ [*
+ 浜х嚎鍚嶈 锛�0
+ Quantity琛岋細1
+ Order琛� 锛�2
+ 鍚堣琛� 锛�3
+ 鐝琛� 锛�4
+ *]
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl b/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
new file mode 100644
index 0000000..9850e05
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
@@ -0,0 +1,20 @@
+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_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl b/_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl
new file mode 100644
index 0000000..4e131fd
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type OfflinePlanRow
+{
+ #keys: '5[413988.0.1296696979][413988.0.1296696977][0.0.0][413988.0.1296696978][413988.0.1296696980]'
+ BaseType: Object
+ StructuredName: 'OfflinePlanRows'
+}
diff --git "a/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl" "b/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl"
new file mode 100644
index 0000000..48d9cd9
--- /dev/null
+++ "b/_Main/BL/Type_ProductInStockingPointInPeriod\043228/_ROOT_Type_ProductInStockingPointInPeriod.qbl"
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ProductInStockingPointInPeriod #extension
+{
+}
diff --git a/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl b/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl
new file mode 100644
index 0000000..f1ba88f
--- /dev/null
+++ b/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+Method IsRoundingOrZeroFilling4 (
+ MacroPlan macroPlan,
+ Unit unit
+)
+{
+ Description: '杞﹂亾鏁寸彮'
+ TextBody:
+ [*
+ traverse ( unit, Lane.LaneLeg.Trip, t ) {
+ traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
+ // 鑾峰彇浜у搧lotsize鍊嶆暟
+ lotsize := 1;
+ if ( pit.Product_MP().ParentID().Regex( "缂镐綋" ) ) {
+ lotsize := macroPlan.CylinderBlock();
+ } else if ( pit.Product_MP().ParentID().Regex( "缂哥洊" ) ) {
+ lotsize := macroPlan.CylinderHead();
+ } else if ( pit.Product_MP().ParentID().Regex( "杩炴潌" ) ) {
+ lotsize := macroPlan.ConnectingRod();
+ } else if ( pit.Product_MP().ParentID().Regex( "鏇茶酱" ) ) {
+ lotsize := macroPlan.Crankshaft();
+ } else if ( pit.Product_MP().ParentID().Regex( "鏇茶酱" ) ) {
+ lotsize := macroPlan.BalanceAxis();
+ }
+
+ if ( lotsize > 1 ) {
+ debuginfo( "浜у搧ID锛�", pit.ProductID(), " 浜у搧鏁伴噺锛�", pit.Quantity(), " lotsize锛�", lotsize );
+ quantityToBeSupplemented := lotsize - ( pit.Quantity() mod lotsize );
+ pit.Update( pit.Quantity() + quantityToBeSupplemented, true );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
index d1b5969..90057d1 100644
--- a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
+++ b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
@@ -47,9 +47,10 @@
}
// 杞﹂亾鏁寸彮
- traverse ( macroPlan, Unit, unit, unit.IsToFill() and unit.HasCapacityTypeTransportQuantity() ) {
- unitName := unit.Name();
+ traverse ( macroPlan, Unit, u, u.IsToFill() and u.HasCapacityTypeTransportQuantity() ) {
+ unitName := u.Name();
debuginfo( "杞﹂亾浜х嚎: ", unitName );
+ this.IsRoundingOrZeroFilling4( macroPlan, u );
}
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 10df23f..68f5a8f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -16,6 +16,28 @@
Taborder: 0
]
}
+ Component ButtonFinancialSalesReport
+ {
+ #keys: '[415136.0.861863635]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'MONEY_COINS2'
+ Label: 'Financial sales report'
+ Taborder: 1
+ ]
+ }
+ Component ButtonInventorySummaryReport
+ {
+ #keys: '[415136.0.862201699]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECK_EDIT'
+ Label: 'Inventory summary report'
+ Taborder: 2
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
index c40d27d..0eca66a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,6 +22,17 @@
BaseType: 'WebButton'
Properties:
[
+ Taborder: 2
+ ]
+ }
+ Component bOfflinePlan
+ {
+ #keys: '[413988.0.1296872738]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'LIGHTBULB'
+ Label: 'Offline plan'
Taborder: 1
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def
new file mode 100644
index 0000000..117f477
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonFinancialSalesReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClick
+{
+ #keys: '[415136.0.861863801]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Financial_sales_report_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def
new file mode 100644
index 0000000..616a1fb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonInventorySummaryReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnClick
+{
+ #keys: '[415136.0.862201823]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Inventory_summary_report_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def
new file mode 100644
index 0000000..eaab98b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgSecondDevelopmentPlan/bOfflinePlan
+Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick
+{
+ #keys: '[413988.0.1296872869]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "OfflinePlan", true);
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
index d0331a8..258cfb2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
@@ -11,6 +11,7 @@
BaseType: 'WebNumberPicker'
Properties:
[
+ DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKG'
Label: 'ZKG(pcs)'
Taborder: 0
]
@@ -21,6 +22,7 @@
BaseType: 'WebNumberPicker'
Properties:
[
+ DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKM'
Label: 'ZKM(pcs)'
Taborder: 1
]
@@ -31,6 +33,7 @@
BaseType: 'WebNumberPicker'
Properties:
[
+ DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityPL'
Label: 'PL(pcs)'
Taborder: 2
]
@@ -41,6 +44,7 @@
BaseType: 'WebNumberPicker'
Properties:
[
+ DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityKW'
Label: 'KW(pcs)'
Taborder: 3
]
@@ -51,6 +55,7 @@
BaseType: 'WebNumberPicker'
Properties:
[
+ DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityAGW'
Label: 'AGW(pcs)'
Taborder: 4
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def
index 8844548..2efd8dd 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def
@@ -45,8 +45,6 @@
Properties:
[
DataType: 'FinancialProductionReport'
- FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderProduct;search:QMacroPlanner::FormFinancialProductionReport.dhSearch'
- FixedFilter: 'object.Filter( search, products )'
Source: 'DataHolderTable'
Taborder: 0
Transformation: 'FinancialProductionRow'
@@ -56,7 +54,7 @@
Properties:
[
Legend: 'Name'
- SortCriteria: 'Name'
+ SortCriteria: 'RowNr'
Taborder: 1
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
index e6d457a..62f7985 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
@@ -10,12 +10,12 @@
Body:
[*
//鍒濆鍖�
- //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
+ if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
FinancialProductionSource::Initialize( MacroPlan );
- //}
+ }
//info( '------------------1----------------' );
- table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
- //info( '------------------2----------------' );
+ table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
+ info( '------------------2----------------', table.IsImport(), table.IsShow() );
DataHolderTable.Data( table );
dhSearch.Data( table.FinancialProductionSource().FinancialProductionSearch() );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
index 174cd83..9b9d0c5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
@@ -13,9 +13,9 @@
{
Body:
[*
- binaryValue := FinancialProductionSource::Download( MacroPlan, false );
+ binaryValue := FinancialProductionSource::Download( MacroPlan );
- Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() );
+ Application.Download( FinancialProductionReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
index e78b4e0..3749d2c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
@@ -13,9 +13,9 @@
{
Body:
[*
- binaryValue := FinancialProductionSource::Download( MacroPlan, true );
+ binaryValue := FinancialProductionSource::DownloadTemplate( MacroPlan );
- Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() );
+ Application.Download( FinancialProductionReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def
index eece9c0..53c7632 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def
@@ -27,6 +27,12 @@
source := FinancialProductionSource::Upload( MacroPlan, webFileBinaryData, fileName );
source.ReadStructure();
+ if( not source.IsExistFutureMonthData() or
+ ( source.IsExistFutureMonthData() and WebMessageBox::Question( this, Translations::MP_FinancialProductionReport_Question(), 'Yes|No' ) = 0 ) ){
+ source.AfterImport();
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+
WebMessageBox::Success( Translations::A_VWED_Success() );
traverse( MacroPlan, FinancialProductionSource, psource, psource.IsImport() and psource <> source ){
psource.Delete();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
index 8ab2cf7..b299a53 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,10 @@
{
Body:
[*
- dhSearch.Data().Generation( selection );
+ if( dhSearch.Data().Generation() <> selection ){
+ dhSearch.Data().Generation( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
index 7cfb83f..972e396 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,10 @@
{
Body:
[*
- dhSearch.Data().MqbMlb( selection );
+ if( dhSearch.Data().MqbMlb() <> selection ){
+ dhSearch.Data().MqbMlb( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
index c87e89d..782939b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,10 @@
{
Body:
[*
- dhSearch.Data().Power( selection );
+ if( dhSearch.Data().Power() <> selection ){
+ dhSearch.Data().Power( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def
index a70ff22..f6c7ab5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -10,7 +10,7 @@
Body:
[*
- valueString := "<All>;Spider Assy Line 1;Body in White Line 3";
+ valueString := "<All>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
this.Strings( valueString );
*]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
index 9e84672..7fbf5de 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -9,7 +9,10 @@
{
Body:
[*
- dhSearch.Data().Unit( selection );
+ if( dhSearch.Data().Unit() <> selection ){
+ dhSearch.Data().Unit( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
*]
GroupServerCalls: false
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable\043623.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable\043623.def"
new file mode 100644
index 0000000..9a203ad
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable\043623.def"
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditorTable id:MatrixEditorTable_623
+{
+ #keys: '[415136.0.858621867]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.858621868]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.858621869]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'FinancialSalesReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'FinancialSalesColumn.FinancialSalesCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'FinancialSalesColumn'
+ Row: 'FinancialSalesRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.858621870]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.858621871]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'FinancialSalesReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'FinancialSalesRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.858621872]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.858621873]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'FinancialSalesReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'FinancialSalesColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable_1
+ #child: matrixeditorContextMenuTable_1
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def"
new file mode 100644
index 0000000..78299c1
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelExport id:PanelExport_545
+{
+ #keys: '[415136.0.858621784]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonExport
+ {
+ #keys: '[415136.0.858621785]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportHeader.def
new file mode 100644
index 0000000..c5804ea
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportHeader.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelFinancialSalesReportHeader
+{
+ #keys: '[415136.0.858621774]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelFinancialSalesReportSearch
+ #child: PanelFinancialSalesReportOperation
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def
new file mode 100644
index 0000000..5a9bec8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component PanelFinancialSalesReportOperation
+{
+ #keys: '[415136.0.858621786]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component LabelFinancialSalesReportOperation
+ {
+ #keys: '[415136.0.858621787]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ NumberOfColumns: 15
+ Taborder: 0
+ Text: 'Sales import'
+ ]
+ }
+ Component ButtonSalesImport
+ {
+ #keys: '[415136.0.858621788]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 1
+ ]
+ }
+ Component ButtonSalesExport
+ {
+ #keys: '[415136.0.858621789]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def
new file mode 100644
index 0000000..d6ff179
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+Component PanelFinancialSalesReportSearch
+{
+ #keys: '[415136.0.858621775]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelUnit_715
+ #child: PanelGeneration_844
+ #child: PanelMQBMLB_603
+ #child: PanelPower_858
+ #child: PanelExport_545
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration\043844.def"
new file mode 100644
index 0000000..ab48548
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration\043844.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelGeneration id:PanelGeneration_844
+{
+ #keys: '[415136.0.858621778]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[415136.0.858621779]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB\043603.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB\043603.def"
new file mode 100644
index 0000000..37da59e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB\043603.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelMQBMLB id:PanelMQBMLB_603
+{
+ #keys: '[415136.0.858621780]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslMQBMLB
+ {
+ #keys: '[415136.0.858621781]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower\043858.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower\043858.def"
new file mode 100644
index 0000000..e41599f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower\043858.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPower id:PanelPower_858
+{
+ #keys: '[415136.0.858621782]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslPower
+ {
+ #keys: '[415136.0.858621783]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Power'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable\043424.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable\043424.def"
new file mode 100644
index 0000000..b9632a5
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable\043424.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable id:PanelTable_424
+{
+ #keys: '[415136.0.858621866]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable_623
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit\043715.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit\043715.def"
new file mode 100644
index 0000000..2d6d002
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit\043715.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelUnit id:PanelUnit_715
+{
+ #keys: '[415136.0.858621776]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslUnit
+ {
+ #keys: '[415136.0.858621777]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Unit'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable\0431.def"
new file mode 100644
index 0000000..1023bac
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
+{
+ #keys: '[415136.0.858621874]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable\0431.def"
new file mode 100644
index 0000000..71dfdc9
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
+{
+ #keys: '[415136.0.858621875]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
new file mode 100644
index 0000000..533640c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormFinancialSalesReport_OnCreated
+{
+ #keys: '[415136.0.858683122]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ if( not exists( MacroPlan, FinancialSalesSource, source, not source.IsImport() ) ){
+ FinancialSalesSource::Initialize( MacroPlan );
+ }
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+ info( '------------------2----------------', table.IsImport(), table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.FinancialSalesSource().FinancialSalesSearch() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def
new file mode 100644
index 0000000..aa945e3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelExport_545/ButtonExport
+Response OnClick () id:Response_PanelExport_545_ButtonExport_OnClick
+{
+ #keys: '[415136.0.858621765]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := FinancialSalesSource::Download( MacroPlan );
+
+ Application.Download( FinancialSalesReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ //owner.FinancialSalesSource( relflush );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def
new file mode 100644
index 0000000..7eea40f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelFinancialSalesReportOperation/ButtonSalesExport
+Response OnClick () id:Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick
+{
+ #keys: '[415136.0.858621763]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := FinancialSalesSource::DownloadTemplate( MacroPlan );
+
+ Application.Download( FinancialSalesReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def
new file mode 100644
index 0000000..99db221
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def
@@ -0,0 +1,47 @@
+Quintiq file version 2.0
+#parent: PanelFinancialSalesReportOperation/ButtonSalesImport
+Response OnClick () id:Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick
+{
+ #keys: '[415136.0.858621764]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+ Archive::VerifyTheFileName( uploadJson );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+
+ webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
+
+ source := FinancialSalesSource::Upload( MacroPlan, webFileBinaryData, fileName );
+ source.ReadStructure();
+ //濡傛灉瀛樺湪璁″垝寮�濮嬪悗鐨勬棩鏈熸暟鎹渶瑕佺偣鍑荤‘璁�
+ if( not source.IsExistFutureMonthData() or
+ ( source.IsExistFutureMonthData() and WebMessageBox::Question( this, Translations::MP_FinancialProductionReport_Question(), 'Yes|No' ) = 0 ) ){
+ source.AfterImport();
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ traverse( MacroPlan, FinancialSalesSource, psource, psource.IsImport() and psource <> source ){
+ psource.Delete();
+ }
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..e0e4fcd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelGeneration_844/ddslGeneration
+Response OnCreated () id:Response_PanelGeneration_844_ddslGeneration_OnCreated
+{
+ #keys: '[415136.0.858621771]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Generation() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
new file mode 100644
index 0000000..6c500d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelGeneration_844/ddslGeneration
+Response OnSelectionChanged () id:Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged
+{
+ #keys: '[415136.0.858621770]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //浠f暟鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Generation() <> selection ){
+ dhSearch.Data().Generation( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..f86feef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB_603/ddslMQBMLB
+Response OnCreated () id:Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated
+{
+ #keys: '[415136.0.858621769]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.MQBMLB() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..1fd2082
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB_603/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged
+{
+ #keys: '[415136.0.858621768]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //妯旱鍒舵敼鍙樺悗鍒锋柊鏄剧ず
+ if( dhSearch.Data().MqbMlb() <> selection ){
+ dhSearch.Data().MqbMlb( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnCreated.def
new file mode 100644
index 0000000..6f642a4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelPower_858/ddslPower
+Response OnCreated () id:Response_PanelPower_858_ddslPower_OnCreated
+{
+ #keys: '[415136.0.858621767]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Power() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
new file mode 100644
index 0000000..45a6525
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPower_858/ddslPower
+Response OnSelectionChanged () id:Response_PanelPower_858_ddslPower_OnSelectionChanged
+{
+ #keys: '[415136.0.858621766]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍔熺巼鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Power() <> selection ){
+ dhSearch.Data().Power( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def
new file mode 100644
index 0000000..5a4d8e6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelUnit_715/ddslUnit
+Response OnCreated () id:Response_PanelUnit_715_ddslUnit_OnCreated
+{
+ #keys: '[415136.0.858621773]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+
+ valueString := "<All>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
new file mode 100644
index 0000000..3d59900
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelUnit_715/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_715_ddslUnit_OnSelectionChanged
+{
+ #keys: '[415136.0.858621772]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
+ if( dhSearch.Data().Unit() <> selection ){
+ dhSearch.Data().Unit( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
new file mode 100644
index 0000000..248b71f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFinancialSalesReport
+{
+ #keys: '[415136.0.857870750]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable id:DataHolderTable_847
+ {
+ #keys: '[415136.0.857870828]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'FinancialSalesReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch id:dhSearch_424
+ {
+ #keys: '[415136.0.857870874]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'FinancialSalesSearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelTable_424
+ #child: PanelFinancialSalesReportHeader
+ ]
+ Properties:
+ [
+ Image: 'MONEY_COINS2'
+ Title: 'Financial sales report'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..19c25a9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.864612253]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.864612254]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.864612255]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventorySummaryColumn.InventorySummaryCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'EndingInventory;MinimumInventory;MaximumInventory;AverageInventory'
+ Column: 'InventorySummaryColumn'
+ Row: 'InventroySummaryRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.864612256]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.864612257]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventroySummaryRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.864612258]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.864612259]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InventorySummaryReport'
+ Source: 'DataHolderTable'
+ Taborder: 0
+ Transformation: 'InventorySummaryColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable
+ #child: matrixeditorContextMenuTable
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
new file mode 100644
index 0000000..1c06644
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component PanelCategory
+{
+ #keys: '[415136.0.862221867]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component RadioButtonGroupUseForPlanning id:RadioButtonGroupUseForPlanning_545
+ {
+ #keys: '[415136.0.862222092]'
+ BaseType: 'WebRadioButtonGroup'
+ Properties:
+ [
+ BoundValue: 'Day'
+ ButtonLabels: 'Day;Week;Month'
+ ButtonValues: 'Day;Week;Month'
+ Orientation: 'horizontal'
+ ShowTitle: false
+ Taborder: 0
+ Title: 'Periods'
+ Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
new file mode 100644
index 0000000..cded950
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelExport
+{
+ #keys: '[415136.0.862221896]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonSummaryExport
+ {
+ #keys: '[415136.0.862221939]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def
new file mode 100644
index 0000000..27105c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelGeneration
+{
+ #keys: '[415136.0.864612093]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[415136.0.864612094]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def
new file mode 100644
index 0000000..c91046e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryColumnSearch
+{
+ #keys: '[415136.0.864612101]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelPeriod
+ #child: PanelExport
+ #child: PanelCategory
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def
new file mode 100644
index 0000000..e149da6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryHeader
+{
+ #keys: '[415136.0.864612089]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelInventorySummaryProductSearch
+ #child: PanelInventorySummaryColumnSearch
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def
new file mode 100644
index 0000000..bfd68b1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component PanelInventorySummaryProductSearch
+{
+ #keys: '[415136.0.864612090]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelUnit
+ #child: PanelGeneration
+ #child: PanelMQBMLB
+ #child: PanelPower
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def
new file mode 100644
index 0000000..b261493
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelMQBMLB
+{
+ #keys: '[415136.0.864612095]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslMQBMLB
+ {
+ #keys: '[415136.0.864612096]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
new file mode 100644
index 0000000..bc6b316
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelPeriod
+{
+ #keys: '[415136.0.862221329]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component DateSelectorStart
+ {
+ #keys: '[415136.0.862221355]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start date'
+ Taborder: 0
+ ]
+ }
+ Component DateSelectorEnd
+ {
+ #keys: '[415136.0.862221609]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'End date'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def
new file mode 100644
index 0000000..f59f987
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelPower
+{
+ #keys: '[415136.0.864612097]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslPower
+ {
+ #keys: '[415136.0.864612098]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Power'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def
new file mode 100644
index 0000000..636f0fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.864612252]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def
new file mode 100644
index 0000000..4990a44
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelUnit
+{
+ #keys: '[415136.0.864612091]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslUnit
+ {
+ #keys: '[415136.0.864612092]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Unit'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..ece6871
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.864612260]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..e7171db
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.864612261]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
new file mode 100644
index 0000000..9b50f5f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormInventorySummaryReport_OnCreated
+{
+ #keys: '[415136.0.864612555]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ if( not isnull( MacroPlan.InventorySummarySource() ) ){
+ InventorySummarySource::Initialize( MacroPlan );
+ }
+ //info( '------------------1----------------' );
+ table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+ info( '------------------2----------------', table.IsShow() );
+ DataHolderTable.Data( table );
+
+ dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
new file mode 100644
index 0000000..83bb279
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelCategory/RadioButtonGroupUseForPlanning_545
+Response OnChanged () id:Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged_847
+{
+ #keys: '[415136.0.862222091]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Category() <> this.BoundValue() ){
+ dhSearch.Data().Category( this.BoundValue() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
new file mode 100644
index 0000000..dda4e49
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonSummaryExport
+Response OnClick () id:Response_PanelExport_ButtonSummaryExport_OnClick
+{
+ #keys: '[415136.0.862221938]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := InventorySummarySource::Download( MacroPlan );
+
+ Application.Download( InventorySummaryReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..0659423
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelGeneration/ddslGeneration
+Response OnCreated () id:Response_PanelGeneration_ddslGeneration_OnCreated
+{
+ #keys: '[415136.0.864612086]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Generation() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
new file mode 100644
index 0000000..41e1fd3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelGeneration/ddslGeneration
+Response OnSelectionChanged () id:Response_PanelGeneration_ddslGeneration_OnSelectionChanged
+{
+ #keys: '[415136.0.864612085]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //浠f暟鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Generation() <> selection ){
+ dhSearch.Data().Generation( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..31df8e8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB/ddslMQBMLB
+Response OnCreated () id:Response_PanelMQBMLB_ddslMQBMLB_OnCreated
+{
+ #keys: '[415136.0.864612084]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.MQBMLB() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..a86bd8c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelMQBMLB/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged
+{
+ #keys: '[415136.0.864612083]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //妯旱鍒舵敼鍙樺悗鍒锋柊鏄剧ず
+ if( dhSearch.Data().MqbMlb() <> selection ){
+ dhSearch.Data().MqbMlb( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
new file mode 100644
index 0000000..7d13e79
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
+{
+ #keys: '[415136.0.862221640]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().EndDate() <> this.Date() ){
+ dhSearch.Data().EndDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
new file mode 100644
index 0000000..aa54f0a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
+{
+ #keys: '[415136.0.862221461]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().StartDate() <> this.Date() ){
+ dhSearch.Data().StartDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def
new file mode 100644
index 0000000..24138aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelPower/ddslPower
+Response OnCreated () id:Response_PanelPower_ddslPower_OnCreated
+{
+ #keys: '[415136.0.864612082]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Power() );
+
+ valueString := values.Concatenate( ";" );
+ valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+
+ valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
new file mode 100644
index 0000000..01ad63c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelPower/ddslPower
+Response OnSelectionChanged () id:Response_PanelPower_ddslPower_OnSelectionChanged
+{
+ #keys: '[415136.0.864612081]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鍔熺巼鏀瑰彉鍚庡埛鏂版樉绀�
+ if( dhSearch.Data().Power() <> selection ){
+ dhSearch.Data().Power( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def
new file mode 100644
index 0000000..67038e1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
+{
+ #keys: '[415136.0.864612088]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+
+ valueString := "<All>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
new file mode 100644
index 0000000..a4cb7ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
+{
+ #keys: '[415136.0.864612087]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
+ if( dhSearch.Data().Unit() <> selection ){
+ dhSearch.Data().Unit( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
new file mode 100644
index 0000000..18cc120
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventorySummaryReport
+{
+ #keys: '[415136.0.864611956]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable
+ {
+ #keys: '[415136.0.864612009]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummaryReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch
+ {
+ #keys: '[415136.0.864612034]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummarySearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelInventorySummaryHeader
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECK_EDIT'
+ Title: 'Inventory summary report'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
new file mode 100644
index 0000000..b27dd5e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor951
+{
+ #keys: '[413988.0.1296803041]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell491
+ {
+ #keys: '[413988.0.1296803042]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor548
+ {
+ #keys: '[413988.0.1296803043]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'OfflinePlanColumn.OfflinePlanCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'OfflinePlanColumn'
+ Row: 'OfflinePlanRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows271
+ {
+ #keys: '[413988.0.1296803046]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor869
+ {
+ #keys: '[413988.0.1296803047]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'OfflinePlanRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'RowNr'
+ SortCriteria: 'ProductionLine;ProductID;Type'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns844
+ {
+ #keys: '[413988.0.1296803050]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor259
+ {
+ #keys: '[413988.0.1296803051]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'OfflinePlanColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'ColumnName'
+ SortCriteria: 'ColumnDate'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage250
+ #child: matrixeditorContextMenu204
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns844'
+ ContextMenu: 'matrixeditorContextMenu204'
+ Rows: 'MatrixEditorRows271'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def
new file mode 100644
index 0000000..f81dbd6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage250
+{
+ #keys: '[413988.0.1296803054]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def
new file mode 100644
index 0000000..37b2b4c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu204
+{
+ #keys: '[413988.0.1296803057]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def"
new file mode 100644
index 0000000..540aa26
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+ #keys: '[413988.0.1296872691]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor951
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def
new file mode 100644
index 0000000..a1900d3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def
@@ -0,0 +1,76 @@
+Quintiq file version 2.0
+Component pHeader
+{
+ #keys: '[413988.0.1296872680]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bRefresh
+ {
+ #keys: '[413988.0.1296860898]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Refresh'
+ Taborder: 0
+ ]
+ }
+ Component bDownload
+ {
+ #keys: '[413988.0.1296875316]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Download'
+ Taborder: 1
+ ]
+ }
+ Component bDeductionOfReplacementLoss
+ {
+ #keys: '[413988.0.1297911732]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Deduction of replacement loss'
+ Taborder: 2
+ ]
+ }
+ Component bRestore
+ {
+ #keys: '[413988.0.1297911774]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Restore'
+ Taborder: 3
+ ]
+ }
+ Component bSaveAsDraft
+ {
+ #keys: '[413988.0.1297973728]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Save as draft'
+ Taborder: 4
+ ]
+ }
+ Component bConfirm
+ {
+ #keys: '[413988.0.1297973782]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Confirm'
+ Taborder: 5
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def
new file mode 100644
index 0000000..33f3e58
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bConfirm
+Response OnClick () id:Response_pHeader_bConfirm_OnClick
+{
+ #keys: '[413988.0.1297974240]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def
new file mode 100644
index 0000000..b426c30
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bDeductionOfReplacementLoss
+Response OnClick () id:Response_pHeader_bDeductionOfReplacementLoss_OnClick
+{
+ #keys: '[413988.0.1297973984]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ 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
new file mode 100644
index 0000000..3df7e29
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bDownload
+Response OnClick () id:Response_pHeader_bDownload_OnClick
+{
+ #keys: '[413988.0.1297973899]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ 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
new file mode 100644
index 0000000..98e2fa5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: pHeader/bRefresh
+Response OnClick () id:Response_pHeader_bRefresh_OnClick
+{
+ #keys: '[413988.0.1297973814]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ OfflinePlanCell::RefreshOfflinePlan( MacroPlan );
+ *]
+ 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
new file mode 100644
index 0000000..2fcf6dc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bRestore
+Response OnClick () id:Response_pHeader_bRestore_OnClick
+{
+ #keys: '[413988.0.1297974069]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ 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
new file mode 100644
index 0000000..6b50c94
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bSaveAsDraft
+Response OnClick () id:Response_pHeader_bSaveAsDraft_OnClick
+{
+ #keys: '[413988.0.1297974155]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def
new file mode 100644
index 0000000..be8fe4d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormOfflinePlan
+{
+ #keys: '[413988.0.1296872622]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pHeader
+ #child: pContent
+ ]
+ Properties:
+ [
+ Image: 'WIND_ENGINE_OFFSHORE'
+ Title: 'OfflinePlan'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
index fd89de9..4c092f7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
@@ -7,6 +7,12 @@
DefinitionID: 'Responsedef_WebButton_OnClick'
QuillAction
{
+ Body:
+ [*
+ dlg := construct( DialogUpperLimitOfTransferCapacity );
+
+ ApplicationMacroPlanner.ShowFormModal( dlg );
+ *]
GroupServerCalls: false
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw
new file mode 100644
index 0000000..e5dcb48
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw
@@ -0,0 +1,120 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormFinancialSalesReport
+ {
+ title: 'QMacroPlanner::FormFinancialSalesReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormFinancialSalesReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormFinancialSalesReport_PanelFinancialSalesReportHeader
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelFinancialSalesReportSearch
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelUnit
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelGeneration
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelMQBMLB
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelPower
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelExport
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelFinancialSalesReportOperation
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormFinancialSalesReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormFinancialSalesReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_Value
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Value'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 17
+ image: 'MONEY_COINS2'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Financial_sales_report_view'
+ name: 'Financial sales report view'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw
new file mode 100644
index 0000000..f1f7de6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw
@@ -0,0 +1,140 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormInventorySummaryReport
+ {
+ title: 'QMacroPlanner::FormInventorySummaryReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormInventorySummaryReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormInventorySummaryReport_PanelInventorySummaryHeader
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelInventorySummaryProductSearch
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelUnit
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelGeneration
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelMQBMLB
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelPower
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelInventorySummaryColumnSearch
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormInventorySummaryReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormInventorySummaryReport.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_EndingInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'EndingInventory'
+ }
+ attribute_MinimumInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'MinimumInventory'
+ }
+ attribute_MaximumInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'MaximumInventory'
+ }
+ attribute_AverageInventory
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 3
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'AverageInventory'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 18
+ image: 'DOCUMENT_CHECK_EDIT'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Inventory_summary_report_view'
+ name: 'Inventory summary report view'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
new file mode 100644
index 0000000..7bce92d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
@@ -0,0 +1,92 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormOfflinePlan
+ {
+ title: 'QMacroPlanner::FormOfflinePlan'
+ shown: true
+ componentID: 'QMacroPlanner::FormOfflinePlan'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 14
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormOfflinePlan_pHeader
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlan_pContent
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlan_MatrixEditor951
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 36
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormOfflinePlan.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'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 0
+ image: 'JACKHAMMER'
+ description: ''
+ }
+ formatversion: 2
+ id: 'OfflinePlan'
+ name: 'OfflinePlan'
+ isglobal: false
+ isroot: true
+}
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"
new file mode 100644
index 0000000..f976497
--- /dev/null
+++ "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"
@@ -0,0 +1,500 @@
+锘�# Quintiq GUI View File
+# Version 3.0
+
+PROPERTIES
+{
+ KEY := [413988.0.1301140601]
+ NAME := '杞﹂亾鏁寸彮鍒嗘瀽'
+ HELPPAGE := ''
+ PARENTKEY := [100676.19.414142820]
+ DOMAIN := 'MacroPlanner'
+ FOCUSED := [100828.0.145642700]
+ MUSTREADMDSSETTINGS := false
+ ISPERSONAL false
+ OWNERNAME 'quintiq/lihongji'
+ ICONIMAGE 'WINDOWS'
+ CREATIONDATETIME '2024-06-28T13:59:36'
+ CREATIONUSER 'quintiq/lihongji'
+ UPDATEDATETIME '2024-06-28T13:59:54'
+ UPDATEUSER 'quintiq/lihongji'
+ LASTACCESSDATE '2024-06-28'
+ VIEWSCOPE 0
+}
+AUTHORIZATIONS
+{
+ OPEN
+ {
+ AUTHORIZATIONS
+ {
+ }
+ }
+ EDIT
+ {
+ AUTHORIZATIONS
+ {
+ }
+ }
+}
+MDSINFO
+{
+ LOCAL ''
+ GLOBAL ''
+}
+INFOOBJECT
+{
+ KEY [892.10.659695]
+ OBJECTTYPE Application // appEditor
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [892.10.659696]
+ OBJECTTYPE Frame // Frame
+ CONTENTS
+ {
+ State := maximized
+ (896,312,1024,768)
+ WorkspaceLocation := TreePath[R0.8;B0.0061;]
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [103784.990.795900613]
+ OBJECTTYPE ValueHolder // vhSearchHistory
+ CONTENTS
+ {
+ Value ''
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [10786.1.820220316]
+ OBJECTTYPE ValueHolder // vhLoadingErrCount
+ CONTENTS
+ {
+ Value '0'
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [10786.1.820229990]
+ OBJECTTYPE ValueHolder // vhLoadReason
+ CONTENTS
+ {
+ Value 'Startup'
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [10786.1.821405088]
+ OBJECTTYPE ValueHolder // vhWriteErrorCount
+ CONTENTS
+ {
+ Value '0'
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [10786.2.342765638]
+ OBJECTTYPE ValueHolder // vhGlobals
+ CONTENTS
+ {
+ Value ''
+ }
+ BASEINFOOBJECTS
+ {
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [103784.990.815711421]
+ SINGLEINSTANCE false
+ ID 'Type Details'
+ PARENTKEY [892.10.659696]
+ OBJECTTYPE Form // frmObjectDefinitionBrowser
+ CREATETYPE frmObjectDefinitionBrowser
+ CONTENTS
+ {
+ State := normal
+ (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
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [892.10.660027]
+ {
+ [892.10.660028]
+ [644.0.84080945]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [121142.0.501068000]
+ {
+ Header := 'Name'
+ Width := 100
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Name [1.2.1645]'
+ }
+ }
+ Column internal[DataSetDataColumn] [121142.0.501068001]
+ {
+ Header := 'BaseTypeName'
+ Width := 100
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'BaseTypeName [1.2.2198]'
+ }
+ }
+ }
+ }
+ DataMemberSort 'SortOrder [1.2.1686]' true true
+ ColumnSort [121142.0.501068000] true false
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [121142.0.500923128]
+ OBJECTTYPE List // lstObjectDefinitionBrowser
+ CONTENTS
+ {
+ Quantorrow := false
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [121142.0.500923177]
+ OBJECTTYPE GUIDataSetLevel // dslElements
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [103784.990.769111502]
+ {
+ [103784.990.795596828]
+ [103784.990.795596827]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [121142.0.501068002]
+ {
+ Width := 401
+ SizedByUser := true
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Outline [1.2.6115]'
+ }
+ }
+ Column internal[DataSetDataColumn] [121142.0.501068003]
+ {
+ Width := 319
+ SizedByUser := true
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'ValueType [1.2.6117]'
+ }
+ }
+ }
+ }
+ Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n <GEBFiltering Key="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>true</CurrentFilter>\n <Name>Default Filter</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>0</SortIndex>\n <GEBFilteringData Key="@2">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@3">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@4" Column="@Outline1">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@5">\n <ExpressionText></ExpressionText>\n <Converter>\n <ZeroConverter Key="@6">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_inherited_elements1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide inherited elements</Name>\n <Active>false</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>1</SortIndex>\n <GEBFilteringData Key="@7">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline2" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823646]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBSelectColumn Key="@ValueType1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823661]</ColumnID>\n <BaseName>ValueType</BaseName>\n <Name>ValueType</Name>\n <Title>ValueType</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>ValueType</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBSelectColumn Key="@IsInherited1" ElementType="internal[UITypeDisplayElementBase]" ValueType="Boolean">\n <ColumnID>[121142.0.507823701]</ColumnID>\n <BaseName>IsInherited</BaseName>\n <Name>IsInherited</Name>\n <Title>IsInherited</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>IsInherited</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@8">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@9" Column="@Outline2">\n <ColumnID>[121142.0.507823646]</ColumnID>\n </GEBFilterColumn>\n <GEBFilterColumn Key="@10" Column="@ValueType1">\n <ColumnID>[121142.0.507823661]</ColumnID>\n </GEBFilterColumn>\n <GEBFilterColumn Key="@11" Column="@IsInherited1">\n <ColumnID>[121142.0.507823701]</ColumnID>\n <GEBFilterColumnMatch Key="@12">\n <Operation>=</Operation>\n <Enabled>true</Enabled>\n <RHSValue>\n <RHSConstantValue Key="@13">\n <StringValue></StringValue>\n <Value>false</Value>\n </RHSConstantValue>\n </RHSValue>\n </GEBFilterColumnMatch>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@14">\n <ExpressionText></ExpressionText>\n <Converter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_empty_groups1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide empty groups</Name>\n <Active>false</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>2</SortIndex>\n <GEBFilteringData Key="@15">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline3" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823747]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@16">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@17" Column="@Outline3">\n <ColumnID>[121142.0.507823747]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@18">\n <ExpressionText>object.istype( UITypeDisplayNewElementPlaceholder )\nor object.Group().ModeledElementsSize() > 0</ExpressionText>\n <Converter>\n <ZeroConverter Key="@19">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_coded_elements1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide coded elements</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>3</SortIndex>\n <GEBFilteringData Key="@20">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline4" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@21">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@22" Column="@Outline4">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@23">\n <ExpressionText>( object.istype( UITypeDisplayElement ) and object.Kind() = "RELATION" ) or\nobject.istype( UITypeDisplayGroupHeader ) or\nobject.istype( UITypeDisplayNewElementPlaceholder ) or\n( object.istype( UIModeledTypeDisplayElement ) and\n not isnull(object.astype( UIModeledTypeDisplayElement ).ObjectModelObject()) and\n object.astype( UIModeledTypeDisplayElement ).ObjectModelObject().Visible() )</ExpressionText>\n <Converter>\n <ZeroConverter Key="@24">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n</GEBObjectsFilter>\n'
+ DataMemberSort 'Index [1.2.7326]' true true
+ ColumnSort [121142.0.501068002] true false
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [121142.0.500923178]
+ OBJECTTYPE GUIDataSetLevel // dslOverrides
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [103784.990.1153959078]
+ {
+ [103784.990.1159008565]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [121142.0.501068004]
+ {
+ Width := 100
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'ObjectModelObject [1.3.4850]|TargetType [1.2.1730]'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [136402.0.98084624]
+ SINGLEINSTANCE false
+ ID 'Types per Module'
+ PARENTKEY [892.10.659696]
+ OBJECTTYPE Form // frmTypesByModule
+ CREATETYPE frmTypesByModule
+ CONTENTS
+ {
+ State := normal
+ (0,0,0,0)
+ DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;T0.4273;]TabIdx[0]Selection[FRONT]
+ }
+ BASEINFOOBJECTS
+ {
+ BASEINFOOBJECT
+ {
+ KEY [136402.0.98084624]
+ OBJECTTYPE GUIComponent // frmTypesByModule
+ COMPONENTDATA
+ {
+ [136402.0.98084624]:[103784.990.728734692]:[892.10.659816]:[514.0.129466]:[892.10.659835] STR 'true'
+ }
+ }
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [121142.0.1211769996]
+ OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel776
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [121142.0.950060792]
+ {
+ [121142.0.950062702]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [121142.0.950062702]
+ {
+ Width := 100
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Name [1.2.6744]'
+ }
+ }
+ }
+ }
+ ColumnSort [121142.0.950062702] true false
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [103784.990.728734692]
+ OBJECTTYPE List // ListTypes
+ CONTENTS
+ {
+ Quantorrow := false
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [101180.2.890701323]
+ OBJECTTYPE ValueHolder // ValueHolder
+ CONTENTS
+ {
+ Value 'false'
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [10786.2.342808981]
+ OBJECTTYPE ValueHolder // vhGlobals
+ CONTENTS
+ {
+ Value ''
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [892.10.659838]
+ OBJECTTYPE GUIDataSetLevel // dslTypes
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [121142.0.950060792]
+ {
+ [121142.0.950062702]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [121142.0.950062702]
+ {
+ Width := 367
+ SizedByUser := true
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Name [1.2.6744]'
+ }
+ }
+ }
+ }
+ DataMemberSort 'IsDomain [1.2.6747]' false true
+ DataMemberSort 'IsSystemLibrary [1.2.7907]' true true
+ DataMemberSort 'IsAvailable [1.2.7451]' false true
+ ColumnSort [121142.0.950062702] true false
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [136402.0.98091406]
+ OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelTypes
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [103784.990.1535755633]
+ {
+ [103784.990.1535759199]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [103784.990.1535759199]
+ {
+ Width := 375
+ SizedByUser := true
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Name [1.2.1645]'
+ }
+ }
+ }
+ }
+ Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[ObjectModelType]">\n <GEBFiltering Key="@Default_Filter1" TargetType="internal[ObjectModelType]">\n <CurrentFilter>true</CurrentFilter>\n <Name>Default Filter</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>0</SortIndex>\n <GEBFilteringData Key="@2">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Name1" ElementType="internal[ObjectModelType]" ValueType="String">\n <ColumnID>[413988.0.1111730433]</ColumnID>\n <BaseName>Name</BaseName>\n <Name>Name</Name>\n <Title>Name</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Name</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@3">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@4" Column="@Name1">\n <ColumnID>[413988.0.1111730433]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@5">\n <ExpressionText></ExpressionText>\n <Converter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n</GEBObjectsFilter>\n'
+ DataMemberSort 'SortOrder [1.2.1686]' true true
+ ColumnSort [103784.990.1535759199] true false
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [135566.0.318964952]
+ OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSpecializations
+ CONTENTS
+ {
+ Columns
+ {
+ Definition := [103784.990.1535755633]
+ {
+ [103784.990.1535759199]
+ }
+ SubTotals := true
+ Visible
+ {
+ Column internal[DataSetDataColumn] [103784.990.1535759199]
+ {
+ Width := 100
+ Subtotals := false
+ Specific
+ {
+ DataPath := 'Name [1.2.1645]'
+ }
+ }
+ }
+ }
+ DataMemberSort 'SortOrder [1.2.1686]' true true
+ ColumnSort [103784.990.1535759199] true false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ INFOOBJECT
+ {
+ KEY [121142.0.36340892]
+ SINGLEINSTANCE false
+ ID 'Model Overview'
+ PARENTKEY [892.10.659696]
+ OBJECTTYPE Form // frmModelOverview
+ CREATETYPE frmModelOverview
+ CONTENTS
+ {
+ State := normal
+ (0,0,0,0)
+ DockableLocation := Station[MAIN]State[NORM]TreePath[R0.8;T0.9939;]TabIdx[0]Selection[FRONT]
+ }
+ BASEINFOOBJECTS
+ {
+ BASEINFOOBJECT
+ {
+ KEY [121142.0.36340892]
+ OBJECTTYPE GUIContainerComponent // frmModelOverview
+ 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'
+ [121142.0.36340892]:[121142.0.37512339]:[121142.0.48706989]:[121142.0.48706990]:[121142.0.48809938] STR 'true'
+ }
+ }
+ }
+ INFOOBJECTS
+ {
+ INFOOBJECT
+ {
+ KEY [121142.0.37512339]
+ OBJECTTYPE CustomDrawComponent // customDraw
+ CONTENTS
+ {
+ ZoomX 1.331
+ ZoomY 1.331
+ }
+ INFOOBJECTS
+ {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ COMPONENTDATA
+ {
+ [892.10.659695]:[892.10.659696]:[103784.990.702401639] STR 'MacroPlanner'
+ [892.10.659695]:[892.10.659696]:[892.10.659800]:[892.10.1501977] STR '0'
+ }
+}
diff --git "a/_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__\133124808.0.140900041\135.vw" "b/_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__\133124808.0.140900041\135.vw"
index 1ffab78..582d5eb 100644
--- "a/_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__\133124808.0.140900041\135.vw"
+++ "b/_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__\133124808.0.140900041\135.vw"
@@ -16,7 +16,7 @@
CREATIONUSER ''
UPDATEDATETIME '2017-06-05T15:08:50'
UPDATEUSER 'quintiq/dwe2'
- LASTACCESSDATE '2020-03-25'
+ LASTACCESSDATE '2024-06-28'
VIEWSCOPE 0
}
AUTHORIZATIONS
--
Gitblit v1.9.3