From 916984c1eb182dbdabf8f40007cdc1648bcd460e Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期二, 09 七月 2024 13:19:32 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def | 7
_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_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick#723.def | 6
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def | 21
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl | 27
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def | 47
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def | 16
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl | 23
_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl | 7
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def | 34
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def | 17
_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def | 16
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl | 2
_Main/BL/Type_InventorySummaryColumn/Method_GenerateCell.qbl | 41
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def | 24
_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl | 63
_Main/BL/Type_FinancialWeeklyRow/_ROOT_Type_FinancialWeeklyRow.qbl | 10
_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_FinancialWeeklyReport/StaticMethod_Download.qbl | 65
_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl | 8
_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl | 8
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl | 27
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl | 1
_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def | 59
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def | 18
_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl | 40
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged#98.def | 2
_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def | 23
_Main/BL/Type_FinancialWeeklyCell/_ROOT_Type_FinancialWeeklyCell.qbl | 10
_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl | 14
_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl | 53
_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def | 2
_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/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_MatrixEditorTable.def | 97
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def | 24
_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def | 16
_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl | 17
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def | 10
_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl | 40
_Main/BL/Type_FinancialWeeklyRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable#1.def | 10
_Main/BL/Type_ExportXMLManager/Method_Export.qbl | 9
_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def | 21
_Main/BL/Type_Test/StaticMethod_Test.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def | 16
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl | 21
_Main/BL/Type_FinancialWeeklyColumn/_ROOT_Type_FinancialWeeklyColumn.qbl | 10
_Main/BL/Type_FinancialWeeklyReport/_ROOT_Type_FinancialWeeklyReport.qbl | 10
_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsEndDate_OnChanged.def | 16
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def | 18
_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def | 19
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl | 45
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def | 16
_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def | 18
_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def | 20
_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl | 12
_Main/BL/Type_FinancialWeeklyReport/Attribute_ID.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhEndDate_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def | 21
_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl | 7
_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def | 34
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def | 35
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def | 15
_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def | 22
_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl | 23
_Main/BL/Type_InventroySummaryRow/Method_SetCellValue0.qbl | 21
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 20
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl | 104
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick#570.def | 30
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialWeeklyReport_OnCli.def | 16
_Main/BL/Type_FinancialSalesColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def | 59
_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit#715.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def | 2
_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_F.qbl | 26
_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 | 48
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def | 2
_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def | 2
_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl | 78
_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl | 44
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl | 1
_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def | 16
_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/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def | 60
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def | 20
_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl | 22
_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl | 23
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl | 14
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl | 8
_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/BL/Type_FinancialWeeklyReport/Method_GenerateColumn.qbl | 20
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 33
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def | 46
_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl | 10
_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl | 23
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl | 10
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl | 7
_Main/BL/Type_ExportXMLManager/Attribute_SheetName.qbl | 7
_Main/BL/Relations/Relation_FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport.qbl | 23
_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def | 24
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def | 24
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def | 24
_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay#687.def | 37
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def | 24
_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl | 36
_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def | 2
_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl | 6
_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl | 23
_Main/BL/Type_FinancialProductionCell/Function_CalcPlanValue.qbl | 13
_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl | 10
_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl | 8
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def | 20
_Main/BL/Type_EmployeeType/Attribute_Name.qbl | 7
_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__[124808.0.140900041].vw | 2
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl | 23
_Main/UI/MacroPlannerWebApp/Views/Financial_weekly_report_view.vw | 92
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def | 21
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def | 121
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower#858.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def | 48
_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl | 10
_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def | 37
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def | 20
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl | 23
_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl | 23
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable#424.def | 14
_Main/BL/Type_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def | 6
_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/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def | 6
_Main/BL/Relations/Relation_FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_Finan.qbl | 26
_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pVersionInfomation.def | 53
_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl | 8
_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged#599.def | 2
_Main/BL/Type_FinancialWeeklyReport/Attribute_IsShow.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl | 27
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def | 2
_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl | 7
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl | 9
_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_FormEmployeeCost/Component_listActionBarPage216.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def | 23
_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl | 7
_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl | 7
_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def | 2
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl | 5
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultName.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslPower_OnCreated.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslGeneration_OnCreated.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def | 20
_Main/BL/Type_FinancialWeeklyRow/Attribute_RowNr.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def | 22
_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def | 24
_Main/BL/Type_InventorySummaryColumn/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl | 41
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def | 1
_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl | 8
_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl | 10
_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl | 7
_Main/BL/Type_FinancialWeeklyCell/Attribute_Value.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def | 38
_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl | 6
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl | 10
_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixeditorContextMenuTable.def | 10
_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl | 39
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def | 19
_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl | 7
_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def | 18
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl | 17
_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl | 7
_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def | 35
_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_EmployeeCost/DefaultValue_TimeUnit.qbl | 7
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Period.qbl | 7
_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl | 2
_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl | 7
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl | 135 +
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl | 41
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def | 46
_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def | 17
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable#623.def | 97
_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def | 20
_Main/BL/Type_FinancialWeeklyReport/Attribute_Name.qbl | 8
_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def | 38
_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl | 7
_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def | 29
_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_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_FinancialSalesSearch/DefaultValue_MqbMlb.qbl | 6
_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl | 78
_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl | 135 +
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost#154.def | 16
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl | 11
_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl | 6
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def | 24
_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def | 96
_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 | 17
_Main/BL/Type_FinancialSalesSource/StaticMethod_Upload.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost#289.def | 59
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def | 20
_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl | 7
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultName.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def | 40
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhFinelProduct_OnCreated.def | 16
_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_OvertimeMultiplier/Attribute_Multiplier.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def | 46
_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsStartDate_OnChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_ButtonExport_OnClick.def | 18
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl | 6
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl | 173 +
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def | 2
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def | 63
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def | 46
_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl | 22
_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration#844.def | 24
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw | 16
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl | 21
_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl | 7
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/BL/Type_InventroySummaryRow/Method_SetCellValue#0.qbl | 18
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def | 18
_Main/BL/Type_LocalColumn/Function_CalcDate.qbl | 13
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def | 26
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl | 49
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def | 45
_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_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl | 9
_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def | 2
_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def | 2
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation#568.def | 49
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def | 21
_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def | 19
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultAllUnit.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def | 14
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def | 20
_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_FormFinancialWeeklyReport/Component_PanelTable.def | 14
_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/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl | 10
_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def | 2
_Main/BL/Type_LocalColumn/Attribute_Date.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhStartDate_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def | 25
_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def | 20
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl | 26
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def | 10
_Main/BL/Relations/Relation_FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_Financia.qbl | 23
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl | 6
_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl | 6
_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_Financi.qbl | 23
_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/BL/Type_FinancialProductionCell/Attribute_PlanValue.qbl | 8
_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl | 10
_Main/BL/Type_FinancialWeeklyColumn/Function_CalcIndex.qbl | 13
_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl | 9
_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl | 23
_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl | 8
382 files changed, 7,517 insertions(+), 103 deletions(-)
diff --git a/_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl b/_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl
new file mode 100644
index 0000000..4063152
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EmployeeCost_EmployeeType_EmployeeType_EmployeeCost
+{
+ #keys: '1[412672.1.2854689]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide EmployeeType
+ {
+ #keys: '3[412672.1.2854691][412672.1.2854690][412672.1.2854692]'
+ Cardinality: '0to1'
+ ObjectDefinition: EmployeeCost
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide EmployeeCost
+ {
+ #keys: '3[412672.1.2854694][412672.1.2854693][412672.1.2854695]'
+ Cardinality: '1toN'
+ ObjectDefinition: EmployeeType
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl b/_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl
new file mode 100644
index 0000000..116f104
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EmployeeCost_Unit_Unit_EmployeeCost
+{
+ #keys: '1[412672.1.2854611]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide Unit
+ {
+ #keys: '3[412672.1.2854613][412672.1.2854612][412672.1.2854614]'
+ Cardinality: '0to1'
+ ObjectDefinition: EmployeeCost
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide EmployeeCost
+ {
+ #keys: '3[412672.1.2854616][412672.1.2854615][412672.1.2854617]'
+ Cardinality: '1toN'
+ ObjectDefinition: Unit
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl b/_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl
new file mode 100644
index 0000000..8dc7a1c
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EmployeeType_MacroPlan_MacroPlan_EmployeeType
+{
+ #keys: '1[412672.1.2880055]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[412672.1.2880057][412672.1.2880056][412672.1.2880058]'
+ Cardinality: '0to1'
+ ObjectDefinition: EmployeeType
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide EmployeeType
+ {
+ #keys: '3[412672.1.2880060][412672.1.2880059][412672.1.2880061]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
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_FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_Finan.qbl b/_Main/BL/Relations/Relation_FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_Finan.qbl
new file mode 100644
index 0000000..d1549b6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_Finan.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_FinancialWeeklyColumn
+{
+ #keys: '1[415136.0.880724166]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.880724185][415136.0.880724179][415136.0.880724186][415136.0.880724180][415136.0.880724187][415136.0.880724181][415136.0.880724188][415136.0.880724182][415136.0.880724189][415136.0.880724183][415136.0.880724190][415136.0.880724184]'
+ SequenceElementSuffix: 'CellInColumn'
+ SequenceSuffix: 'CellInColumn'
+ }
+ RelationSide.LeftSide FinancialWeeklyCell
+ {
+ #keys: '3[415136.0.880724168][415136.0.880724167][415136.0.880724169]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialWeeklyColumn
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialWeeklyColumn
+ {
+ #keys: '3[415136.0.880724171][415136.0.880724170][415136.0.880724172]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialWeeklyCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_F.qbl b/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_F.qbl
new file mode 100644
index 0000000..60e95e6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_F.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_FinancialWeeklyReport
+{
+ #keys: '1[415136.0.880724207]'
+ ProceduralSequenceRelationStrategy
+ {
+ #keys: '13[0.0.0][415136.0.880724228][415136.0.880724222][415136.0.880724229][415136.0.880724223][415136.0.880724230][415136.0.880724224][415136.0.880724231][415136.0.880724225][415136.0.880724232][415136.0.880724226][415136.0.880724233][415136.0.880724227]'
+ SequenceElementSuffix: 'Column'
+ SequenceSuffix: 'Column'
+ }
+ RelationSide.LeftSide FinancialWeeklyColumn
+ {
+ #keys: '3[415136.0.880724209][415136.0.880724208][415136.0.880724210]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialWeeklyReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialWeeklyReport
+ {
+ #keys: '3[415136.0.880724212][415136.0.880724211][415136.0.880724213]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialWeeklyColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_Financi.qbl b/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_Financi.qbl
new file mode 100644
index 0000000..1e7eb8b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_Financi.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_FinancialWeeklyReport
+{
+ #keys: '1[415136.0.880724123]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialWeeklyRow
+ {
+ #keys: '3[415136.0.880724125][415136.0.880724124][415136.0.880724126]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialWeeklyReport
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide FinancialWeeklyReport
+ {
+ #keys: '3[415136.0.880724128][415136.0.880724127][415136.0.880724129]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialWeeklyRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport.qbl b/_Main/BL/Relations/Relation_FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport.qbl
new file mode 100644
index 0000000..443896d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport
+{
+ #keys: '1[415136.0.880700289]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[415136.0.880700291][415136.0.880700290][415136.0.880700292]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialWeeklyReport
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialWeeklyReport
+ {
+ #keys: '3[415136.0.880700294][415136.0.880700293][415136.0.880700295]'
+ Cardinality: '0to1'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_Financia.qbl b/_Main/BL/Relations/Relation_FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_Financia.qbl
new file mode 100644
index 0000000..8992c88
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_Financia.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_FinancialWeeklyRow
+{
+ #keys: '1[415136.0.880700305]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide FinancialWeeklyCell
+ {
+ #keys: '3[415136.0.880700307][415136.0.880700306][415136.0.880700308]'
+ Cardinality: '1toN'
+ ObjectDefinition: FinancialWeeklyRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinancialWeeklyRow
+ {
+ #keys: '3[415136.0.880700310][415136.0.880700309][415136.0.880700311]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinancialWeeklyCell
+ 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_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl b/_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl
new file mode 100644
index 0000000..0a37108
--- /dev/null
+++ b/_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier
+{
+ #keys: '1[412672.1.2880092]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[412672.1.2880094][412672.1.2880093][412672.1.2880095]'
+ Cardinality: '0to1'
+ ObjectDefinition: OvertimeMultiplier
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide OvertimeMultiplier
+ {
+ #keys: '3[412672.1.2880097][412672.1.2880096][412672.1.2880098]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl b/_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl
new file mode 100644
index 0000000..1a69023
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BaseSalary
+{
+ #keys: '3[412672.1.2854665][412672.1.2854664][412672.1.2854666]'
+ Description: 'BaseSalary'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl b/_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl
new file mode 100644
index 0000000..db99fe2
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EmployeeNumber
+{
+ #keys: '3[412672.1.2854635][412672.1.2854634][412672.1.2854636]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl b/_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl
new file mode 100644
index 0000000..16c94a8
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[412672.1.2854645][412672.1.2854644][412672.1.2854646]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl b/_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..bf8dc85
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[412672.1.2854655][412672.1.2854654][412672.1.2854656]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl b/_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl
new file mode 100644
index 0000000..b1b021c
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ ISOValue: '鏈�'
+ TargetAttribute: TimeUnit
+}
diff --git a/_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl b/_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl
new file mode 100644
index 0000000..a056ac4
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ const constcontent Units owner
+) as BinaryValue
+{
+ TextBody:
+ [*
+ // rislai Jul-3-2024 (created)
+ xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>浜哄憳鎴愭湰</name>';
+ columnXML1 := "<column><name>浜哄憳绫诲埆</name><type>String</type>";
+ columnXML2 := "<column><name>浜烘暟</name><type>Number</type>";
+ columnXML3 := "<column><name>浜х嚎</name><type>String</type>";
+ columnXML4 := "<column><name>寮�濮嬫椂闂�</name><type>String</type>";
+ columnXML5 := "<column><name>鏃堕棿鍗曚綅</name><type>String</type>";
+ columnXML6 := "<column><name>鍩烘湰宸ヨ祫</name><type>Number</type>";
+
+ costs := selectsortedset( owner,Elements.EmployeeCost,cost,cost.Unit().Name() );
+ traverse( costs,Elements,cost ){
+ columnXML1 := columnXML1 + '<cell value="' + cost.EmployeeType().Name() + '"/>'
+ columnXML2 := columnXML2 + '<cell value="' + [String]cost.EmployeeNumber() + '"/>'
+ columnXML3 := columnXML3 + '<cell value="' + cost.Unit().Name() + '"/>'
+ columnXML4 := columnXML4 + '<cell value="' + cost.StartDate().Format( "Y-M2-D2" ) + '"/>'
+ columnXML5 := columnXML5 + '<cell value="' + cost.TimeUnit() + '"/>'
+ columnXML6 := columnXML6 + '<cell value="' + cost.BaseSalary().Format( "N(Dec())" ) + '"/>'
+ }
+ columnXML1 := columnXML1 + "</column>";
+ columnXML2 := columnXML2 + "</column>";
+ columnXML3 := columnXML3 + "</column>";
+ columnXML4 := columnXML4 + "</column>";
+ columnXML5 := columnXML5 + "</column>";
+ columnXML6 := columnXML6 + "</column>";
+
+ xmlTemplate := xmlTemplate + columnXML1 + columnXML2 + columnXML3 + columnXML4 + columnXML5 + columnXML6 + "</table>";
+ tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ));
+ tableGroupHandle.Add( tableHandle );
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl b/_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl
new file mode 100644
index 0000000..fbd4e8e
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl
@@ -0,0 +1,78 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+ MacroPlan owner,
+ const GeneralExcelImportAndExportDataTable table
+)
+{
+ TextBody:
+ [*
+ // rislai Jul-3-2024 (created)
+ units := construct( Units );
+ unitIndexTree := NamedValueTree::Create();
+
+ employeeTypes := construct( EmployeeTypes );
+ employeeTypeIndexTree := NamedValueTree::Create();
+
+ costs := selectset( owner,Unit.EmployeeCost,cost,true );
+ traverse( costs,Elements,element ){
+ element.Delete();
+ }
+
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( 'yyyy-MM-dd' );//2024-07-03
+
+ traverse( table,GeneralExcelImportAndExportDataRow,row ){
+ employeeType := null( EmployeeType );
+ employeeNumber := 0;
+ unit := null( Unit );
+ startDate := Date::MinDate();
+ timeUnit := "";
+ baseSalary := 0.0;
+ traverse( row,GeneralExcelImportAndExportDataCell,cell ){
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "浜哄憳绫诲埆" ){
+ employeeTypeHandle := employeeTypeIndexTree.GetHandle( cell.Value() );
+ index := guard( employeeTypeIndexTree.Root().Child( employeeTypeHandle ),null( NamedValue ));
+ if( not isnull( index )){
+ employeeType := employeeTypes.Element( index.GetValueAsNumber() );
+ }else{
+ employeeType := select( owner,EmployeeType,type,type.Name() = cell.Value() );
+ if( not isnull( employeeType )){
+ employeeTypes.Add( employeeType );
+ employeeTypeIndexTree.Root().AddChild( employeeTypeHandle,employeeTypes.Size() - 1 );
+ }
+ }
+ }
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "浜烘暟" ){
+ employeeNumber := [Number]cell.Value();
+ }
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "浜х嚎" ){
+ unitHandle := unitIndexTree.GetHandle( cell.Value() );
+ index := guard( unitIndexTree.Root().Child( unitHandle ),null( NamedValue ));
+ if( not isnull( index )){
+ unit := units.Element( index.GetValueAsNumber() );
+ }else{
+ unit := select( owner,Unit,temp_unit,temp_unit.ID() = cell.Value() );
+ if( not isnull( unit )){
+ units.Add( unit );
+ unitIndexTree.Root().AddChild( unitHandle,units.Size() - 1 );
+ }
+ }
+ }
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "寮�濮嬫椂闂�" ){
+ startDate := cnv2.Convert( cell.Value() );
+ }
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "鏃堕棿鍗曚綅" ){
+ timeUnit := cell.Value();
+ }
+ if( cell.GeneralExcelImportAndExportDataColumn().Name() = "鍩烘湰宸ヨ祫" ){
+ baseSalary := [Real]cell.Value();
+ }
+ }
+ if( not isnull( unit )){
+ unit.EmployeeCost( relnew,EmployeeType := employeeType,EmployeeNumber := employeeNumber,StartDate := startDate,TimeUnit := timeUnit,BaseSalary := baseSalary );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl b/_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl
new file mode 100644
index 0000000..1129e59
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EmployeeCost
+{
+ #keys: '5[412672.1.2854608][412672.1.2854606][0.0.0][412672.1.2854607][412672.1.2854609]'
+ BaseType: Object
+ Description: 'EmployeeCost'
+ StructuredName: 'EmployeeCosts'
+}
diff --git a/_Main/BL/Type_EmployeeType/Attribute_Name.qbl b/_Main/BL/Type_EmployeeType/Attribute_Name.qbl
new file mode 100644
index 0000000..067a7ad
--- /dev/null
+++ b/_Main/BL/Type_EmployeeType/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.1.2854680][412672.1.2854679][412672.1.2854681]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl b/_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl
new file mode 100644
index 0000000..eca7ed2
--- /dev/null
+++ b/_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type EmployeeType
+{
+ #keys: '5[412672.1.2854676][412672.1.2854674][0.0.0][412672.1.2854675][412672.1.2854677]'
+ BaseType: Object
+ StructuredName: 'EmployeeTypes'
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Attribute_SheetName.qbl b/_Main/BL/Type_ExportXMLManager/Attribute_SheetName.qbl
new file mode 100644
index 0000000..9731693
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/Attribute_SheetName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SheetName
+{
+ #keys: '3[412672.0.1121446115][412672.0.1121446114][412672.0.1121446116]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
index 3b9cd77..0f9c6bf 100644
--- a/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
+++ b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
@@ -5,7 +5,7 @@
TextBody:
[*
// rislai Jun-20-2024 (created)
- xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ this.Name() +'</name>';
+ xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ this.SheetName() +'</name>';
datas := selectsortedset( this,ExportXMLData,data,true,data.Priority() );
diff --git a/_Main/BL/Type_ExportXMLManager/Method_Export.qbl b/_Main/BL/Type_ExportXMLManager/Method_Export.qbl
index 76e648d..c8ae706 100644
--- a/_Main/BL/Type_ExportXMLManager/Method_Export.qbl
+++ b/_Main/BL/Type_ExportXMLManager/Method_Export.qbl
@@ -6,10 +6,15 @@
[*
// rislai Jun-21-2024 (created)
tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
- tableHandle := TableHandle::ImportXML( BinaryValue::Construct( this.FinalXML() ) );
+ tableHandle := null( TableHandle );
+ try{
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( this.FinalXML()));
+ }onerror{
+ this.Delete();
+ error( e );
+ }
tableGroupHandle.Add( tableHandle );
binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
-
return binaryData.AsBinaryValue();
*]
}
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
index fdde1b7..1acc8ee 100644
--- a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -2,7 +2,8 @@
#parent: #root
StaticMethod AwaitLocalTableXMLData (
const Strings columnXMLData,
- RecycleBin owner
+ RecycleBin owner,
+ String tableName
)
{
TextBody:
@@ -10,7 +11,7 @@
// rislai Jun-21-2024 (created)
manager := select( owner,ExportXMLManager,manager,manager.Name() = "LocalTableXML" );
if( isnull( manager )){
- manager := owner.ExportXMLManager( relnew,Name := "LocalTableXML" );
+ manager := owner.ExportXMLManager( relnew,Name := "LocalTableXML",SheetName := tableName );
}else{
manager.ExportXMLData( relflush );
}
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
index fc5bb88..f8f7792 100644
--- a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
@@ -10,7 +10,7 @@
// rislai Jun-20-2024 (created)
manager := select( owner,ExportXMLManager,manager,manager.Name() = "ShiftPlanXML" );
if( isnull( manager )){
- manager := owner.ExportXMLManager( relnew,Name := "ShiftPlanXML" );
+ manager := owner.ExportXMLManager( relnew,Name := "ShiftPlanXML",SheetName := "Shift plan" );
}else{
manager.ExportXMLData( relflush );
}
diff --git a/_Main/BL/Type_FinancialProductionCell/Attribute_PlanValue.qbl b/_Main/BL/Type_FinancialProductionCell/Attribute_PlanValue.qbl
new file mode 100644
index 0000000..87d0ca7
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionCell/Attribute_PlanValue.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PlanValue
+{
+ #keys: '3[415136.0.880970239][415136.0.880970238][415136.0.880970240]'
+ Description: '璁″垝鍊�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_FinancialProductionCell/Function_CalcPlanValue.qbl b/_Main/BL/Type_FinancialProductionCell/Function_CalcPlanValue.qbl
new file mode 100644
index 0000000..b51c61d
--- /dev/null
+++ b/_Main/BL/Type_FinancialProductionCell/Function_CalcPlanValue.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcPlanValue
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-5-2024 (created)
+
+ value := ifexpr( this.FinancialProductionColumn().FinancialProductionReport().FinancialProductionSource().MacroPlan().StartOfPlanning().StartOfMonth().Date() <= this.FinancialProductionColumn().Period(), [Real]this.Value(), 0 );
+
+ this.PlanValue( value );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
index e469589..77d1f16 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -6,5 +6,6 @@
[*
// 鐢勫叞楦� Jun-25-2024 (created)
return '闀挎槬';
+ //return 'Assembly Plant (France)';
*]
}
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
index 71132d4..4759121 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -6,5 +6,6 @@
[*
// 鐢勫叞楦� Jun-25-2024 (created)
return '澶ц繛';
+ //return 'Assembly Plant (Spain)';
*]
}
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..6cbc77d
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String salessegment,
+ String product
+) 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 );
+ }
+
+ 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..0c6ebc7
--- /dev/null
+++ b/_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ FinancialSalesReport table
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ traverse( table, FinancialSalesColumn, column ){
+ 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..804d079
--- /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() );
+ 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() );
+ // 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() );
+ // 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() );
+ ccrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allsalessegment, product.ID() );
+ 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() );
+ dlrow.Initialize( column, pit.Quantity() );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+
+ allrow := table.GetRow( allsalessegment, pit.ProductID() );
+ 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_FinancialWeeklyCell/Attribute_Value.qbl b/_Main/BL/Type_FinancialWeeklyCell/Attribute_Value.qbl
new file mode 100644
index 0000000..d0100df
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[415136.0.880700281][415136.0.880700280][415136.0.880700282]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl b/_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl
new file mode 100644
index 0000000..913414b
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Value
+}
diff --git a/_Main/BL/Type_FinancialWeeklyCell/_ROOT_Type_FinancialWeeklyCell.qbl b/_Main/BL/Type_FinancialWeeklyCell/_ROOT_Type_FinancialWeeklyCell.qbl
new file mode 100644
index 0000000..dcfd66f
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyCell/_ROOT_Type_FinancialWeeklyCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialWeeklyCell
+{
+ #keys: '5[415136.0.880700278][415136.0.880700276][0.0.0][415136.0.880700277][415136.0.880700279]'
+ BaseType: Object
+ Description: '璐㈠姟鍛ㄦ姤鎶ヨ〃鍗曞厓鏍�'
+ StructuredName: 'FinancialWeeklyCells'
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Index.qbl b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..e9d1d66
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.880700264][415136.0.880700263][415136.0.880700265]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Name.qbl b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..8d33fbb
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.880700267][415136.0.880700266][415136.0.880700268]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Period.qbl b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Period.qbl
new file mode 100644
index 0000000..89fbd65
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/Attribute_Period.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Period
+{
+ #keys: '3[415136.0.880700270][415136.0.880700269][415136.0.880700271]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/Function_CalcIndex.qbl b/_Main/BL/Type_FinancialWeeklyColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..9adb565
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/Function_CalcIndex.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-21-2024 (created)1
+
+ value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyColumn/_ROOT_Type_FinancialWeeklyColumn.qbl b/_Main/BL/Type_FinancialWeeklyColumn/_ROOT_Type_FinancialWeeklyColumn.qbl
new file mode 100644
index 0000000..d58efd7
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyColumn/_ROOT_Type_FinancialWeeklyColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialWeeklyColumn
+{
+ #keys: '5[415136.0.880700261][415136.0.880700259][0.0.0][415136.0.880700260][415136.0.880700262]'
+ BaseType: Object
+ Description: '璐㈠姟鍛ㄦ姤鍒�'
+ StructuredName: 'FinancialWeeklyColumns'
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/Attribute_ID.qbl b/_Main/BL/Type_FinancialWeeklyReport/Attribute_ID.qbl
new file mode 100644
index 0000000..1615973
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.880700226][415136.0.880700225][415136.0.880700227]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/Attribute_IsShow.qbl b/_Main/BL/Type_FinancialWeeklyReport/Attribute_IsShow.qbl
new file mode 100644
index 0000000..91c8574
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/Attribute_IsShow.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+ #keys: '3[415136.0.880700229][415136.0.880700228][415136.0.880700230]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/Attribute_Name.qbl b/_Main/BL/Type_FinancialWeeklyReport/Attribute_Name.qbl
new file mode 100644
index 0000000..f308987
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.880700232][415136.0.880700231][415136.0.880700233]'
+ Description: '鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl b/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/Method_GenerateColumn.qbl b/_Main/BL/Type_FinancialWeeklyReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..3e3dbae
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/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.FinancialWeeklyColumn( relnew, Name := periodname, Period := periodtime );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Download.qbl
new file mode 100644
index 0000000..1814b15
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Download.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := macroPlan.FinancialWeeklyReport();
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //琛屽悕
+ rowcolumnelement := xmlDOM.CreateElement( "column" );
+ rownameelement := xmlDOM.CreateElement( "name" );
+ rowtypeelement := xmlDOM.CreateElement( "type" );
+ rownameelement.TextContent( '' );
+ rowtypeelement.TextContent( "String" );
+ rowcolumnelement.AppendChild( rownameelement );
+ rowcolumnelement.AppendChild( rowtypeelement );
+
+ tableElement.AppendChild( rowcolumnelement );
+ traverse ( table, FinancialWeeklyColumn, 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, FinancialWeeklyCell, cell, cell.FinancialWeeklyRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.FinancialWeeklyRow();
+ //琛屽悕
+ rowcellElement := xmlDOM.CreateElement( "cell" );
+ rowcellElement.SetAttribute( "value", row.Name() );
+ rowcolumnelement.AppendChild( rowcellElement );
+ }
+ 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( FinancialWeeklyReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultAllUnit.qbl
new file mode 100644
index 0000000..518f4c6
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/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_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl
new file mode 100644
index 0000000..739a84b
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/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 'Assembly Plant (France)';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..d544c74
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/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 'Assembly Plant (Spain)';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..9b7d1de
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/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 weekly';
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl
new file mode 100644
index 0000000..dcd3b98
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl
@@ -0,0 +1,173 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner
+)
+{
+ Description: '鍒濆鍖�'
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-4-2024 (created)
+ owner.FinancialWeeklyReport( relflush );
+ ccunit := FinancialWeeklyReport::GetDefaultCCUnit();
+ dlunit := FinancialWeeklyReport::GetDefaultDLUnit();
+ allunit := FinancialWeeklyReport::GetDefaultAllUnit();
+ defaultname := FinancialWeeklyReport::GetDefaultName();
+ startofplanning := owner.StartOfPlanning();
+
+ table := owner.FinancialWeeklyReport( relnew, ID := defaultname, Name := defaultname );
+ //浜ч噺鎶ヨ〃
+ productiontable := selectobject( owner, FinancialProductionSource.FinancialProductionReport, report, not report.IsImport() and not report.IsShow() );
+ //閿�閲忔姤琛�
+ salestable := selectobject( owner, FinancialSalesSource.FinancialSalesReport, report, not report.IsImport() and not report.IsShow() );
+
+ table.GenerateColumn( owner );
+ totalproduction := table.FinancialWeeklyRow( relnew, Name := '鎬讳骇閲�', RowNr := 1 );
+ dlproduction := table.FinancialWeeklyRow( relnew, Name := 'DL浜ч噺', RowNr := 2 );
+ ccproduction := table.FinancialWeeklyRow( relnew, Name := 'CC浜ч噺', RowNr := 3 );
+ totalsales := table.FinancialWeeklyRow( relnew, Name := '鎬婚攢閲�', RowNr := 4 );
+ dlsales := table.FinancialWeeklyRow( relnew, Name := 'DL閿�閲�', RowNr := 5 );
+ ccsales := table.FinancialWeeklyRow( relnew, Name := 'CC閿�閲�', RowNr := 6 );
+ //SUM
+ totalpvaluesum := [Real]0;
+ dlpvaluesum := [Real]0;
+ ccpvaluesum := [Real]0;
+ totalsvaluesum := [Real]0;
+ dlsvaluesum := [Real]0;
+ ccsvaluesum := [Real]0;
+ //绱閲�
+ totalpvaluecumulant := [Real]0;
+ dlpvaluecumulant := [Real]0;
+ ccpvaluecumulant := [Real]0;
+ totalsvaluecumulant := [Real]0;
+ dlsvaluecumulant := [Real]0;
+ ccsvaluecumulant := [Real]0;
+
+ traverse( table, FinancialWeeklyColumn, column ){
+ productioncolumn := selectobject( productiontable, FinancialProductionColumn, pcolumn, pcolumn.Name() = column.Name() and pcolumn.Period() = column.Period() );
+ salescolumn := selectobject( salestable, FinancialSalesColumn, scolumn, scolumn.Name() = column.Name() and scolumn.Period() = column.Period() );
+
+ //浜ч噺姹囨��
+ totalpvalue := [Real]0;
+ dlpvalue := [Real]0;
+ ccpvalue := [Real]0;
+ traverse( productioncolumn, FinancialProductionCell, cell, [Real]cell.Value() > 0 ){
+ unit := cell.FinancialProductionRow().Unit();
+
+ if( unit = allunit ){
+ totalpvalue := totalpvalue + [Real]cell.Value();
+ if( column.Period() = startofplanning.StartOfMonth().Date() ){
+ totalpvaluecumulant := totalpvaluecumulant - cell.PlanValue();
+ }
+ }else if( unit = dlunit ){
+ dlpvalue := dlpvalue + [Real]cell.Value();
+ if( column.Period() = startofplanning.StartOfMonth().Date() ){
+ dlpvaluecumulant := dlpvaluecumulant - cell.PlanValue();
+ }
+ }else if( unit = ccunit ){
+ ccpvalue := ccpvalue + [Real]cell.Value();
+ if( column.Period() = startofplanning.StartOfMonth().Date() ){
+ ccpvaluecumulant := ccpvaluecumulant - cell.PlanValue();
+ }
+ }
+ }
+ totalpcell := column.FinancialWeeklyCell( relnew, Value := [String]totalpvalue );
+ totalproduction.FinancialWeeklyCell( relinsert, totalpcell );
+ dlpcell := column.FinancialWeeklyCell( relnew, Value := [String]dlpvalue );
+ dlproduction.FinancialWeeklyCell( relinsert, dlpcell );
+ ccpcell := column.FinancialWeeklyCell( relnew, Value := [String]ccpvalue );
+ ccproduction.FinancialWeeklyCell( relinsert, ccpcell );
+
+ //閿�閲忔眹鎬�
+ totalsvalue := [Real]0;
+ dlsvalue := [Real]0;
+ ccsvalue := [Real]0;
+ traverse( salescolumn, FinancialSalesCell, cell, [Real]cell.Value() > 0 ){
+ unit := cell.FinancialSalesRow().Unit();
+ if( unit = allunit ){
+ totalsvalue := totalsvalue + [Real]cell.Value();
+ }else if( unit = dlunit ){
+ dlsvalue := dlsvalue + [Real]cell.Value();
+ }else if( unit = ccunit ){
+ ccsvalue := ccsvalue + [Real]cell.Value();
+ }
+ }
+ totalscell := column.FinancialWeeklyCell( relnew, Value := [String]totalsvalue );
+ totalsales.FinancialWeeklyCell( relinsert, totalscell );
+ dlscell := column.FinancialWeeklyCell( relnew, Value := [String]dlsvalue );
+ dlsales.FinancialWeeklyCell( relinsert, dlscell );
+ ccscell := column.FinancialWeeklyCell( relnew, Value := [String]ccsvalue );
+ ccsales.FinancialWeeklyCell( relinsert, ccscell );
+
+ if( column.Period() < startofplanning.StartOfMonth().Date() ){
+ totalpvaluecumulant := totalpvaluecumulant + totalpvalue;
+ dlpvaluecumulant := dlpvaluecumulant + dlpvalue;
+ ccpvaluecumulant := ccpvaluecumulant + ccpvalue;
+ totalsvaluecumulant := totalsvaluecumulant + totalsvalue;
+ dlsvaluecumulant := dlsvaluecumulant + dlsvalue;
+ ccsvaluecumulant := ccsvaluecumulant + ccsvalue;
+ }
+ totalpvaluesum := totalpvaluesum + totalpvalue;
+ dlpvaluesum := dlpvaluesum + dlpvalue;
+ ccpvaluesum := ccpvaluesum + ccpvalue;
+ totalsvaluesum := totalsvaluesum + totalsvalue;
+ dlsvaluesum := dlsvaluesum + dlsvalue;
+ ccsvaluesum := ccsvaluesum + ccsvalue;
+ }
+ sumcolumn := table.FinancialWeeklyColumn( relnew, Name := 'SUM' );
+ cumulantcolumn := table.FinancialWeeklyColumn( relnew, Name := '绱閲�' );
+ proportioncolumn := table.FinancialWeeklyColumn( relnew, Name := '鍗犳瘮' );
+ //SUM
+ totalpcellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluesum );
+ totalproduction.FinancialWeeklyCell( relinsert, totalpcellsum );
+ dlpcellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluesum );
+ dlproduction.FinancialWeeklyCell( relinsert, dlpcellsum );
+ ccpcellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluesum );
+ ccproduction.FinancialWeeklyCell( relinsert, ccpcellsum );
+ totalscellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluesum );
+ totalsales.FinancialWeeklyCell( relinsert, totalscellsum );
+ dlscellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluesum );
+ dlsales.FinancialWeeklyCell( relinsert, dlscellsum );
+ ccscellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluesum );
+ ccsales.FinancialWeeklyCell( relinsert, ccscellsum );
+ //绱閲�
+ totalpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluecumulant );
+ totalproduction.FinancialWeeklyCell( relinsert, totalpcellcumulant );
+ dlpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluecumulant );
+ dlproduction.FinancialWeeklyCell( relinsert, dlpcellcumulant );
+ ccpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluecumulant );
+ ccproduction.FinancialWeeklyCell( relinsert, ccpcellcumulant );
+ totalscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluecumulant );
+ totalsales.FinancialWeeklyCell( relinsert, totalscellcumulant );
+ dlscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluecumulant );
+ dlsales.FinancialWeeklyCell( relinsert, dlscellcumulant );
+ ccscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluecumulant );
+ ccsales.FinancialWeeklyCell( relinsert, ccscellcumulant );
+ //鍗犳瘮
+ totalpvalueproportion := guard( ( totalpvaluecumulant / totalpvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ totalpcellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := totalpvalueproportion );
+ totalproduction.FinancialWeeklyCell( relinsert, totalpcellproportion );
+
+ dlpvalueproportion := guard( ( dlpvaluecumulant / dlpvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ dlpcellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := dlpvalueproportion );
+ dlproduction.FinancialWeeklyCell( relinsert, dlpcellproportion );
+
+ ccpvalueproportion := guard( ( ccpvaluecumulant / ccpvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ ccpcellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := ccpvalueproportion );
+ ccproduction.FinancialWeeklyCell( relinsert, ccpcellproportion );
+
+ totalsvalueproportion := guard( ( totalsvaluecumulant / totalsvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ totalscellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := totalsvalueproportion );
+ totalsales.FinancialWeeklyCell( relinsert, totalscellproportion );
+
+ dlsvalueproportion := guard( ( dlsvaluecumulant / dlsvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ dlscellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := dlsvalueproportion );
+ dlsales.FinancialWeeklyCell( relinsert, dlscellproportion );
+
+ ccsvalueproportion := guard( ( ccsvaluecumulant / ccsvaluesum ).Format( 'N(Dec(2))' ), '0.00' );
+ ccscellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := ccsvalueproportion );
+ ccsales.FinancialWeeklyCell( relinsert, ccscellproportion );
+
+ info( sumcolumn.FinancialWeeklyCell( relsize ), cumulantcolumn.FinancialWeeklyCell( relsize ), proportioncolumn.FinancialWeeklyCell( relsize ) );
+ *]
+}
diff --git a/_Main/BL/Type_FinancialWeeklyReport/_ROOT_Type_FinancialWeeklyReport.qbl b/_Main/BL/Type_FinancialWeeklyReport/_ROOT_Type_FinancialWeeklyReport.qbl
new file mode 100644
index 0000000..0d8d278
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyReport/_ROOT_Type_FinancialWeeklyReport.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialWeeklyReport
+{
+ #keys: '5[415136.0.880700223][415136.0.880700221][0.0.0][415136.0.880700222][415136.0.880700224]'
+ BaseType: Object
+ Description: '璐㈠姟鍛ㄦ姤鎶ヨ〃'
+ StructuredName: 'FinancialWeeklyReports'
+}
diff --git a/_Main/BL/Type_FinancialWeeklyRow/Attribute_Name.qbl b/_Main/BL/Type_FinancialWeeklyRow/Attribute_Name.qbl
new file mode 100644
index 0000000..f048b61
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.880700246][415136.0.880700245][415136.0.880700247]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinancialWeeklyRow/Attribute_RowNr.qbl b/_Main/BL/Type_FinancialWeeklyRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..1c9317f
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.880700249][415136.0.880700248][415136.0.880700250]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl b/_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_FinancialWeeklyRow/_ROOT_Type_FinancialWeeklyRow.qbl b/_Main/BL/Type_FinancialWeeklyRow/_ROOT_Type_FinancialWeeklyRow.qbl
new file mode 100644
index 0000000..e68f59a
--- /dev/null
+++ b/_Main/BL/Type_FinancialWeeklyRow/_ROOT_Type_FinancialWeeklyRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinancialWeeklyRow
+{
+ #keys: '5[415136.0.880700240][415136.0.880700238][0.0.0][415136.0.880700239][415136.0.880700241]'
+ BaseType: Object
+ Description: '璐㈠姟鍛ㄦ姤琛�'
+ StructuredName: 'FinancialWeeklyRows'
+}
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/_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_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/Attribute_TimeUnit.qbl b/_Main/BL/Type_InventorySummaryColumn/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..9090596
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.865101993][415136.0.865101992][415136.0.865101994]'
+ Description: 'day;week;month'
+ ValueType: String
+}
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/Method_GenerateCell.qbl b/_Main/BL/Type_InventorySummaryColumn/Method_GenerateCell.qbl
new file mode 100644
index 0000000..a85f1cd
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryColumn/Method_GenerateCell.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateCell (
+ InventoryPointSelections selections,
+ Strings ccstockingpointids,
+ Strings dlstockingpointids,
+ InventorySummaryReport table,
+ Date start,
+ Date end,
+ String productid,
+ String allunit,
+ String ccunit,
+ String dlunit
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-3-2024 (created)
+ //All
+ alldetails := selectset( selections, Elements.InventoryInterfaceDataDetail, detail, detail.PartNumber() = productid and detail.Date() >= start and detail.Date() <= end );
+ if( alldetails.Size() > 0 ){
+ allrow := table.GetRow( allunit, productid );
+ allvalue := sum( alldetails, Elements, e, e.Quantity() );
+ allrow.SetCellValue( this, allvalue );
+ //闀挎槬
+ ccdetails := selectset( alldetails, Elements, detail, ccstockingpointids.Find( detail.InventoryPointSelection().StockpoingPoint() ) >= 0 );
+ if( ccdetails.Size() > 0 ){
+ ccrow := table.GetRow( ccunit, productid );
+ value := sum( ccdetails, Elements, e, e.Quantity() );
+ ccrow.SetCellValue( this, value );
+ }
+ //澶ц繛
+ dldetails := selectset( alldetails, Elements, detail, dlstockingpointids.Find( detail.InventoryPointSelection().StockpoingPoint() ) >= 0 );
+ if( dldetails.Size() > 0 ){
+ dlrow := table.GetRow( dlunit, productid );
+ value := sum( dldetails, Elements, e, e.Quantity() );
+ dlrow.SetCellValue( this, 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..25d5339
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear (
+ String timeunit,
+ DateTime starttime,
+ DateTime endtime
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ this.InventorySummaryColumn( relflush );
+ this.InventroySummaryRow( relflush );
+
+ this.GenerateColumn( this.InventorySummarySource().MacroPlan(), timeunit, starttime, endtime );
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
new file mode 100644
index 0000000..f2bc208
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+ InventorySummarySearch search,
+ Product_MPs products
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := search.InventorySummarySource().MacroPlan().StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofendyear := startofplanning.StartOfNextYear() - Duration::Days( 1 );
+ //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
+ if( search.StartDate().DateTime() < startofendyear and search.EndDate().DateTime() > startofyear ){
+ table := selectobject( this, InventorySummarySource.InventorySummaryReport, report, not report.IsShow() );
+ allunit := '<All>';
+ //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+ this.Clear( search.Category(), search.StartDate().DateTime(), search.EndDate().DateTime() );
+ //杩囨护鍚庣殑浜у搧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 ) );
+ sumrow.InitializeCell( this );
+ 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, cell.InventorySummaryColumn().TimeUnit() = search.Category() ){
+ column := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
+
+ sumcell := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
+
+ showcell := column.InventorySummaryCell( relnew, EndingInventory := cell.EndingInventory(), MinimumInventory := cell.MinimumInventory(), MaximumInventory := cell.MaximumInventory(), AverageInventory := cell.AverageInventory() );
+ showrow.InventorySummaryCell( relinsert, showcell );
+ sumcell.EndingInventory( sumcell.EndingInventory() + cell.EndingInventory() );
+ sumcell.MinimumInventory( sumcell.MinimumInventory() + cell.MinimumInventory() );
+ sumcell.MaximumInventory( sumcell.MaximumInventory() + cell.MaximumInventory() );
+ sumcell.AverageInventory( sumcell.AverageInventory() + cell.AverageInventory() );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
new file mode 100644
index 0000000..1b7156e
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+Method GenerateColumn (
+ MacroPlan owner,
+ String timeunit,
+ DateTime starttime,
+ DateTime endtime
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-25-2024 (created)
+ startofplanning := owner.StartOfPlanning();
+ startofyear := startofplanning.StartOfYear();
+ startofendyear := startofplanning.StartOfNextYear() - Duration::Days( 1 );
+ //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
+ if( starttime < startofendyear and endtime > startofyear ){
+ if( starttime < startofyear ){
+ starttime := startofyear;
+ }
+ if( endtime > startofendyear ){
+ endtime := startofendyear;
+ }
+ for( start := starttime; start <= endtime; start := start.StartOfNextDay() ){
+ periodtime := start.Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Day() ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
+ }
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Week() ){
+ weekend := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();
+
+ if( periodtime = weekend ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Week() );
+ }
+ }
+ if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Month() ){
+ monthend := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
+
+ if( periodtime = monthend ){
+ this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Month() );
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
new file mode 100644
index 0000000..7fc4aeb
--- /dev/null
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRow (
+ String unit,
+ String product
+) 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 );
+ }
+
+ 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..739a84b
--- /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 'Assembly Plant (France)';
+ *]
+}
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
new file mode 100644
index 0000000..d544c74
--- /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 'Assembly Plant (Spain)';
+ *]
+}
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..2f2dbb5
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
@@ -0,0 +1,135 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+ MacroPlan macroPlan
+) as BinaryValue
+{
+ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁'
+ TextBody:
+ [*
+
+ table := selectobject( macroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //Product
+ productcolumnelement := xmlDOM.CreateElement( "column" );
+ productnameelement := xmlDOM.CreateElement( "name" );
+ producttypeelement := xmlDOM.CreateElement( "type" );
+ productnameelement.TextContent( 'Product' );
+ producttypeelement.TextContent( "String" );
+ productcolumnelement.AppendChild( productnameelement );
+ productcolumnelement.AppendChild( producttypeelement );
+ //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 );
+ //Attribute
+ attricolumnelement := xmlDOM.CreateElement( "column" );
+ attrinameelement := xmlDOM.CreateElement( "name" );
+ attritypeelement := xmlDOM.CreateElement( "type" );
+ attrinameelement.TextContent( 'Attribute' );
+ attritypeelement.TextContent( "String" );
+ attricolumnelement.AppendChild( attrinameelement );
+ attricolumnelement.AppendChild( attritypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ tableElement.AppendChild( unitcolumnelement );
+ tableElement.AppendChild( attricolumnelement );
+ traverse ( table, InventorySummaryColumn, 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, InventorySummaryCell, cell, cell.InventroySummaryRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.InventroySummaryRow();
+ //Product
+ productcellElement1 := xmlDOM.CreateElement( "cell" );
+ productcellElement1.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement1 );
+ productcellElement2 := xmlDOM.CreateElement( "cell" );
+ productcellElement2.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement2 );
+ productcellElement3 := xmlDOM.CreateElement( "cell" );
+ productcellElement3.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement3 );
+ productcellElement4 := xmlDOM.CreateElement( "cell" );
+ productcellElement4.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement4 );
+ //Unit
+ unitcellElement1 := xmlDOM.CreateElement( "cell" );
+ unitcellElement1.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement1 );
+ unitcellElement2 := xmlDOM.CreateElement( "cell" );
+ unitcellElement2.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement2 );
+ unitcellElement3 := xmlDOM.CreateElement( "cell" );
+ unitcellElement3.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement3 );
+ unitcellElement4 := xmlDOM.CreateElement( "cell" );
+ unitcellElement4.SetAttribute( "value", row.Unit() );
+ unitcolumnelement.AppendChild( unitcellElement4 );
+ //Attribute
+ //鏈熸湯搴撳瓨
+ endcellElement := xmlDOM.CreateElement( "cell" );
+ endcellElement.SetAttribute( "value", 'EndingInventory' );
+ attricolumnelement.AppendChild( endcellElement );
+ //鏈�灏忓簱瀛�
+ mincellElement := xmlDOM.CreateElement( "cell" );
+ mincellElement.SetAttribute( "value", 'MinimumInventory' );
+ attricolumnelement.AppendChild( mincellElement );
+ //鏈�澶у簱瀛�
+ maxcellElement := xmlDOM.CreateElement( "cell" );
+ maxcellElement.SetAttribute( "value", 'MaximumInventory' );
+ attricolumnelement.AppendChild( maxcellElement );
+ //骞冲潎搴撳瓨
+ avecellElement := xmlDOM.CreateElement( "cell" );
+ avecellElement.SetAttribute( "value", 'AverageInventory' );
+ attricolumnelement.AppendChild( avecellElement );
+ }
+ //鏈熸湯搴撳瓨
+ endcellElement := xmlDOM.CreateElement( "cell" );
+ endcellElement.SetAttribute( "value", [String]c.EndingInventory() );
+ columnelement.AppendChild( endcellElement );
+ //鏈�灏忓簱瀛�
+ mincellElement := xmlDOM.CreateElement( "cell" );
+ mincellElement.SetAttribute( "value", [String]c.MinimumInventory() );
+ columnelement.AppendChild( mincellElement );
+ //鏈�澶у簱瀛�
+ maxcellElement := xmlDOM.CreateElement( "cell" );
+ maxcellElement.SetAttribute( "value", [String]c.MaximumInventory() );
+ columnelement.AppendChild( maxcellElement );
+ //骞冲潎搴撳瓨
+ avecellElement := xmlDOM.CreateElement( "cell" );
+ avecellElement.SetAttribute( "value", [String]c.AverageInventory() );
+ columnelement.AppendChild( avecellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( InventorySummaryReport::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..455d0bc
--- /dev/null
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -0,0 +1,135 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initialize (
+ MacroPlan owner,
+ InterfaceDataset interface
+)
+{
+ 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, 'All', startofyear, startofnextyear );
+ //info( '-----------------------------------', table.InventorySummaryColumn( relsize ) );
+ //搴撳瓨鏁伴噺涓篈ctual inventories閲岄潰鐨勭偣Planned inventories瀛楁搴撳瓨閲忓姞鎬�
+ 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();
+ // info( '-----------------------------------', unit, product.ID() );
+ weekpispips := construct( ProductInStockingPointInPeriods );
+ monthpispips := construct( ProductInStockingPointInPeriods );
+ nextweek := startofplanning.StartOfNextWeek();
+ nextmonth := startofplanning.StartOfNextMonth();
+
+ unitrow := table.GetRow( unit, product.ID() );
+ allrow := table.GetRow( allunit, product.ID() );
+ pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
+ // info( '-----------------------------------', isnull( allrow ), pispips.Size() );
+ traverse( pispips, Elements, pispip, pispip.Start() = startofplanning ){
+ // info( '-----------------------------------', pispip.Start() );
+ period := pispip.Period_MP();
+ periodtime := period.Start().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ //澶╋紝閫夋嫨鏃ラ绮掑害鏃讹紝鏈熸湯搴撳瓨锛屾渶灏忓簱瀛橈紝鏈�澶у簱瀛樺拰骞冲潎搴撳瓨鐨勬暟鍊间繚鎸佷竴鑷�
+ daycolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
+ info( daycolumn.Name(), daycolumn.Period(), daycolumn.TimeUnit() );
+ unitrow.SetCellValue( daycolumn, pispip.PlannedInventoryLevelEnd() );
+ allrow.SetCellValue( daycolumn, pispip.PlannedInventoryLevelEnd() );
+
+ //鍛紝閫夋嫨鍛ㄦ椂锛屾湡鏈簱瀛樹负姣忎竴鍛ㄦ渶鍚庝竴澶╃殑姹囨�诲簱瀛樹俊鎭紝鏈�灏忓簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�灏忕殑涓�澶╃殑鏁板�硷紝鏈�澶у簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�澶х殑涓�澶╃殑鏁板�硷紝骞冲潎搴撳瓨涓鸿鍛ㄧ殑骞冲潎鍊�
+ if( period.Start() < nextweek ){
+ weekpispips.Add( pispip );
+
+ weekend := nextweek - Duration::Days( 1 );
+ if( period.Start() = weekend ){
+ weekcolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Week() );
+
+ maxinventory := max( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ mininventory := min( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ aveinventory := average( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ unitrow.SetCellValue( weekcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ allrow.SetCellValue( weekcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ }
+ }else{
+ weekpispips.Flush();
+ weekpispips.Add( pispip );
+ nextweek := nextweek.StartOfNextWeek();
+ }
+
+ //鏈堬紝閫夋嫨鏈堟椂锛屾湡鏈簱瀛樹负姣忎竴鏈堟渶鍚庝竴澶╃殑姹囨�诲簱瀛樹俊鎭紝鏈�灏忓簱瀛樹负杩欎竴涓湀搴撳瓨閲忔渶灏忕殑涓�澶╃殑鏁板�硷紝鏈�澶у簱瀛樹负杩欎竴涓湀搴撳瓨閲忔渶澶х殑涓�澶╃殑鏁板�硷紝骞冲潎搴撳瓨涓鸿鏈堢殑骞冲潎鍊�
+ if( period.Start() < nextmonth ){
+ monthpispips.Add( pispip );
+
+ monthend := nextmonth - Duration::Days( 1 );
+ if( period.Start() = monthend ){
+ monthcolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Month() );
+
+ maxinventory := max( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ mininventory := min( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ aveinventory := average( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ unitrow.SetCellValue( monthcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ allrow.SetCellValue( monthcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ }
+ }else{
+ monthpispips.Flush();
+ monthpispips.Add( pispip );
+ nextmonth := nextmonth.StartOfNextMonth();
+ }
+ }
+ }
+ //棣栧厛鍦‥ntities閲岃瘑鍒埗绾nit涓洪暱鏄�/澶ц繛鐨勬墍鏈夊簱瀛樼偣
+ //闀挎槬搴撳瓨鐐�
+ ccsps := construct( Strings );
+ //澶ц繛搴撳瓨鐐�
+ dlsps := construct( Strings );
+ allsps := construct( Strings );
+ traverse( owner, Unit, unit, unit.ID() = ccunit or unit.ID() = dlunit ){
+ if( unit.ID() = ccunit ){
+ ccsps := selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() );
+ }
+ if( unit.ID() = dlunit ){
+ dlsps := selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() );
+ }
+ allsps := allsps.Union( selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() ) );
+ }
+ //鍐嶅湪搴撳瓨鏇存柊鐨勫瓙鐣岄潰搴撳瓨鐐归�夋嫨涓壘鍒拌繖浜涘簱瀛樼偣鎵�鍏宠仈鐨勫凡鍕鹃�夊簱浣�
+ selections := selectset( interface, InventoryPointSelection, selection, allsps.Find( selection.StockpoingPoint() ) >= 0 and selection.IsIncluded() );
+ productids := selectuniquevalues( selections, Elements, selection, selection.ProductID() );
+ //鏈�鍚庡皢杩欎簺搴撲綅涓浂浠跺彿鐨勬暟閲忚繘琛屽姞鎬�
+ traverse( table, InventorySummaryColumn, column, column.Period() < startofplanning.Date() ){
+ traverse( productids, Elements, productid ){
+ if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){//澶�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period(), column.Period(), productid, allunit, ccunit, dlunit );
+ }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){//鍛�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period().StartOfWeek(), column.Period(), productid, allunit, ccunit, dlunit );
+ }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Month() ){//鏈�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period().StartOfMonth(), column.Period(), productid, allunit, ccunit, dlunit );
+ }
+ }
+ }
+
+
+ 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.qbl b/_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
new file mode 100644
index 0000000..4adcb27
--- /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, AverageInventory := 0, EndingInventory := 0, MaximumInventory := 0, MinimumInventory := 0 );
+
+ 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..46259bb
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCell (
+ InventorySummaryReport table
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-28-2024 (created)
+ traverse( table, InventorySummaryColumn, column ){
+ this.Initialize( column, this.Unit() );
+ }
+ *]
+}
diff --git "a/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue\0430.qbl" "b/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue\0430.qbl"
new file mode 100644
index 0000000..20f91c4
--- /dev/null
+++ "b/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue\0430.qbl"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellValue (
+ InventorySummaryColumn column,
+ Real quantity
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, InventorySummaryCell, cell, cell.InventorySummaryColumn() = column );
+
+ cell.AverageInventory( cell.AverageInventory() + quantity );
+ cell.EndingInventory( cell.EndingInventory() + quantity );
+ cell.MaximumInventory( cell.MaximumInventory() + quantity );
+ cell.MinimumInventory( cell.MinimumInventory() + quantity );
+ *]
+}
diff --git a/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue0.qbl b/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue0.qbl
new file mode 100644
index 0000000..7f6b3b2
--- /dev/null
+++ b/_Main/BL/Type_InventroySummaryRow/Method_SetCellValue0.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetCellValue (
+ InventorySummaryColumn column,
+ Real endinginventory,
+ Real minimuminventory,
+ Real maximuminventory,
+ Real averageinventory
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jun-24-2024 (created)
+ cell := selectobject( this, InventorySummaryCell, cell, cell.InventorySummaryColumn() = column );
+
+ cell.AverageInventory( cell.AverageInventory() + averageinventory );
+ cell.EndingInventory( cell.EndingInventory() + endinginventory );
+ cell.MaximumInventory( cell.MaximumInventory() + maximuminventory );
+ cell.MinimumInventory( cell.MinimumInventory() + minimuminventory );
+ *]
+}
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_LocalCell_Default/Attribute_RealValue.qbl b/_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl
new file mode 100644
index 0000000..14538b0
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RealValue
+{
+ #keys: '3[412672.1.5620867][412672.1.5620866][412672.1.5620868]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
new file mode 100644
index 0000000..27c9816
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetCell (
+ String cellKey,
+ NamedValueTree cellIndexTree,
+ LocalCell_Defaults cells,
+ LocalRow row,
+ LocalColumn column
+) as LocalCell_Default
+{
+ TextBody:
+ [*
+ // rislai Jul-8-2024 (created)
+ cellHandle := cellIndexTree.GetHandle( cellKey );
+ cellIndex := guard( cellIndexTree.Root().Child( cellHandle ),null( NamedValue ));
+ cell := null( LocalCell_Default );
+ if( isnull( cell )){
+ cell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
+ cells.Add( cell );
+ cellIndexTree.Root().AddChild( cellHandle,cells.Size() - 1 );
+ }else{
+ cell := cells.Element( cellIndex.GetValueAsNumber() );
+ }
+ return cell;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
new file mode 100644
index 0000000..c7e6f6a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod NewStaticMethod (
+ const constcontent ShiftPlans shiftPlans,
+ RecycleBin owner
+)
+{
+ TextBody:
+ [*
+ // rislai Jul-4-2024 (created)
+ table := owner.LocalTable( relnew,Name := "");
+
+ column1 := table.LocalColumn( relnew,Name := "宸ュ巶" );
+ column2 := table.LocalColumn( relnew,Name := "浜х嚎" );
+
+ column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" );
+ column4 := table.LocalColumn( relnew,Name := "鍔犵彮鏃堕暱" );
+ column5 := table.LocalColumn( relnew,Name := "娆犲伐鏃堕暱" );
+ column6 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" );
+ column7 := table.LocalColumn( relnew,Name := "鍔犵彮璐�" );
+ column8 := table.LocalColumn( relnew,Name := "娆犲伐璐�" );
+ column9 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" );
+
+ unitIDs := selectuniquevalues( shiftPlans,Elements.UnitPeriodTime.Unit,unit,unit.ID() );
+
+ rows := construct( LocalRows );
+ rowIndexTree := NamedValueTree::Create();
+
+ cells := construct( LocalCell_Defaults );
+ cellIndexTree := NamedValueTree::Create();
+
+ traverse( unitIDs,Elements,element ){
+ row := table.LocalRow( relnew,Index := table.GetRowIndexCache() );
+ rowHandle := rowIndexTree.GetHandle( element );
+ rows.Add( row );
+ rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
+ }
+
+ traverse( shiftPlans,Elements,shiftPlan ){
+ rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
+ row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
+
+ gongchangCell := LocalCell_Default::GetCell( rowKey + "宸ュ巶", cellIndexTree, cells, row, column1 );
+ chanxianxCell := LocalCell_Default::GetCell( rowKey + "浜х嚎", cellIndexTree, cells, row, column2 );
+
+ shengchanCell := LocalCell_Default::GetCell( rowKey + "鐢熶骇澶╂暟", cellIndexTree, cells, row, column3 );
+ jiabanCell := LocalCell_Default::GetCell( rowKey + "鍔犵彮鏃堕暱", cellIndexTree, cells, row, column4 );
+ qiangongCell := LocalCell_Default::GetCell( rowKey + "娆犲伐鏃堕暱", cellIndexTree, cells, row, column5 );
+ jiejiariCell := LocalCell_Default::GetCell( rowKey + "鑺傚亣鏃ュ姞鐝椂闀�", cellIndexTree, cells, row, column6 );
+
+ jiabanfeiCell := LocalCell_Default::GetCell( rowKey + "鍔犵彮璐�", cellIndexTree, cells, row, column7 );
+ qiangongfeiCell := LocalCell_Default::GetCell( rowKey + "娆犲伐璐�", cellIndexTree, cells, row, column8 );
+ jiejiarifeiCell := LocalCell_Default::GetCell( rowKey + "鑺傚亣鏃ュ姞鐝垂", cellIndexTree, cells, row, column9 );
+
+ if( shiftPlan.Outcome() <> "" ){
+
+ }else{
+
+ }
+
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl b/_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl
new file mode 100644
index 0000000..695ab4b
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization LocalCell_Default
+{
+ #keys: '2[412672.1.5620864][412672.1.5620859]'
+ Parent: LocalCell
+ StructuredName: 'LocalCell_Defaults'
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
index 4364350..d19420b 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
@@ -3,7 +3,8 @@
StaticMethod AsyncExport (
RecycleBin recycleBin,
const constcontent LocalRows rows,
- const constcontent LocalColumns columns
+ const constcontent LocalColumns columns,
+ const MacroPlan macroPlan
)
{
TextBody:
@@ -17,15 +18,15 @@
flag := true;
traverse( sortColumns,Elements,sortColumn ){
if( flag ){
- attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute" );
+ attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
columnstring := columnstring.Merge( attributeXML )
flag := false;
}
- cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data");
+ cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
columnstring := columnstring.Merge( cellxml);
}
- columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin );
+ columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
*]
}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
index d7d8942..3c0055a 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
@@ -3,13 +3,15 @@
StaticMethod Compared (
RecycleBin recycleBin,
String baseVersionPath,
- String compareVersionPath
+ String compareVersionPath,
+ String baseVersionName,
+ String compareVersionName
) as LocalTable
{
TextBody:
[*
// rislai Jun-20-2024 (created)
- localTable := recycleBin.LocalTable( relnew,Name := baseVersionPath + "__" + compareVersionPath);
+ localTable := recycleBin.LocalTable( relnew,Name := baseVersionName + "__" + compareVersionName );
baseVersionFile := OSFile::Construct();
compareVersionFile := OSFile::Construct();
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
index c766db0..1072935 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
@@ -7,8 +7,6 @@
// rislai Jun-21-2024 (created)
attributeNames := construct( Strings );
- attributeNames.Add( "BaseVersionValue" );
- attributeNames.Add( "CompareVersionValue" );
attributeNames.Add( "BaseVersion" );
attributeNames.Add( "CompareVersion" );
attributeNames.Add( "Gap" );
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
index 308ed41..6d45dc4 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
@@ -4,7 +4,8 @@
const constcontent LocalRows rows,
const LocalColumn column,
const Strings attributeNames,
- String type
+ String type,
+ const MacroPlan macroPlan
) const as String
{
TextBody:
@@ -30,6 +31,11 @@
columnXML := columnXML + "</column>";
}
if( type = "attribute" ){
+ columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
+ columnXML0_2 := "<column><name>Generation</name><type>String</type>";
+ columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
+ columnXML0_4 := "<column><name>鍔熺巼</name><type>String</type>";
+
columnXML1 := "<column><name>Product ID</name><type>String</type>";
columnXML2 := "<column><name>Attribute</name><type>String</type>";
@@ -39,16 +45,51 @@
if( flag ){
cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
columnXML1 := columnXML1 + cellXML;
+
+ salesSegment := select( cell.LocalRow().LocalTable(),LocalColumn.LocalCell.astype( LocalCell_DemandComparison ),temp_cell,temp_cell.LocalRow() = cell.LocalRow() and temp_cell.LocalColumn().Name() = "浜у湴");
+ if( not isnull( salesSegment )){
+ cellXML0_1 := '<cell value="' + ifexpr( salesSegment.BaseVersionValue() <> "绌�",salesSegment.BaseVersionValue(),salesSegment.CompareVersionValue()) + '"/>';
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ }else{
+ cellXML0_1 := '<cell value=" "/>'
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ }
+
+ product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
+ if( not isnull( product )){
+ cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
+ cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
+ cellXML0_4 := '<cell value="' + product.Power() + '"/>';
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
+ }else{
+ cellXML0_2 := '<cell value=" "/>';
+ cellXML0_3 := '<cell value=" "/>';
+ cellXML0_4 := '<cell value=" "/>';
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
+ }
+
flag := false;
}else{
cellXML := '<cell value=" "/>'
columnXML1 := columnXML1 + cellXML;
+ cellXML0_1 := '<cell value=" "/>'
+ cellXML0_2 := '<cell value=" "/>';
+ cellXML0_3 := '<cell value=" "/>';
+ cellXML0_4 := '<cell value=" "/>';
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
}
cellXML := '<cell value="' + e + '"/>'
columnXML2 := columnXML2 + cellXML;
}
}
- columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
+ columnXML := columnXML0_1 + "</column>" + columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" + columnXML1 + "</column>" + columnXML2 + "</column>";
}
return columnXML;
diff --git a/_Main/BL/Type_LocalColumn/Attribute_Date.qbl b/_Main/BL/Type_LocalColumn/Attribute_Date.qbl
new file mode 100644
index 0000000..9b0c643
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+ #keys: '3[412672.0.1120948156][412672.0.1120948155][412672.0.1120948157]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl
new file mode 100644
index 0000000..2e99838
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcDate
+{
+ TextBody:
+ [*
+ // rislai Jun-28-2024 (created)
+ if( not this.IsAttrbuteColumn() ){
+ names := this.Name().Tokenize( "/" );
+ this.Date( guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() ));
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl b/_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl
new file mode 100644
index 0000000..59d8880
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StandardWorkingDay
+{
+ #keys: '3[412672.1.2880078][412672.1.2880077][412672.1.2880079]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl b/_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl
new file mode 100644
index 0000000..d75b63e
--- /dev/null
+++ b/_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Multiplier
+{
+ #keys: '3[412672.1.2880116][412672.1.2880115][412672.1.2880117]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl b/_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl
new file mode 100644
index 0000000..be45e57
--- /dev/null
+++ b/_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.1.2880106][412672.1.2880105][412672.1.2880107]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl b/_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl
new file mode 100644
index 0000000..613e4bb
--- /dev/null
+++ b/_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type OvertimeMultiplier
+{
+ #keys: '5[412672.1.2880089][412672.1.2880087][0.0.0][412672.1.2880088][412672.1.2880090]'
+ BaseType: Object
+ Description: 'OvertimeMultiplier'
+ StructuredName: 'OvertimeMultipliers'
+}
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_Test/StaticMethod_Test.qbl b/_Main/BL/Type_Test/StaticMethod_Test.qbl
index 9d0c69d..cc86dfc 100644
--- a/_Main/BL/Type_Test/StaticMethod_Test.qbl
+++ b/_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -9,25 +9,8 @@
{
TextBody:
[*
- // rislai Jun-9-2024 (created)
- archive.ArchivePR( relnew,Name := "PR72.SP_20240604_VWED.xlsx",FilePath := "C:\Excel\PR72.SP_20240604_VWED.xlsx");
-
- archive.ArchivePR( relnew,Name := "PR72.SP_20240605_VWED.xlsx",FilePath := "C:\Excel\PR72.SP_20240605_VWED.xlsx");
-
-
- //testTree := NamedValueTree::Create();
- //
- //testTreeHandel := testTree.GetHandle( "test1" );
- //testTreeHandel2 := testTree.GetHandle( "test2" );
- //
- //testTree.Root().AddChild( testTreeHandel,1 );
- //
- //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
- //try{
- // info( testTree.Root().Child( testTreeHandel2 ).GetValueAsNumber() );
- //}onerror{
- // testTree.Root().AddChild( testTreeHandel,2 );
- //}
- //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
+ name := "2020/04/01";
+ names := name.Tokenize( "/" );
+ info( guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() ));
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
index 645df5f..a8a3635 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
@@ -10,5 +10,12 @@
#child: ContextMenuCapacities
]
}
+ Component ButtonDataFinances #extension
+ {
+ Children:
+ [
+ #child: ContextMenuFinances
+ ]
+ }
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 10df23f..ab55c75 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -16,6 +16,39 @@
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
+ ]
+ }
+ Component ButtonFinancialWeeklyReport
+ {
+ #keys: '[415136.0.882254645]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_DIRTY'
+ Label: 'Financial weekly report'
+ Taborder: 3
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def
new file mode 100644
index 0000000..bcde51c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ContextMenuFinances #extension
+{
+ Children:
+ [
+ Component MenuLaborCost
+ {
+ #keys: '[412672.1.7721142]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'MONEY_BILL_FIRE'
+ Taborder: 6
+ Title: 'Labor cost'
+ ]
+ }
+ ]
+}
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_ButtonFinancialWeeklyReport_OnCli.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialWeeklyReport_OnCli.def
new file mode 100644
index 0000000..980aac3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialWeeklyReport_OnCli.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonFinancialWeeklyReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialWeeklyReport_OnClick
+{
+ #keys: '[415136.0.882254805]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Financial_weekly_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_ContextMenuFinances_MenuLaborCost_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def
new file mode 100644
index 0000000..f7b67bb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ContextMenuFinances/MenuLaborCost
+Response OnClick () id:Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick
+{
+ #keys: '[412672.1.7721201]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ // Open view
+ ApplicationMacroPlanner.OpenView( 'Labor_Costs', ButtonDataFinances );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def
new file mode 100644
index 0000000..2b90952
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+ #keys: '[412672.1.7045777]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component btnOk
+ {
+ #keys: '[412672.1.7045781]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'OK'
+ Taborder: 0
+ ]
+ }
+ Component btnCancel
+ {
+ #keys: '[412672.1.7045783]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Cancel'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ Border: true
+ ExcludeFromActiveComponent: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Padding: 'true'
+ Style: 'footer'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def
new file mode 100644
index 0000000..6efd64a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def
@@ -0,0 +1,121 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+ #keys: '[412672.1.7045775]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component dhEmployeeCost
+ {
+ #keys: '[412672.1.7045839]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[EmployeeCost]*'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component ddlEmployeeType
+ {
+ #keys: '[412672.1.6911529]'
+ BaseType: 'WebDropDownList'
+ Databinding: 'EmployeeType'
+ Children:
+ [
+ Component deContent
+ {
+ #keys: '[412672.1.6911531]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'EmployeeType'
+ ]
+ }
+ ]
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.EmployeeType'
+ DisplayField: 'Name'
+ Label: '浜哄憳绫诲瀷'
+ Taborder: 1
+ ]
+ }
+ Component npEmployeeNumber
+ {
+ #keys: '[412672.1.6911553]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.EmployeeNumber'
+ Label: '浜烘暟'
+ Taborder: 2
+ ]
+ }
+ Component dsStartDate
+ {
+ #keys: '[412672.1.6911583]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.StartDate'
+ Label: '寮�濮嬫椂闂�'
+ Taborder: 5
+ ]
+ }
+ Component efStandardWorkingDay
+ {
+ #keys: '[412672.1.7276727]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'MacroPlan.StandardWorkingDay'
+ Enabled: false
+ Label: '鏍囧噯宸ヤ綔澶╂暟'
+ Taborder: 7
+ ]
+ }
+ Component efTimeUnit
+ {
+ #keys: '[412672.1.7276817]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.TimeUnit'
+ Enabled: false
+ Label: '鏍囧噯鏃堕棿鍗曞厓'
+ Taborder: 6
+ Text: '鏈�'
+ ]
+ }
+ Component npBaseSalary
+ {
+ #keys: '[412672.1.7343332]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.BaseSalary'
+ Label: '鍩烘湰宸ヨ祫'
+ Taborder: 8
+ ]
+ }
+ #child: pnlUnit
+ Component lblUnit
+ {
+ #keys: '[412672.1.7796497]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ DataBinding: 'ddlUnit.Data.ID'
+ Taborder: 4
+ ]
+ }
+ ]
+ Properties:
+ [
+ Padding: 'true'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def
new file mode 100644
index 0000000..7078ef4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component pnlUnit
+{
+ #keys: '[412672.1.7514476]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddlUnit id:ddlUnit_608
+ {
+ #keys: '[412672.1.7514540]'
+ BaseType: 'WebDropDownList'
+ Databinding: 'Unit'
+ Children:
+ [
+ Component deContent655 id:deContent655_364
+ {
+ #keys: '[412672.1.7514541]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Entity]'
+ Source: 'ApplicationMacroPlanner.DataHolderEntities'
+ Taborder: 0
+ Transformation: 'Elements.astype(Unit)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ DataBinding: 'dhEmployeeCost.Data.Unit'
+ DisplayField: 'ID'
+ Enabled: false
+ Label: '浜х嚎'
+ Taborder: 0
+ ]
+ }
+ Component Button671 id:Button671_325
+ {
+ #keys: '[412672.1.7514568]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'LOCK'
+ Taborder: 1
+ ]
+ }
+ Component cbUnit
+ {
+ #keys: '[412672.1.7578755]'
+ BaseType: 'WebCheckbox'
+ Properties:
+ [
+ Taborder: 2
+ Visible: false
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def
new file mode 100644
index 0000000..ea59274
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+ EmployeeCost data
+) id:Method_DialogEditEmployeeCost_Edit
+{
+ #keys: '[412672.1.7420837]'
+ Body:
+ [*
+ dhEmployeeCost.Data( shadow(data));
+
+ ApplicationMacroPlanner.ShowFormModal( this );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def
new file mode 100644
index 0000000..7d2d977
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method New () id:Method_DialogEditEmployeeCost_New
+{
+ #keys: '[412672.1.7277241]'
+ Body:
+ [*
+ ddlEmployeeType.Enabled( false,"" );
+ npEmployeeNumber.Enabled( false,"" );
+ dsStartDate.Enabled( false,"" );
+ npBaseSalary.Enabled( false,"" );
+
+ ddlUnit.Enabled( true,"" );
+ cbUnit.Checked( true );
+
+ ApplicationMacroPlanner.ShowFormModal( this );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..06d3ffd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+ #keys: '[412672.1.7045787]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..ecf51c3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+ #keys: '[412672.1.7045786]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.ApplyChanges();
+ dhEmployeeCost.Data().Commit();
+ Form.Close();
+ *]
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick\043570.def" "b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick\043570.def"
new file mode 100644
index 0000000..19806d3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick\043570.def"
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: pnlUnit/Button671_325
+Response OnClick () id:Response_PanelStandardWorkingDay_Button671_OnClick_570
+{
+ #keys: '[412672.1.7514567]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ Precondition:
+ [*
+ return cbUnit.Checked();
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ this.Image( "LOCK" );
+ ddlEmployeeType.Enabled( true,"" );
+ npEmployeeNumber.Enabled( true,"" );
+ dsStartDate.Enabled( true,"" );
+ npBaseSalary.Enabled( true,"" );
+
+ ddlUnit.Enabled( false,"" );
+ cbUnit.Checked( false );
+
+ unit := ddlUnit.Data();
+ dhEmployeeCost.Data( unit.EmployeeCost( relshadow ));
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def
new file mode 100644
index 0000000..407d633
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogEditEmployeeCost
+{
+ #keys: '[412672.1.7045773]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pnlContent
+ #child: pnlActions
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ EnterButton: 'btnOk'
+ EscapeButton: 'btnCancel'
+ ExcludeFromActiveComponent: true
+ Padding: 'false'
+ Title: 'Edit'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
index e22590b..df39242 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
@@ -26,7 +26,7 @@
]
Properties:
[
- Attributes: 'BaseVersionValue;CompareVersionValue;BaseVersion;CompareVersion;Gap'
+ Attributes: 'BaseVersion;CompareVersion;Gap'
Column: 'LocalColumn'
Row: 'LocalRow'
Taborder: 0
@@ -45,6 +45,8 @@
Properties:
[
DataType: 'LocalTable'
+ FilterArguments: 'checkedProduct:QMacroPlanner::FormDemandComparison.dhFinelProduct'
+ FixedFilter: 'exists( checkedProduct,Elements,product,product.ID() = object.Name() )'
Source: 'dhComparisonData'
Taborder: 0
Transformation: 'LocalRow'
@@ -71,6 +73,8 @@
Properties:
[
DataType: 'LocalTable'
+ FilterArguments: 'startDate:QMacroPlanner::FormDemandComparison.dhStartDate;endDate:QMacroPlanner::FormDemandComparison.dhEndDate'
+ FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date()'
Source: 'dhComparisonData'
Taborder: 0
Transformation: 'LocalColumn'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
index c3618ae..e6b3648 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
@@ -16,6 +16,66 @@
Taborder: 1
]
}
+ Component dhCheckedProduct
+ {
+ #keys: '[412672.0.1121211408]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Children:
+ [
+ Component deCheckedProduct
+ {
+ #keys: '[412672.0.1121633584]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Product_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedProduct'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
+ Component dhFinelProduct
+ {
+ #keys: '[412672.0.1121876690]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component dhCheckedSalesSegment
+ {
+ #keys: '[412672.0.1122338152]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[SalesSegment_MP]*'
+ Children:
+ [
+ Component deCheckedSalesSegment
+ {
+ #keys: '[412672.0.1122072068]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[SalesSegment_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedSalesSegment'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 4
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
index b962093..d5ae537 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
@@ -7,6 +7,7 @@
[
#child: PanelSelection
#child: PanelOperation_568
+ #child: PanelFilter
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def
new file mode 100644
index 0000000..939065e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def
@@ -0,0 +1,96 @@
+Quintiq file version 2.0
+Component PanelFilter
+{
+ #keys: '[412672.0.1119852113]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[412672.0.1119852174]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ Component ddslMQBMLB
+ {
+ #keys: '[412672.0.1119852186]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 1
+ ]
+ }
+ Component ddslPower
+ {
+ #keys: '[412672.0.1119852198]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: '鍔熺巼'
+ Taborder: 2
+ ]
+ }
+ Component dsStartDate
+ {
+ #keys: '[412672.0.1119852248]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start Date'
+ Taborder: 3
+ ]
+ }
+ Component dsEndDate
+ {
+ #keys: '[412672.0.1119852261]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Date: 9999-12-31
+ Label: 'End Date'
+ Taborder: 5
+ ]
+ }
+ Component ButtonFilter
+ {
+ #keys: '[412672.0.1121729150]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '杩囨护'
+ Taborder: 7
+ ]
+ }
+ Component dhStartDate
+ {
+ #keys: '[412672.0.1122339350]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 4
+ ]
+ }
+ Component dhEndDate
+ {
+ #keys: '[412672.0.1122339363]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 6
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation\043568.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation\043568.def"
index cfb9153..f54864f 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation\043568.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation\043568.def"
@@ -12,47 +12,7 @@
Properties:
[
Label: '寮�濮嬪姣�'
- Taborder: 4
- ]
- }
- Component efBaseVersion
- {
- #keys: '[412672.0.1111643258]'
- BaseType: 'WebEditField'
- Properties:
- [
- Label: '鍩哄噯闇�姹傜増鏈細'
- Taborder: 0
- ]
- }
- Component efCompareVersion
- {
- #keys: '[412672.0.1111643271]'
- BaseType: 'WebEditField'
- Properties:
- [
- Label: '瀵规瘮闇�姹傜増鏈細'
- Taborder: 2
- ]
- }
- Component dhCompareVersionPath
- {
- #keys: '[412672.0.1111643374]'
- BaseType: 'WebDataHolder'
- Databinding: 'String*'
- Properties:
- [
Taborder: 3
- ]
- }
- Component dhBaseVersionPath
- {
- #keys: '[412672.0.1111643396]'
- BaseType: 'WebDataHolder'
- Databinding: 'String*'
- Properties:
- [
- Taborder: 1
]
}
Component dhXMLDataListener id:dhXMLDataListener_906
@@ -78,7 +38,7 @@
]
Properties:
[
- Taborder: 7
+ Taborder: 2
]
}
Component bExport id:bExport_98
@@ -89,7 +49,7 @@
[
Image: 'EXPORT1'
Label: '瀵煎嚭'
- Taborder: 5
+ Taborder: 0
]
}
Component bDownload id:bDownload_352
@@ -100,13 +60,14 @@
[
Image: 'DOWNLOAD'
Label: '涓嬭浇'
- Taborder: 6
+ Taborder: 1
]
}
+ #child: pVersionInfomation
]
Properties:
[
Orientation: 'horizontal'
- Taborder: 1
+ Taborder: 2
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pVersionInfomation.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pVersionInfomation.def
new file mode 100644
index 0000000..9d0dfe9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pVersionInfomation.def
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+Component pVersionInfomation
+{
+ #keys: '[412672.0.1119852729]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component dhBaseVersionPath id:dhBaseVersionPath_640
+ {
+ #keys: '[412672.0.1119852775]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'String*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component dhCompareVersionPath id:dhCompareVersionPath_582
+ {
+ #keys: '[412672.0.1119852802]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'String*'
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
+ Component lBaseVersionName
+ {
+ #keys: '[412672.0.1119853064]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ Label: '鍩哄噯闇�姹傜増鏈細'
+ Taborder: 0
+ ]
+ }
+ Component lCompareVersionName
+ {
+ #keys: '[412672.0.1119853066]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ Label: '瀵规瘮闇�姹傜増鏈細'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def
new file mode 100644
index 0000000..038f6f7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison/dhCheckedProduct
+Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged
+{
+ #keys: '[412672.0.1122118230]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ dhFinelProduct.Data( this.Data().Copy() );
+ }else{
+ dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def
new file mode 100644
index 0000000..1500156
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison/dhCheckedSalesSegment
+Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged
+{
+ #keys: '[412672.0.1122600939]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ prods := selectset( dhFinelProduct.Data(),Elements,element,exists( this.Data(),Elements.SalesDemand.Product_MP,prod,element = prod ));
+ dhFinelProduct.Data( &prods );
+ }else{
+ dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhFinelProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhFinelProduct_OnCreated.def
new file mode 100644
index 0000000..306233c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhFinelProduct_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison/dhFinelProduct
+Response OnCreated () id:Response_PanelDemandComparison_dhFinelProduct_OnCreated
+{
+ #keys: '[412672.0.1122081581]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( DataHolderProduct.Data().Copy() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def
new file mode 100644
index 0000000..f0b4966
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelFilter/ButtonFilter
+Response OnClick () id:Response_PanelFilter_ButtonFilter_OnClick
+{
+ #keys: '[412672.0.1121729757]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ products := dhCheckedProduct.Data().Copy();
+ if( ddslGeneration.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.Generation() <> ddslGeneration.Text());
+ }
+ if( ddslMQBMLB.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.MQBMLB() <> ddslMQBMLB.Text());
+ }
+ if( ddslPower.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.Power() <> ddslPower.Text());
+ }
+ dhFinelProduct.Data( &products );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..e5c27fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslGeneration_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter/ddslGeneration
+Response OnCreated () id:Response_PanelFilter_ddslGeneration_OnCreated
+{
+ #keys: '[412672.0.1121755350]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Generation() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..209a4ce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter/ddslMQBMLB
+Response OnCreated () id:Response_PanelFilter_ddslMQBMLB_OnCreated
+{
+ #keys: '[412672.0.1121815924]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.MQBMLB() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslPower_OnCreated.def
new file mode 100644
index 0000000..e419a94
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslPower_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter/ddslPower
+Response OnCreated () id:Response_PanelFilter_ddslPower_OnCreated
+{
+ #keys: '[412672.0.1121816007]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Power() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhEndDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhEndDate_OnCreated.def
new file mode 100644
index 0000000..23bc52c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhEndDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter/dhEndDate
+Response OnCreated () id:Response_PanelFilter_dhEndDate_OnCreated
+{
+ #keys: '[412672.0.1122841072]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MaxDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhStartDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhStartDate_OnCreated.def
new file mode 100644
index 0000000..d80fb7d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhStartDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter/dhStartDate
+Response OnCreated () id:Response_PanelFilter_dhStartDate_OnCreated
+{
+ #keys: '[412672.0.1122841156]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MinDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsEndDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsEndDate_OnChanged.def
new file mode 100644
index 0000000..0f579a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsEndDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter/dsEndDate
+Response OnChanged () id:Response_PanelFilter_dsEndDate_OnChanged
+{
+ #keys: '[412672.0.1122665296]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhEndDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsStartDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsStartDate_OnChanged.def
new file mode 100644
index 0000000..eaa6855
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsStartDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter/dsStartDate
+Response OnChanged () id:Response_PanelFilter_dsStartDate_OnChanged
+{
+ #keys: '[412672.0.1122665180]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhStartDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def
index e372ac2..76c486e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def
@@ -10,7 +10,7 @@
Body:
[*
- table := LocalCell_DemandComparison::Compared( RecycleBin,dhBaseVersionPath.Data(),dhCompareVersionPath.Data() );
+ table := LocalCell_DemandComparison::Compared( RecycleBin,dhBaseVersionPath.Data(),dhCompareVersionPath.Data(),lBaseVersionName.Text(),lCompareVersionName.Text() );
dhComparisonData.Data( table );
*]
GroupServerCalls: false
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
index 585ba3c..7d10d9a 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
@@ -9,9 +9,9 @@
{
Body:
[*
- rows := selectset( dhComparisonData.Data(),LocalRow,row,true );
- columns := selectset( dhComparisonData.Data( ),LocalColumn,column,true );
- LocalCell_DemandComparison::AsyncExport( RecycleBin, rows, columns );
+ rows := selectset( dhComparisonData.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,product,product.ID() = row.Name() ) );
+ columns := selectset( dhComparisonData.Data( ),LocalColumn,column,not column.IsAttrbuteColumn() and dhStartDate.Data() <= column.Date() and dhEndDate.Data() > column.Date() );
+ LocalCell_DemandComparison::AsyncExport( RecycleBin, rows, columns ,MacroPlan );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def
index 8cfbed8..69e9ffc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def
index 2a0e750..7c66484 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def
index a220cc2..7023788 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def
index a427350..15c0069 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def
index 5500771..0f02dcb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def
index d5d74b3..e073306 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def
index 3962e2c..16667cd 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def
index eb49f2b..edd14ce 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def
index ffcbefc..5c17713 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def
index d46fc20..8055aaf 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged\04398.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged\04398.def"
index e477b8f..5a1fb6f 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged\04398.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged\04398.def"
@@ -14,7 +14,7 @@
[*
dhBaseVersionPR.Data( selection );
this.Tooltip( selection.Name() );
- efBaseVersion.Text( selection.Name() );
+ lBaseVersionName.Text( selection.Name() );
dhBaseVersionPath.Data( selection.FilePath() );
*]
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged\043599.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged\043599.def"
index 10a3e31..d5fe96a 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged\043599.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged\043599.def"
@@ -14,7 +14,7 @@
[*
this.Tooltip( selection.Name() );
- efCompareVersion.Text( selection.Name() );
+ lCompareVersionName.Text( selection.Name() );
dhCompareVersionPath.Data( selection.FilePath() );
*]
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost\043289.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost\043289.def"
new file mode 100644
index 0000000..365f711
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost\043289.def"
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListEmployeeCost
+{
+ #keys: '[412672.1.3030900]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractor422
+ {
+ #keys: '[412672.1.3030901]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Entity]'
+ Source: 'ApplicationMacroPlanner.DataHolderEntities'
+ Taborder: 0
+ Transformation: 'Elements.astype(Unit).EmployeeCost'
+ ]
+ }
+ #child: listActionBarPage216
+ Component DataSetLevel775
+ {
+ #keys: '[412672.1.3030906]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenu383
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EmployeeType.Name","title":"浜哄憳绫诲埆","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EmployeeType.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EmployeeNumber","title":"浜烘暟","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EmployeeNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit.Name","title":"浜х嚎","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Unit.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TimeUnit","title":"鏃堕棿鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"TimeUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BaseSalary","title":"鍩烘湰宸ヨ祫","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BaseSalary"}}]'
+ ContextMenu: 'listContextMenu383'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_ListEmployeeCost_WebMenu_OnClick
+ {
+ #keys: '[412672.1.5813308]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[33.0.20370560]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def
new file mode 100644
index 0000000..ada4b10
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListEmployeeType
+{
+ #keys: '[412672.1.3032264]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractor670
+ {
+ #keys: '[412672.1.3032265]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'external[MacroPlan]'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'EmployeeType'
+ ]
+ }
+ #child: listActionBarPage989
+ Component DataSetLevel963
+ {
+ #keys: '[412672.1.3032270]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenu191
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"浜哄憳绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
+ ContextMenu: 'listContextMenu191'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_ListEmployeeType_WebMenu_OnClick
+ {
+ #keys: '[412672.1.6984546]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[33.0.12092751]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def
new file mode 100644
index 0000000..d62d6a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListOvertimeMultiplier
+{
+ #keys: '[412672.1.3031897]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractor427
+ {
+ #keys: '[412672.1.3031898]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'OvertimeMultiplier'
+ ]
+ }
+ #child: listActionBarPage392
+ Component DataSetLevel613
+ {
+ #keys: '[412672.1.3031903]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenu134
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Multiplier","title":"鍊嶇巼","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Multiplier"}}]'
+ ContextMenu: 'listContextMenu134'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
+ {
+ #keys: '[412672.1.3001707]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[29.0.12954279]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def
new file mode 100644
index 0000000..2a61687
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component Panel189
+{
+ #keys: '[412672.1.3030708]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelEmployeeCost
+ #child: Panel972
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def
new file mode 100644
index 0000000..5766ca0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component Panel700
+{
+ #keys: '[412672.1.3030760]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelEmployeeType
+ #child: PanelOvertimeMultiplier
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def
new file mode 100644
index 0000000..19e5ecb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component Panel972
+{
+ #keys: '[412672.1.3030746]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: Panel700
+ #child: PanelStandardWorkingDay
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def
new file mode 100644
index 0000000..c4587fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+Component PanelAction
+{
+ #keys: '[412672.1.5890812]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonImport
+ {
+ #keys: '[412672.1.5890863]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Taborder: 0
+ ]
+ }
+ Component ButtonExport1
+ {
+ #keys: '[412672.1.5890876]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def
new file mode 100644
index 0000000..a47b227
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelActions
+{
+ #keys: '[412672.1.3091200]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonOK id:ButtonOK_780
+ {
+ #keys: '[412672.1.3091238]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'CHECK2'
+ Taborder: 0
+ ]
+ }
+ Component ButtonCalcel
+ {
+ #keys: '[412672.1.3091262]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def
new file mode 100644
index 0000000..7578258
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component PanelActions526
+{
+ #keys: '[412672.1.6984289]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonOK338
+ {
+ #keys: '[412672.1.6984290]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'CHECK2'
+ Taborder: 0
+ ]
+ }
+ Component ButtonCalcel267
+ {
+ #keys: '[412672.1.6984291]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def
new file mode 100644
index 0000000..03a43fd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelEditEmployeeType
+{
+ #keys: '[412672.1.6984140]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component EditFieldEditEmployeeType
+ {
+ #keys: '[412672.1.6984180]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'dhEditEmployeeType.Data.Name'
+ Label: '浜哄憳绫诲瀷'
+ Taborder: 0
+ ]
+ }
+ #child: PanelActions526
+ Component dhEditEmployeeType
+ {
+ #keys: '[412672.1.6984295]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[EmployeeType]*'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 0
+ Visible: false
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def
new file mode 100644
index 0000000..93087e3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+Component PanelEditOvertimeMultiplier
+{
+ #keys: '[412672.1.3001087]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component EditFieldEditOvertimeMultiplier
+ {
+ #keys: '[412672.1.3001163]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'dhEditOvertimeMultiplier.Data.Name'
+ Label: '鍚嶇О'
+ Taborder: 0
+ ]
+ }
+ Component NumberPickerEditOvertimeMultiplier
+ {
+ #keys: '[412672.1.3001177]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'dhEditOvertimeMultiplier.Data.Multiplier'
+ Label: '鍊嶇巼'
+ Taborder: 1
+ ]
+ }
+ Component dhEditOvertimeMultiplier
+ {
+ #keys: '[412672.1.3001190]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[OvertimeMultiplier]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ #child: PanelActions
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 0
+ Visible: false
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost\043154.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost\043154.def"
new file mode 100644
index 0000000..9049624
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost\043154.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelEmployeeCost
+{
+ #keys: '[412672.1.3030727]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: ListEmployeeCost
+ #child: PanelAction
+ ]
+ Properties:
+ [
+ Taborder: 0
+ Title: '浜哄憳鎴愭湰'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def
new file mode 100644
index 0000000..7062b6b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelEmployeeType
+{
+ #keys: '[412672.1.3030869]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: ListEmployeeType
+ #child: PanelEditEmployeeType
+ ]
+ Properties:
+ [
+ Taborder: 1
+ Title: '浜哄憳绫诲瀷'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def
new file mode 100644
index 0000000..92ff091
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelOvertimeMultiplier
+{
+ #keys: '[412672.1.3030850]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: ListOvertimeMultiplier
+ #child: PanelEditOvertimeMultiplier
+ ]
+ Properties:
+ [
+ Taborder: 0
+ Title: '鍔犵彮鍊嶇巼'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay\043687.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay\043687.def"
new file mode 100644
index 0000000..2579c92
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay\043687.def"
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelStandardWorkingDay
+{
+ #keys: '[412672.1.3030780]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component NumberPicker287
+ {
+ #keys: '[412672.1.3032925]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ DataBinding: 'MacroPlan.StandardWorkingDay'
+ Enabled: false
+ Label: '鏍囧噯宸ヤ綔澶╂暟'
+ Taborder: 0
+ ]
+ }
+ Component Button671
+ {
+ #keys: '[412672.1.3032980]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'LOCK'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 1
+ Title: '鏍囧噯宸ヤ綔澶╂暟'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def
new file mode 100644
index 0000000..c2e4e9e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage216
+{
+ #keys: '[412672.1.3030903]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def
new file mode 100644
index 0000000..92a7603
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage392
+{
+ #keys: '[412672.1.3031900]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def
new file mode 100644
index 0000000..41a39cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage989
+{
+ #keys: '[412672.1.3032267]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def
new file mode 100644
index 0000000..f4dabca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component listContextMenu134
+{
+ #keys: '[412672.1.3031905]'
+ BaseType: 'listContextMenu'
+ Children:
+ [
+ Component MenuCreate
+ {
+ #keys: '[412672.1.3001739]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'ADD2'
+ Taborder: 3
+ Title: 'Create...'
+ ]
+ }
+ Component MenuEdit
+ {
+ #keys: '[412672.1.3001760]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'PENCIL'
+ Taborder: 4
+ Title: 'Edit...'
+ ]
+ }
+ Component MenuDelete
+ {
+ #keys: '[412672.1.3001781]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 5
+ Title: 'Delete...'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def
new file mode 100644
index 0000000..7089752
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component listContextMenu191
+{
+ #keys: '[412672.1.3032272]'
+ BaseType: 'listContextMenu'
+ Children:
+ [
+ Component MenuCreate583
+ {
+ #keys: '[412672.1.6984223]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'ADD2'
+ Taborder: 3
+ Title: 'Create...'
+ ]
+ }
+ Component MenuEdit782
+ {
+ #keys: '[412672.1.6984249]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'PENCIL'
+ Taborder: 4
+ Title: 'Edit...'
+ ]
+ }
+ Component MenuDelete195
+ {
+ #keys: '[412672.1.6984266]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 5
+ Title: 'Delete...'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def
new file mode 100644
index 0000000..7be6098
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component listContextMenu383
+{
+ #keys: '[412672.1.3030908]'
+ BaseType: 'listContextMenu'
+ Children:
+ [
+ Component MenuDelete300
+ {
+ #keys: '[412672.1.5813289]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 5
+ Title: 'Delete...'
+ ]
+ }
+ Component MenuCreate187
+ {
+ #keys: '[412672.1.7546519]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'ADD2'
+ Taborder: 3
+ Title: 'Create...'
+ ]
+ }
+ Component MenuEdit854
+ {
+ #keys: '[412672.1.7546633]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'PENCIL'
+ Taborder: 4
+ Title: 'Edit...'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def
new file mode 100644
index 0000000..c552df2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListEmployeeCost
+Response OnClick () id:Response_ListEmployeeCost_MenuCreate187_OnClick
+{
+ #keys: '[412672.1.7546539]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuCreate187'
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( DialogEditEmployeeCost );
+ dlg.New();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def
new file mode 100644
index 0000000..3052e54
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListEmployeeCost
+Response OnClick (
+ structured[EmployeeCost] selection
+) id:Response_ListEmployeeCost_MenuDelete300_OnClick
+{
+ #keys: '[412672.1.5802665]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuDelete300'
+ QuillAction
+ {
+ Body:
+ [*
+ traverse( selection,Elements,element ){
+ element.Delete();
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def
new file mode 100644
index 0000000..a7d56c0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListEmployeeCost
+Response OnClick (
+ EmployeeCost selection
+) id:Response_ListEmployeeCost_MenuEdit854_OnClick
+{
+ #keys: '[412672.1.7546659]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuEdit854'
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( DialogEditEmployeeCost );
+ dlg.Edit( selection );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def
new file mode 100644
index 0000000..18a4cd7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListEmployeeCost
+Response OnDoubleClick (
+ EmployeeCost selection
+) id:Response_ListEmployeeCost_OnDoubleClick
+{
+ #keys: '[412672.1.7422359]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( DialogEditEmployeeCost );
+ dlg.Edit( selection );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def
new file mode 100644
index 0000000..5ce7c23
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListEmployeeType
+Response OnClick () id:Response_ListEmployeeType_MenuCreate583_OnClick
+{
+ #keys: '[412672.1.6984709]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuCreate583'
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditEmployeeType.Visible( true );
+ dhEditEmployeeType.Data( MacroPlan.EmployeeType( relshadow ));
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def
new file mode 100644
index 0000000..f28554c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListEmployeeType
+Response OnClick (
+ structured[EmployeeType] selection
+) id:Response_ListEmployeeType_MenuDelete195_OnClick
+{
+ #keys: '[412672.1.6984976]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuDelete195'
+ QuillAction
+ {
+ Body:
+ [*
+ traverse( selection,Elements,element ){
+ element.Delete();
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def
new file mode 100644
index 0000000..5d53dc0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListEmployeeType
+Response OnClick (
+ EmployeeType selection
+) id:Response_ListEmployeeType_MenuEdit782_OnClick
+{
+ #keys: '[412672.1.6984805]'
+ CanBindMultiple: false
+ DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuEdit782'
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditEmployeeType.Visible( true );
+ dhEditEmployeeType.Data( shadow(selection) );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def
new file mode 100644
index 0000000..9324150
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListOvertimeMultiplier
+Response OnClick () id:Response_ListOvertimeMultiplier_MenuCreate_OnClick
+{
+ #keys: '[412672.1.3002215]'
+ CanBindMultiple: false
+ DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuCreate'
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditOvertimeMultiplier.Visible( true );
+
+
+ dhEditOvertimeMultiplier.Data( MacroPlan.OvertimeMultiplier( relshadow ) );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def
new file mode 100644
index 0000000..7426826
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListOvertimeMultiplier
+Response OnClick (
+ structured[OvertimeMultiplier] selection
+) id:Response_ListOvertimeMultiplier_MenuDelete_OnClick
+{
+ #keys: '[412672.1.3001913]'
+ CanBindMultiple: false
+ DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuDelete'
+ QuillAction
+ {
+ Body:
+ [*
+ traverse( selection,Elements,element ){
+ element.Delete();
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def
new file mode 100644
index 0000000..2157065
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListOvertimeMultiplier
+Response OnClick (
+ OvertimeMultiplier selection
+) id:Response_ListOvertimeMultiplier_MenuEdit_OnClick
+{
+ #keys: '[412672.1.3002036]'
+ CanBindMultiple: false
+ DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
+ GroupServerCalls: true
+ Initiator: 'MenuEdit'
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditOvertimeMultiplier.Visible( true );
+ dhEditOvertimeMultiplier.Data( shadow( selection ) );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def
new file mode 100644
index 0000000..11b82ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelAction/ButtonExport1
+Response OnClick () id:Response_PanelAction_ButtonExport1_OnClick
+{
+ #keys: '[412672.1.5850508]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ units := selectset( DataHolderEntities.Data(),Elements.astype( Unit ),unit,true );
+ binaryValue := EmployeeCost::Export( units );
+ Application.Download( "浜哄憳鎴愭湰_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def
new file mode 100644
index 0000000..b33958c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#parent: PanelAction/ButtonImport
+Response OnClick () id:Response_PanelAction_ButtonImport_OnClick
+{
+ #keys: '[412672.1.7045119]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+ Archive::VerifyTheFileName( uploadJson );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+
+ webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
+
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource.ReadStructure();
+
+ selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+
+ EmployeeCost::Import( MacroPlan, selection );
+
+ // 鍚庣画鍒犻櫎
+ generalExcelImportAndExportDataSource.Delete();
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def
new file mode 100644
index 0000000..537b24a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelActions526/ButtonCalcel267
+Response OnClick () id:Response_PanelActions526_ButtonCalcel267_OnClick
+{
+ #keys: '[412672.1.6984287]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditEmployeeType.Visible( false );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def
new file mode 100644
index 0000000..b5fcee3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelActions526/ButtonOK338
+Response OnClick () id:Response_PanelActions526_ButtonOK338_OnClick
+{
+ #keys: '[412672.1.6984288]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( not isnull( dhEditEmployeeType.Data())){
+ Form.ApplyChanges();
+ dhEditEmployeeType.Data().Commit();
+ }
+ PanelEditEmployeeType.Visible( false );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def
new file mode 100644
index 0000000..39c486a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelActions/ButtonCalcel
+Response OnClick () id:Response_PanelActions_ButtonCalcel_OnClick
+{
+ #keys: '[412672.1.3091500]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ PanelEditOvertimeMultiplier.Visible( false );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def
new file mode 100644
index 0000000..98da954
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelActions/ButtonOK_780
+Response OnClick () id:Response_PanelActions_ButtonOK_OnClick
+{
+ #keys: '[412672.1.3091237]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( not isnull( dhEditOvertimeMultiplier.Data())){
+ Form.ApplyChanges();
+ dhEditOvertimeMultiplier.Data().Commit();
+ }
+ PanelEditOvertimeMultiplier.Visible( false );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def
new file mode 100644
index 0000000..c61abf1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: PanelStandardWorkingDay/Button671
+Response OnClick () id:Response_PanelStandardWorkingDay_Button671_OnClick
+{
+ #keys: '[412672.1.3033025]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ NumberPicker287.Enabled( not NumberPicker287.Enabled(),"" );
+ if( not NumberPicker287.Enabled() ){
+ this.Image( "LOCK" );
+ }else{
+ this.Image( "LOCK_OPEN" );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def
new file mode 100644
index 0000000..145c0aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelStandardWorkingDay/NumberPicker287
+Response OnChanged () id:Response_PanelStandardWorkingDay_NumberPicker287_OnChanged
+{
+ #keys: '[412672.1.6920929]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebNumberPicker_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ MacroPlan.StandardWorkingDay( this.Number() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def
new file mode 100644
index 0000000..12b804d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormEmployeeCost
+{
+ #keys: '[412672.1.5334387]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: Panel189
+ ]
+ Properties:
+ [
+ Description: 'EmployeeCosts'
+ Image: 'MONEY_BILL_FIRE'
+ Title: 'Labor Costs'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
index 62f7985..d90dc62 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() and table.IsShow() );
- info( '------------------2----------------', table.IsImport(), 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 13d7fd4..9b9d0c5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
@@ -15,7 +15,7 @@
[*
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 176b03b..3749d2c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
@@ -15,7 +15,7 @@
[*
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_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..68f009c
--- /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..5424b65
--- /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>;" + FinancialSalesReport::GetSalesSegmentCC() + ";" + FinancialSalesReport::GetSalesSegmentDL();
+
+ 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_FormFinancialWeeklyReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..4b02630
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_MatrixEditorTable.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.881011903]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.881011904]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorTable
+ {
+ #keys: '[415136.0.881011905]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'FinancialWeeklyReport.FinancialWeeklyColumn.FinancialWeeklyCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'FinancialWeeklyColumn'
+ Row: 'FinancialWeeklyRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.881011908]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.881011909]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'FinancialWeeklyReport.FinancialWeeklyRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.881011912]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.881011913]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'FinancialWeeklyReport.FinancialWeeklyColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable
+ #child: matrixeditorContextMenuTable
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
new file mode 100644
index 0000000..8d20e9e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component PanelHeader
+{
+ #keys: '[415136.0.881011755]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonExport
+ {
+ #keys: '[415136.0.881011811]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelTable.def
new file mode 100644
index 0000000..410f2fd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.881011874]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..4e80537
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.881011916]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..d8d4084
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.881011919]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
new file mode 100644
index 0000000..3cf4d42
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormFinancialWeeklyReport_OnCreated
+{
+ #keys: '[415136.0.882110991]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ FinancialWeeklyReport::Initialize( MacroPlan );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_ButtonExport_OnClick.def
new file mode 100644
index 0000000..d0c2cab
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_ButtonExport_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelHeader/ButtonExport
+Response OnClick () id:Response_PanelHeader_ButtonExport_OnClick
+{
+ #keys: '[415136.0.882111199]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := FinancialWeeklyReport::Download( MacroPlan );
+
+ Application.Download( FinancialWeeklyReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
new file mode 100644
index 0000000..af4455d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFinancialWeeklyReport
+{
+ #keys: '[415136.0.881011703]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelHeader
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_DIRTY'
+ Title: 'Financial weekly 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..fe8fadd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -0,0 +1,29 @@
+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:
+ [
+ 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..188ac98
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
@@ -0,0 +1,35 @@
+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:
+ [
+ Date: 9999-12-31
+ 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..ca45d5d
--- /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, InterfaceDataset );
+ //}
+ //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_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def
new file mode 100644
index 0000000..cfe85d3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelCategory/RadioButtonGroupUseForPlanning_545
+Response OnCreated () id:Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated
+{
+ #keys: '[415136.0.875614032]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_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..503f315
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -0,0 +1,24 @@
+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( this.Date() < DateSelectorStart.Date() ){
+ this.HintError( 'The end date cannot be less than the start date!' );
+ }else{
+ if( dhSearch.Data().EndDate() <> this.Date() ){
+ dhSearch.Data().EndDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
new file mode 100644
index 0000000..ba04b08
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -0,0 +1,24 @@
+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( this.Date() > DateSelectorEnd.Date() ){
+ this.HintError( 'The start date cannot be later than the end date!' );
+ }else{
+ if( dhSearch.Data().StartDate() <> this.Date() ){
+ dhSearch.Data().StartDate( this.Date() );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_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..81f2cba
--- /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>;" + InventorySummaryReport::GetDefaultCCUnit() + ";" + InventorySummaryReport::GetDefaultDLUnit();
+
+ this.Strings( valueString );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
new file mode 100644
index 0000000..a4cb7ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
+{
+ #keys: '[415136.0.864612087]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
+ if( dhSearch.Data().Unit() <> selection ){
+ dhSearch.Data().Unit( selection );
+ DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
new file mode 100644
index 0000000..18cc120
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventorySummaryReport
+{
+ #keys: '[415136.0.864611956]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component DataHolderTable
+ {
+ #keys: '[415136.0.864612009]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummaryReport'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhSearch
+ {
+ #keys: '[415136.0.864612034]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'InventorySummarySearch'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelInventorySummaryHeader
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECK_EDIT'
+ Title: 'Inventory summary report'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/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/Financial_weekly_report_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Financial_weekly_report_view.vw
new file mode 100644
index 0000000..64db5a0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Financial_weekly_report_view.vw
@@ -0,0 +1,92 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormFinancialWeeklyReport
+ {
+ title: 'QMacroPlanner::FormFinancialWeeklyReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormFinancialWeeklyReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 13
+ }
+ components
+ {
+ FormFinancialWeeklyReport_PanelHeader
+ {
+ sizeRatio: 1
+ }
+ FormFinancialWeeklyReport_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormFinancialWeeklyReport_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 67
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormFinancialWeeklyReport.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: 19
+ image: 'DOCUMENT_DIRTY'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Financial_weekly_report_view'
+ name: 'Financial weekly 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/Labor_Costs.vw b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
new file mode 100644
index 0000000..6bec5b0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ page: ''
+ group: ''
+ index: 0
+ image: 'MONEY_BILL_FIRE'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Labor_Costs'
+ name: 'Labor_Costs'
+ isglobal: false
+ isroot: true
+}
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