lihongji
2024-07-09 916984c1eb182dbdabf8f40007cdc1648bcd460e
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已添加347个文件
已修改35个文件
7620 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesColumn_FinancialSalesCell_FinancialSalesCell_Financia.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesColumn_FinancialSalesColumn_Fina.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesReport_FinancialSalesSource_FinancialSalesSource_Fina.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesCell_FinancialSalesCell_FinancialSa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesRow_FinancialSalesReport_FinancialSalesReport_Financi.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesSource_MacroPlan_MacroPlan_FinancialSalesSource.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialWeeklyColumn_FinancialWeeklyCell_FinancialWeeklyCell_Finan.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyColumn_FinancialWeeklyColumn_F.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialWeeklyReport_FinancialWeeklyRow_FinancialWeeklyRow_Financi.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialWeeklyReport_MacroPlan_MacroPlan_FinancialWeeklyReport.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialWeeklyRow_FinancialWeeklyCell_FinancialWeeklyCell_Financia.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummaryColumn_InventorySummaryCell_InventorySummaryCell_In.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummaryReport_InventorySummaryColumn_InventorySummaryColum.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummaryReport_InventroySummaryRow_InventroySummaryRow_Inve.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummarySource_InventorySummaryReport_InventorySummaryRepor.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummarySource_MacroPlan_MacroPlan_InventorySummarySource.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventroySummaryRow_InventorySummaryCell_InventorySummaryCell_Inven.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeType/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Attribute_SheetName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Method_Export.qbl 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionCell/Attribute_PlanValue.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionCell/Function_CalcPlanValue.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesCell/_ROOT_Type_FinancialSalesCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/Attribute_Period.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesColumn/_ROOT_Type_FinancialSalesColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Attribute_IsImport.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_Clear.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_GenerateColumn.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_IdentifyNullValues.qbl 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_ImportVerification.qbl 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_SyncRows.qbl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultTripLeadingTime.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentAll.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentDL.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCLine.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointCCRent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/StaticMethod_GetStockingPointDLLine.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_cell.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_column.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/_ROOT_XML_FinancialSalesReportXML.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_column.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLObjectBase_table.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/_ROOT_XML_FinancialSalesReportXMLHeaders.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/_ROOT_Type_FinancialSalesReport.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Attribute_DuplicateValueMarker.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Method_Filter.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Method_Initialize.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Method_Initialize0.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/Method_InitializeCell.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesRow/_ROOT_Type_FinancialSalesRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/Attribute_MqbMlb.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/Attribute_Power.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSearch/_ROOT_Type_FinancialSalesSearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_FileBinaryValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_IsImport.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_IsXLSX.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_UploadDateTime.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Attribute_UploadUser.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Method_IsExistFutureMonthData.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Method_ReadStructure.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_DownloadTemplate.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_Upload.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/_ROOT_Type_FinancialSalesSource.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyCell/_ROOT_Type_FinancialWeeklyCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/Attribute_Period.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyColumn/_ROOT_Type_FinancialWeeklyColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/Method_GenerateColumn.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Download.qbl 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/_ROOT_Type_FinancialWeeklyReport.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyRow/_ROOT_Type_FinancialWeeklyRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Attribute_AverageInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Attribute_EndingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Attribute_MaximumInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Attribute_MinimumInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Attribute_Period.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Method_GenerateCell.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/_ROOT_Type_InventorySummaryColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Clear.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/_ROOT_Type_InventorySummaryReport.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_Category.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_EndDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_MqbMlb.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_Power.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySearch/_ROOT_Type_InventorySummarySearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Upload.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/_ROOT_Type_InventorySummarySource.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_Filter.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_SetCellValue#0.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_SetCellValue0.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Function_CalcDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriod#228/_ROOT_Type_ProductInStockingPointInPeriod.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Test/StaticMethod_Test.qbl 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialWeeklyReport_OnCli.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick#570.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation#568.def 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pVersionInfomation.def 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhFinelProduct_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslGeneration_OnCreated.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ddslPower_OnCreated.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhEndDate_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dhStartDate_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsEndDate_OnChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_dsStartDate_OnChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_ButtonCompare_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick#723.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListBaseVersionBudget_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionBudget_DropDownListCompareVersionBudget_OnSelectionChange.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListBaseVersionCurve_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionCurve_DropDownListCompareVersionCurve_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DataExtractorOperationIDS_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionIDS_DropDownListBaseVersionIDS_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListBaseVersionPPA_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPPA_DropDownListCompareVersionPPA_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListBaseVersionPP_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPP_DropDownListCompareVersionPP_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged#98.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged#599.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost#289.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost#154.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay#687.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable#623.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportHeader.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportOperation.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelFinancialSalesReportSearch.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration#844.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB#603.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower#858.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable#424.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit#715.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonExport_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelFinancialSalesReportOperation_ButtonSalesImport_OnClick.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnCreated.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_MatrixEditorTable.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelTable.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixEditorActionBarPageTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_matrixeditorContextMenuTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_ButtonExport_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Financial_weekly_report_view.vw 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__[124808.0.140900041].vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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'
  }
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '月'
  TargetAttribute: TimeUnit
}
_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();
  *]
}
_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 );
      }
    }
  *]
}
_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'
}
_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
}
_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'
}
_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
}
_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() );
    
_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();
  *]
}
_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 );
    }
_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 );
    }
_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
}
_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 );
  *]
}
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -6,5 +6,6 @@
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -6,5 +6,6 @@
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连';
    //return 'Assembly Plant (Spain)';
  *]
}
_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
}
_Main/BL/Type_FinancialSalesCell/DefaultValue_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Value
}
_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'
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialSalesColumn/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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 );
  *]
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialSalesReport/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_FinancialSalesReport/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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() );
  *]
}
_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 );
        }
      }
    }
  *]
}
_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 );
    }
  *]
}
_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;
  *]
}
_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() );
    }
  *]
}
_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() );
    }
  *]
}
_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;
      }
    }
  *]
}
_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';
  *]
}
_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 );
  *]
}
_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>';
  *]
}
_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';
  *]
}
_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';
  *]
}
_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';
  *]
}
_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';
  *]
}
_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 '长春装配线边库';
  *]
}
_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 '长春外租库';
  *]
}
_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 '大连装配线边库';
  *]
}
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXML/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_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 { }
    }
  ]
}
_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 { }
    }
  ]
}
_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 { }
    }
  ]
}
_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
}
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_Key.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLAddressType { }
  XMLID Key { }
}
_Main/BL/Type_FinancialSalesReport/XML_FinancialSalesReportXMLHeaders/XMLElementId_QuintiqType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
XMLElementId
{
  XMLID QuintiqType { }
  XMLQualifierType { }
}
_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 { }
    }
  ]
}
_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 { }
    }
  ]
}
_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
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialSalesRow/DefaultValue_DuplicateValueMarker.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: DuplicateValueMarker
}
_Main/BL/Type_FinancialSalesRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_FinancialSalesRow/DefaultValue_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Unit
}
_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();
  *]
}
_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 );
  *]
}
_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 );
  *]
}
_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() );
    }
  *]
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_FinancialSalesSearch/DefaultValue_MqbMlb.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MqbMlb
}
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Power.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Power
}
_Main/BL/Type_FinancialSalesSearch/DefaultValue_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Unit
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialSalesSource/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadDateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: UploadDateTime
}
_Main/BL/Type_FinancialSalesSource/DefaultValue_UploadUser.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: UploadUser
}
_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 );
          }
        }
      }
    }
  *]
}
_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() <> '' );
  *]
}
_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();
  *]
}
_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();
  *]
}
_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();
  *]
}
_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 );
    //从Forecast查询
    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的Sales Segment为长春,识别出MLB的所有产品汇总
      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 ){
        //大连财务销量:首先在forecast界面查找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() );
    }
    //从Product planning查找库存点为长春装配线边库的所有MQB产品,取Total Demand字段按月汇总需求数量
    traverse( owner, Product_MP, product, product.IsLeaf() and product.MQBMLB() = 'MQB' ){//产品为MQB
      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() );//取Total 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() );//取Total 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 );
  *]
}
_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;
  *]
}
_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'
}
_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
}
_Main/BL/Type_FinancialWeeklyCell/DefaultValue_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Value
}
_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'
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialWeeklyColumn/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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 );
  *]
}
_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'
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_FinancialWeeklyReport/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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 );
    }
  *]
}
_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();
  *]
}
_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>';
  *]
}
_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)';
  *]
}
_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)';
  *]
}
_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';
  *]
}
_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 ) );
  *]
}
_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'
}
_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
}
_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
}
_Main/BL/Type_FinancialWeeklyRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_InventorySummaryColumn/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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 );
  *]
}
_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 );
      }
    }
  *]
}
_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'
}
_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
}
_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
}
_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
}
_Main/BL/Type_InventorySummaryReport/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_InventorySummaryReport/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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 );
  *]
}
_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() );
          }
        }
      }
    }
  *]
}
_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() );
        }
      }
    }
    }
  *]
}
_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;
  *]
}
_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>';
  *]
}
_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)';
  *]
}
_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)';
  *]
}
_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';
  *]
}
_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'
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_InventorySummarySearch/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_InventorySummarySearch/DefaultValue_MqbMlb.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MqbMlb
}
_Main/BL/Type_InventorySummarySearch/DefaultValue_Power.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Power
}
_Main/BL/Type_InventorySummarySearch/DefaultValue_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Unit
}
_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'
}
_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
}
_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
}
_Main/BL/Type_InventorySummarySource/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_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();
  *]
}
_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();
  *]
}
_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 ) );
    //库存数量为Actual 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();
        }
      }
    }
    //首先在Entities里识别父级Unit为长春/大连的所有库存点
    //长春库存点
    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 );
  *]
}
_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;
  *]
}
_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'
}
_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
}
_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
}
_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
}
_Main/BL/Type_InventroySummaryRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_InventroySummaryRow/DefaultValue_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Unit
}
_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();
  *]
}
_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 );
  *]
}
_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() );
    }
  *]
}
_Main/BL/Type_InventroySummaryRow/Method_SetCellValue#0.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 );
  *]
}
_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 );
  *]
}
_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)
  *]
}
_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'
}
_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
}
_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;
  *]
}
_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{
      }
    }
  *]
}
_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'
}
_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") );
  *]
}
_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();
_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" );
_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;
_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
}
_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() ));
    }
  *]
}
_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
}
_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
}
_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
}
_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'
}
_Main/BL/Type_ProductInStockingPointInPeriod#228/_ROOT_Type_ProductInStockingPointInPeriod.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ProductInStockingPointInPeriod #extension
{
}
_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() ));
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
@@ -10,5 +10,12 @@
        #child: ContextMenuCapacities
      ]
    }
    Component ButtonDataFinances #extension
    {
      Children:
      [
        #child: ContextMenuFinances
      ]
    }
  ]
}
_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:
  [
_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'
      ]
    }
  ]
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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 );
  *]
}
_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 );
  *]
}
_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();
    *]
  }
}
_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();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick#570.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 ));
    *]
  }
}
_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'
  ]
}
_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'
_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:
  [
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
@@ -7,6 +7,7 @@
  [
    #child: PanelSelection
    #child: PanelOperation_568
    #child: PanelFilter
  ]
  Properties:
  [
_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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation#568.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
  ]
}
_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
  ]
}
_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() );
      }
    *]
  }
}
_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() );
      }
    *]
  }
}
_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() );
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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() );
    *]
  }
}
_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() );
    *]
  }
}
_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() );
    *]
  }
}
_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() );
    *]
  }
}
_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
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick#723.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
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_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() );
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListBaseVersionPR_OnSelectionChanged#98.def
@@ -14,7 +14,7 @@
    [*
      dhBaseVersionPR.Data( selection );
      this.Tooltip( selection.Name() );
      efBaseVersion.Text( selection.Name() );
      lBaseVersionName.Text( selection.Name() );
      dhBaseVersionPath.Data( selection.FilePath() );
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pSelectionPR_DropDownListCompareVersionPR_OnSelectionChanged#599.def
@@ -14,7 +14,7 @@
    [*
      this.Tooltip( selection.Name() );
      
      efCompareVersion.Text( selection.Name() );
      lCompareVersionName.Text( selection.Name() );
      dhCompareVersionPath.Data( selection.FilePath() );
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost#289.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()'
        }
      ]
    }
  ]
}
_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()'
        }
      ]
    }
  ]
}
_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()'
        }
      ]
    }
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost#154.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: '人员成本'
  ]
}
_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: '人员类型'
  ]
}
_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: '加班倍率'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay#687.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: '标准工作天数'
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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();
    *]
  }
}
_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();
      }
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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 ));
    *]
  }
}
_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();
      }
    *]
  }
}
_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) );
    *]
  }
}
_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 ) );
    *]
  }
}
_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();
      }
    *]
  }
}
_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 ) );
    *]
  }
}
_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
  }
}
_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
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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 );
    *]
  }
}
_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" );
      }
    *]
  }
}
_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() );
    *]
  }
}
_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'
  ]
}
_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() );
_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
  }
_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
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_MatrixEditorTable#623.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelGeneration#844.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelMQBMLB#603.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelPower#858.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelTable#424.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelUnit#715.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
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixEditorActionBarPageTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
{
  #keys: '[415136.0.858621874]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_matrixeditorContextMenuTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
{
  #keys: '[415136.0.858621875]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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:
    [*
      //代数改变后刷新显示
      if( dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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'
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  }
}
_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
  }
}
_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'
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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:
    [*
      //代数改变后刷新显示
      if( dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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'
  ]
}
_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
}
_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
}
_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
}
_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
}
_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__[124808.0.140900041].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