rislai
2024-07-03 335657ab76933960edb1f13eca7f2d417041d902
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已修改24个文件
已添加261个文件
5708 ■■■■■ 文件已修改
_Main/BL/InfoMessages.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | 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_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.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_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl 19 ●●●● 补丁 | 查看 | 原始文档 | 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 23 ●●●●● 补丁 | 查看 | 原始文档 | 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 20 ●●●●● 补丁 | 查看 | 原始文档 | 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_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/Function_CalcAverageInventory.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryCell/_ROOT_Type_InventorySummaryCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Attribute_Category.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | 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/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryColumn/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | 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 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | 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 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_DownloadTemplate.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl 53 ●●●●● 补丁 | 查看 | 原始文档 | 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#0.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/StaticMethod_NewStaticMethod.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventroySummaryRow/_ROOT_Type_InventroySummaryRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriod#228/_ROOT_Type_ProductInStockingPointInPeriod.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonFinancialSalesReport_OnClic.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonInventorySummaryReport_OnCl.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def 5 ●●●● 补丁 | 查看 | 原始文档 | 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_FormInventorySummaryReport/Component_MatrixEditorTable.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def 30 ●●●●● 补丁 | 查看 | 原始文档 | 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 34 ●●●●● 补丁 | 查看 | 原始文档 | 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_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 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | 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/Component_FormOfflinePlan/Component_MatrixEditor951.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Financial_sales_report_view.vw 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Inventory_summary_report_view.vw 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/EditorTC/Views/车道整班分析_[413988.0.1301140601].vw 500 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/MacroPlanner/Views/Empty__dialog_initialization__[124808.0.140900041].vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl
@@ -98,6 +98,42 @@
  {
    DefaultText: 'The two products selected are the same.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyDuplicateData
  {
    DefaultText: 'There is duplicate data present.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyFactoryNoExist
  {
    DefaultText: 'Factory does not exist.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyIllegalCharacter
  {
    DefaultText: 'The required quantity contains illegal characters.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyIllegalTime
  {
    DefaultText: 'The required period contains illegal time.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyNegativeNumber
  {
    DefaultText: 'The required quantity includes negative numbers.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyNullStrings
  {
    DefaultText: 'Required fields contain empty data.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyOverPeriod
  {
    DefaultText: 'The template month is not within the planning cycle.'
  }
  InfoMessage MP_FinancialProductionReport_ImportIndetifyProductNoExist
  {
    DefaultText: 'Product does not exist.'
  }
  InfoMessage MP_FinancialProductionReport_Question
  {
    DefaultText: '导入模板包含未来月份的财务数据,是否覆盖系统计算结果?'
  }
  InfoMessage MP_LibCal_EventType_Exist
  {
    DefaultText: 'The ID or name is the same.'
_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_InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStocki.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation InventorySummaryCell_ProductInStockingPointInPeriod_ProductInStockingPointInPeriod_InventorySummaryCell
{
  #keys: '1[415136.0.865101866]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ProductInStockingPointInPeriod
  {
    #keys: '3[415136.0.865101868][415136.0.865101867][415136.0.865101869]'
    Cardinality: '1toN'
    ObjectDefinition: InventorySummaryCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide InventorySummaryCell
  {
    #keys: '3[415136.0.865101871][415136.0.865101870][415136.0.865101872]'
    Cardinality: '0to1'
    ObjectDefinition: ProductInStockingPointInPeriod
    OwningSide: 'Reference'
  }
}
_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_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell
{
  #keys: '1[413988.0.1296697089]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide OfflinePlanColumn
  {
    #keys: '3[413988.0.1296697091][413988.0.1296697090][413988.0.1296697092]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanCell
  {
    #keys: '3[413988.0.1296697094][413988.0.1296697093][413988.0.1296697095]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanColumn
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell
{
  #keys: '1[413988.0.1296697102]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide OfflinePlanRow
  {
    #keys: '3[413988.0.1296697104][413988.0.1296697103][413988.0.1296697105]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanCell
  {
    #keys: '3[413988.0.1296697107][413988.0.1296697106][413988.0.1296697108]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn
{
  #keys: '1[413988.0.1296697061]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1296697063][413988.0.1296697062][413988.0.1296697064]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanColumn
  {
    #keys: '3[413988.0.1296697066][413988.0.1296697065][413988.0.1296697067]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow
{
  #keys: '1[413988.0.1296696992]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1296696994][413988.0.1296696993][413988.0.1296696995]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanRow
  {
    #keys: '3[413988.0.1296696997][413988.0.1296696996][413988.0.1296696998]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_FinancialProductionReport/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[415136.0.853939545][415136.0.853939544][415136.0.853939546]'
  ValueType: Boolean
}
_Main/BL/Type_FinancialProductionReport/Method_Clear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Method Clear
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    this.FinancialProductionColumn( relflush );
    this.FinancialProductionRow( relflush );
    this.GenerateColumn( this.FinancialProductionSource().MacroPlan() );
  *]
}
_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  FinancialProductionSearch search,
  Product_MPs products
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    table      := selectobject( this, FinancialProductionSource.FinancialProductionReport, report, not report.IsShow() );
    allunit    := '<All>';
    //清空之前存储的显示数据
    this.Clear();
    //过滤后的产品id
    productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                      and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                      and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
    sumrow     := this.FinancialProductionRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.FinancialProductionRow( relsize ) );
    traverse( table, FinancialProductionRow, row, row.Unit() = search.Unit() ){
      productid  := construct( Strings );
      productid.Add( row.Name() );
      if( productids.ContainsAll( productid ) ){
        showrow := this.FinancialProductionRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
        traverse( row, FinancialProductionCell, cell ){
          column   := selectobject( this, FinancialProductionColumn, column, column.Name() = cell.FinancialProductionColumn().Name() );
          sumcell  := selectobject( column, FinancialProductionCell, c, c.FinancialProductionRow() = sumrow );
          if( isnull( sumcell ) ){
            sumcell := column.FinancialProductionCell( relnew, Value := '0' );
            sumrow.FinancialProductionCell( relinsert, sumcell );
          }
          showcell := column.FinancialProductionCell( relnew, Value := cell.Value() );
          showrow.FinancialProductionCell( relinsert, showcell );
          value := [Real]cell.Value() + [Real]sumcell.Value();
          sumcell.Value( [String]value );
        }
      }
    }
  *]
}
_Main/BL/Type_FinancialProductionReport/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    startofplanning           := owner.StartOfPlanning();
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
      periodtime := start.Date();
      periodname := periodtime.Format( "M2/D2/Y" );
      this.FinancialProductionColumn( relnew, Name := periodname, Period := periodtime );
    }
  *]
}
_Main/BL/Type_FinancialProductionReport/Method_IdentifyNullValues.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
Quintiq file version 2.0
#parent: #root
Method IdentifyNullValues
{
  TextBody:
  [*
    // åˆ é™¤ç©ºè¡Œæ•°æ®
    productcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 0 );
    unitcolumn    := selectobject( this, FinancialProductionColumn, column, column.Index() = 1 );
    //删除没有对应日期数据的行
    traverse ( this, FinancialProductionRow, row ) {
      if ( forall( row, FinancialProductionCell, cell, true, ( cell.FinancialProductionColumn() <> productcolumn or cell.FinancialProductionColumn() <> unitcolumn ) and cell.Value().TrimBoth() = "" ) ) {
        row.Delete();
      }
    }
    // åˆ¤æ–­æ˜¯å¦å­˜åœ¨è´Ÿæ•°
    traverse ( this, FinancialProductionRow.FinancialProductionCell, cell ) {
      if ( cell.FinancialProductionColumn().Index() <= 1 ) {
        if ( cell.Value().TrimBoth() = "" ) {
          error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
        }
      } else {
        if ( cell.Value().TrimBoth() = "" ) {
          cell.Value( '0' );
    //      error( Translations::AC_SalesForecastInputSource_Error6() );
        } else {
          stn := StringToReal::StandardConverter();
          if ( not stn.CanConvert( cell.Value().TrimBoth() ) ) {
            error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalCharacter() );
          } else {
            if ( stn.Convert( cell.Value().TrimBoth() ) >= 0 ) {
              cell.Value( [String]ceil( stn.Convert( cell.Value().TrimBoth() ) ) );
            } else {
              error( Translations::MP_FinancialProductionReport_ImportIndetifyNegativeNumber() );
            }
          }
        }
      }
      cell.FinancialProductionRow().DuplicateValueMarker( cell.FinancialProductionRow().DuplicateValueMarker()                  +
                                                        ifexpr( cell.FinancialProductionColumn().Index() = 0, "", "-" ) +
                                                        cell.Value()
                                                       );
    }
    // åˆ¤æ–­æ˜¯å¦å­˜åœ¨é‡å¤æ•°æ®
    row := selectduplicates( this, FinancialProductionRow, row, true, row.DuplicateValueMarker() );
    if ( row.Size() > 1 ) {
      error( Translations::MP_FinancialProductionReport_ImportIndetifyDuplicateData() );
    }
  *]
}
_Main/BL/Type_FinancialProductionReport/Method_ImportVerification.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
Quintiq file version 2.0
#parent: #root
Method ImportVerification
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-27-2024 (created)
    owner           := this.FinancialProductionSource().MacroPlan();
    startofthisyear := owner.StartOfPlanning().StartOfYear().Date();
    startofnextyear := owner.StartOfPlanning().StartOfNextYear().Date();
    if ( exists( this, FinancialProductionColumn, column, ( column.Index() = 0 and column.Name() <> "Product" )             or
                                                      ( column.Index() = 1 and column.Name() <> "Unit" )  ) ){
      error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
    }
    indexcolumn := select( this, FinancialProductionColumn, column, column.Index() = 2 );
    if ( isnull( indexcolumn ) ) {
      error( Translations::MP_FinancialProductionReport_ImportIndetifyNullStrings() );
    } else {
      cnv2 := StringToDate::StandardConverter();
      cnv2.SetCustomConversion();
      cnv2.CustomFormatString( "dd/MM/yyyy" );
      while ( not isnull( indexcolumn ) ) {
        if ( not cnv2.CanConvert( indexcolumn.Name() ) ) {
          error( Translations::MP_FinancialProductionReport_ImportIndetifyIllegalTime() );
        }
        period := cnv2.Convert( indexcolumn.Name() );
      //  info( "开始时间:", this.SalesForecastInputSource().PlanningStartDate().Format( "Y-M2-D2" ),
      //        "结束时间:", this.SalesForecastInputSource().PlanningEndDate().Format( "Y-M2-D2" ),
      //        "列时间:", cnv2.Convert( indexColumn.name() ).Format( "Y-M2-D2" ) );
        // åˆ¤æ–­æ˜¯å¦åœ¨è®¡åˆ’周期内
        if ( period <= startofthisyear or period >= startofnextyear ) {
          error( Translations::MP_FinancialProductionReport_ImportIndetifyOverPeriod() );
        }
        indexcolumn := indexcolumn.NextColumn();
      }
    }
    productcolumn := selectobject( this, FinancialProductionColumn, column, column.Index() = 0 );
    unitcolumn    := selectobject( this, FinancialProductionColumn, column, column.Index() = 1 );
    units         := selectuniquevalues( unitcolumn, FinancialProductionCell, cell, cell.Value() );
    if( units.Size() <> 2 or ( units.Find( FinancialProductionReport::GetDefaultCCUnit() ) >= 0
                               and units.Find( FinancialProductionReport::GetDefaultDLUnit() ) >= 0 ) ){
      error( Translations::MP_FinancialProductionReport_ImportIndetifyFactoryNoExist() );
    }
    products     := selectuniquevalues( productcolumn, FinancialProductionCell, cell, cell.Value() );
    productnames := selectuniquevalues( owner, Product_MP, product, product.ID() );
    if( not productnames.ContainsAll( products ) ){
      error( Translations::MP_FinancialProductionReport_ImportIndetifyProductNoExist() );
    }
  *]
}
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,6 +5,6 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Assembly Plant (France)';
    return '长春';
  *]
}
_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,6 +5,6 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Assembly Plant (Spain)';
    return '大连';
  *]
}
_Main/BL/Type_FinancialProductionRow/Attribute_DuplicateValueMarker.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DuplicateValueMarker
{
  #keys: '3[415136.0.857450433][415136.0.857450432][415136.0.857450434]'
  Description: '判断是否存在重复值'
  ValueType: String
}
_Main/BL/Type_FinancialProductionRow/DefaultValue_DuplicateValueMarker.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: DuplicateValueMarker
}
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
@@ -6,24 +6,27 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    allunit := FinancialProductionReport::GetDefaultAllUnit();
    table   := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
    table   := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and not table.IsShow() );
    //info( '--------------------------', table.Name() );
    traverse( this, FinancialProductionReport, report ){
      productcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' );
      unitcolumn    := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Unit' );
    //  info( '----------------------1-----------------', productcolumn.Name(), unitcolumn.Name() );
      
      traverse( report, FinancialProductionRow, row ){
        product := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn );
        unit    := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn );
    //    info( '----------------------2-----------------', product.Value(), unit.Value() );
        
        unitrow := selectobject( table, FinancialProductionRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
        allrow  := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
        traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)' ){
    //    info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
        // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
        traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn ){
          column   := cell.FinancialProductionColumn();
          unitcell := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn().Name() = column.Name() );
          allcell  := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn().Name() = column.Name() );
          info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
    //      info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
          if( not isnull( unitcell ) ){
            unitcell.Value( cell.Value() );
          }
_Main/BL/Type_FinancialProductionSource/Method_IsExistFutureMonthData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method IsExistFutureMonthData () as Boolean
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-26-2024 (created)
    startofplanning := this.MacroPlan().StartOfPlanning().Date().Format( 'M2/D2/Y' );
    columns         := selectset( this, FinancialProductionReport.FinancialProductionColumn, column, column.Name() > startofplanning );
    return exists( columns, Elements.FinancialProductionCell, cell, cell.Value() <> '' );
  *]
}
_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl
@@ -24,8 +24,13 @@
      this.FinancialProductionReport( relinsert, &xlstable ); 
      
      Transaction::Transaction().Propagate( attribute( FinancialProductionColumn, Index ) );
      // ï¼ˆå¯¼å…¥å‰ï¼‰ç»™ç©ºå€¼èµ‹äºˆé»˜è®¤å€¼ï¼ˆN/A),并且删除空行数据和数据校验
      xlstable.IdentifyNullValues();
      xlstable.ImportVerification();
    }
    //导入后处理数据
    this.AfterImport();
    //this.AfterImport();
  *]
}
_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
@@ -1,16 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan,
  Boolean istemplate
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载财务报表数据'
  TextBody:
  [*
    startofplanning := macroPlan.StartOfPlanning().Date();
    allunit         := FinancialProductionReport::GetDefaultAllUnit();
    table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
    table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
    
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
@@ -35,7 +33,7 @@
    
    tableElement.AppendChild( productcolumnelement ); 
    tableElement.AppendChild( unitcolumnelement ); 
    traverse ( table, FinancialProductionColumn, column, not istemplate or column.Period() < startofplanning ) {
    traverse ( table, FinancialProductionColumn, column ) {
      columnelement := xmlDOM.CreateElement( "column" );
      nameelement   := xmlDOM.CreateElement( "name" );
      typeelement   := xmlDOM.CreateElement( "type" );
@@ -44,7 +42,7 @@
      columnelement.AppendChild( nameelement );
      columnelement.AppendChild( typeelement );
      
      cells := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().Unit() <> allunit, cell.FinancialProductionRow().Name() );
      cells := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().RowNr() );
    
      traverse ( cells, Elements, c ) {
        if( column.Index() = 0 ){
@@ -59,11 +57,7 @@
          unitcolumnelement.AppendChild( unitcellElement );
        }
        cellElement := xmlDOM.CreateElement( "cell" );
        if( istemplate ){
          cellElement.SetAttribute( "value", '' );
        }else{
          cellElement.SetAttribute( "value", c.Value() );
        }
        cellElement.SetAttribute( "value", c.Value() );
        columnelement.AppendChild( cellElement );
      }
      tableElement.AppendChild( columnelement );  
_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl
@@ -12,9 +12,9 @@
    tableElement              := xmlDOM.GetElementByTagName( "table", 0 );
    
    startofyear               := macroPlan.StartOfPlanning().StartOfYear();
    startofplanning           := macroPlan.StartOfPlanning();
    startofnextyear           := macroPlan.StartOfPlanning().StartOfNextYear();
    
    for( start := startofyear; start < startofplanning; start := start.StartOfNextMonth() ){
    for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
      columnElement := xmlDOM.CreateElement( "column" );
      nameElement   := xmlDOM.CreateElement( "name" );
      typeElement   := xmlDOM.CreateElement( "type" );
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -13,12 +13,17 @@
    allunit                   := FinancialProductionReport::GetDefaultAllUnit();
    source                    := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() );
    table                     := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
    showtable                 := source.FinancialProductionReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsImport := false, IsShow := true );
    startofplanning           := owner.StartOfPlanning();
    startofnextmonth          := owner.StartOfPlanning().StartOfNextMonth();
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    
    source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    search                    := source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    products                  := construct( Product_MPs );
    table.GenerateColumn( owner );
    
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
      unit := pisp.StockingPoint_MP().UnitID();
@@ -32,6 +37,7 @@
        dlrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit );
      }
      if( isnull( allrow ) ){
        products.Add( pisp.Product_MP() );
        allrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := allunit );
      }
      
@@ -39,10 +45,6 @@
        periodtime := start.Date();
        periodname := periodtime.Format( "M2/D2/Y" );
        column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime );
        if( isnull( column ) ){
          column := table.FinancialProductionColumn( relnew, Name := periodname, Period := periodtime );
        }
        
        if( not isnull( ccrow ) ){
          ccrow.Initialize( column, ccunit );
@@ -72,5 +74,12 @@
        allrow.Initialize( column, pispip.NewSupplyProductionQuantity() );
      }
    }
    rows := selectsortedset( table, FinancialProductionRow, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    showtable.Generate( search, products );
  *]
}
_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,23 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  String salessegment,
  String product,
  DateTime startdate,
  DateTime enddate
) as FinancialSalesRow
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    row := selectobject( this, FinancialSalesRow, row, row.Name() = product and row.Unit() = salessegment );
    if( isnull( row ) ){
      row := this.FinancialSalesRow( relnew, Name := product, Unit := salessegment );
      //初始化单元格
      row.InitializeCell( this, startdate, enddate );
    }
    return row;
  *]
}
_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,20 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell (
  FinancialSalesReport table,
  DateTime startdate,
  DateTime enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    for( start := startdate; start < enddate; start := start.StartOfNextMonth() ){
      periodtime := start.Date();
      periodname := periodtime.Format( "M2/D2/Y" );
      column := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
      this.Initialize( column, this.Unit() );
    }
  *]
}
_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(), startofyear, startofnextyear );
      periodtime := forecast.StartDate().StartOfMonth();
      periodname := periodtime.Format( "M2/D2/Y" );
      if( products.Find( product ) < 0 ){
        products.Add( product );
      }
    //  info( '------------------------', periodname, periodtime );
      column    := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
    //  info( '------------------------', column.Name() );
      //Forecast的Sales Segment为长春,识别出MLB的所有产品汇总
      if( forecast.SalesSegmentName() = ccsalessegment and product.MQBMLB() = 'MLB' ){
    //    info( '------------------------', column.Name() );
        ccrow := table.GetRow( ccsalessegment, product.ID(), startofyear, startofnextyear );
    //    info( '------------------------', ccrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) );
        ccrow.Initialize( column, forecast.Quantity() );
      }else if( forecast.SalesSegmentName() = tjsalessegment or forecast.SalesSegmentName() = fssalessegment ){
        //大连财务销量:首先在forecast界面查找Sales Segment是天津和佛山的所有需求,每个产品按月汇总需求数量
    //    info( '------------------------', column.Name() );
        dlrow := table.GetRow( dlsalessegment, product.ID(), startofyear, startofnextyear );
    //    info( '------------------------', dlrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) );
        dlrow.Initialize( column, forecast.Quantity() );
      }
      allrow.Initialize( column, forecast.Quantity() );
    }
    //从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(), startofyear, startofnextyear );
          ccrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );//取Total Demand字段按月汇总需求数量
          allrow     := table.GetRow( allsalessegment, product.ID(), startofyear, startofnextyear );
          allrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );
        }
      }
    }
    startofnextyearlead       := startofplanning.StartOfNextYear() + FinancialSalesReport::GetDefaultTripLeadingTime();
    //大连财务销量:长春的需求需要在trip plan里面找到起始库存点为大连装配线边库,目的地为长春外租库的产品,由于需要考虑产品运输lead time,每个月的汇总数据需要推迟两天进行计算
    traverse( owner, Unit.Lane.LaneLeg, laneleg, laneleg.OriginStockingPointID() = dlspline and laneleg.DestinationStockingPointID() = ccrent ){
      traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){
        periodtime := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
        periodname := periodtime.Format( "M2/D2/Y" );
        column    := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
        traverse( trip, ProductInTrip, pit ){
          dlrow      := table.GetRow( dlsalessegment, pit.ProductID(), startofyear, startofnextyear );
          dlrow.Initialize( column, pit.Quantity() );//取Total Demand字段按月汇总需求数量
          allrow     := table.GetRow( allsalessegment, pit.ProductID(), startofyear, startofnextyear );
          allrow.Initialize( column, pit.Quantity() );
        }
      }
    }
    rows := selectsortedset( table, FinancialSalesRow, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    showtable.Generate( search, products );
  *]
}
_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_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/Function_CalcAverageInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcAverageInventory
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-1-2024 (created)
    value := average( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
    this.AverageInventory( value );
  *]
}
_Main/BL/Type_InventorySummaryCell/Function_CalcEndingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcEndingInventory
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-1-2024 (created)
    value := maxobject( this, ProductInStockingPointInPeriod, pispip, pispip.Start() );
    this.EndingInventory( value.PlannedInventoryLevelEnd() );
  *]
}
_Main/BL/Type_InventorySummaryCell/Function_CalcMaximumInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcMaximumInventory
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-1-2024 (created)
    value := max( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
    this.MaximumInventory( value );
  *]
}
_Main/BL/Type_InventorySummaryCell/Function_CalcMinimumInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcMinimumInventory
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-1-2024 (created)
    value := min( this, ProductInStockingPointInPeriod, pispip, pispip.PlannedInventoryLevelEnd() );
    this.MinimumInventory( value );
  *]
}
_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_Category.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Category
{
  #keys: '3[415136.0.865101993][415136.0.865101992][415136.0.865101994]'
  Description: 'day;week;month'
  ValueType: String
}
_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/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/_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,13 @@
Quintiq file version 2.0
#parent: #root
Method Clear
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    this.InventorySummaryColumn( relflush );
    this.InventroySummaryRow( relflush );
    this.GenerateColumn( this.InventorySummarySource().MacroPlan() );
  *]
}
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  InventorySummarySearch search,
  Product_MPs products
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    table      := selectobject( this, InventorySummarySource.InventorySummaryReport, report, not report.IsShow() );
    allunit    := '<All>';
    //清空之前存储的显示数据
    this.Clear();
    //过滤后的产品id
    productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                      and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                      and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
    sumrow     := this.InventroySummaryRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.InventroySummaryRow( relsize ) );
    traverse( table, InventroySummaryRow, row, row.Unit() = search.Unit() ){
      productid  := construct( Strings );
      productid.Add( row.Name() );
      if( productids.ContainsAll( productid ) ){
        showrow := this.InventroySummaryRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
        traverse( row, InventorySummaryCell, cell ){
    //      column   := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
    //
    //      sumcell  := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
    //      if( isnull( sumcell ) ){
    //        sumcell := column.InventorySummaryCell( relnew, Value := '0' );
    //        sumrow.InventorySummaryCell( relinsert, sumcell );
    //      }
    //
    //      showcell := column.InventorySummaryCell( relnew, Value := cell.Value() );
    //      showrow.InventorySummaryCell( relinsert, showcell );
    //      value := [Real]cell.Value() + [Real]sumcell.Value();
    //      sumcell.Value( [String]value );
        }
      }
    }
  *]
}
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    startofplanning           := owner.StartOfPlanning();
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
      periodtime := start.Date();
      periodname := periodtime.Format( "M2/D2/Y" );
      this.InventorySummaryColumn( relnew, Name := periodname, Period := periodtime );
    }
  *]
}
_Main/BL/Type_InventorySummaryReport/Method_GetRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  String unit,
  String product,
  DateTime startdate,
  DateTime enddate
) as InventroySummaryRow
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    row := selectobject( this, InventroySummaryRow, row, row.Name() = product and row.Unit() = unit );
    if( isnull( row ) ){
      row := this.InventroySummaryRow( relnew, Name := product, Unit := unit );
      //初始化单元格
      row.InitializeCell( this, startdate, enddate );
    }
    return row;
  *]
}
_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 'China';
  *]
}
_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    return '大连';
    //return 'Foregin';
  *]
}
_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,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_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,53 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MacroPlan owner
)
{
  Description: '初始化'
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.InventorySummarySource( relflush );
    products                  := construct( Product_MPs );
    allunit                   := InventorySummaryReport::GetDefaultAllUnit();
    ccunit                    := InventorySummaryReport::GetDefaultCCUnit();
    dlunit                    := InventorySummaryReport::GetDefaultDLUnit();
    source                    := owner.InventorySummarySource( relnew, ID := InventorySummaryReport::GetDefaultName(), Name := InventorySummaryReport::GetDefaultName() );
    table                     := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.InventorySummaryReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    startofplanning           := owner.StartOfPlanning();
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    search                    := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
    table.GenerateColumn( owner );
    //从Product planning查找库存点为长春装配线边库的所有MQB产品,取Total Demand字段按月汇总需求数量
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
      unit := pisp.StockingPoint_MP().UnitID();
      product := pisp.Product_MP();
        traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning
                and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ){
          periodtime := pispip.Start().StartOfMonth().Date();
          periodname := periodtime.Format( "M2/D2/Y" );
          column    := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
          ccrow := table.GetRow( ccunit, product.ID(), startofyear, startofnextyear );
          ccrow.Initialize( column, pispip );//取Total Demand字段按月汇总需求数量
          allrow     := table.GetRow( allunit, product.ID(), startofyear, startofnextyear );
          allrow.Initialize( column, pispip );
        }
    }
    rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    showtable.Generate( search, products );
  *]
}
_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#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  InventorySummaryColumn column,
  ProductInStockingPointInPeriod pispip
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, InventorySummaryCell, cell, cell.InventorySummaryColumn() = column );
    cell.ProductInStockingPointInPeriod( relinsert, pispip );
  *]
}
_Main/BL/Type_InventroySummaryRow/Method_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  InventorySummaryColumn column,
  String unit
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := column.InventorySummaryCell( relnew );
    this.InventorySummaryCell( relinsert, cell );
  *]
}
_Main/BL/Type_InventroySummaryRow/Method_InitializeCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell (
  InventorySummaryReport table,
  DateTime startdate,
  DateTime enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    for( start := startdate; start < enddate; start := start.StartOfNextMonth() ){
      periodtime := start.Date();
      periodname := periodtime.Format( "M2/D2/Y" );
      column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
      this.Initialize( column, this.Unit() );
    }
  *]
}
_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_OfflinePlanCell/Attribute_Shift.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Shift
{
  #keys: '3[413988.0.1303338462][413988.0.1303338461][413988.0.1303338463]'
  Description: '班次'
  ValueType: String
}
_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Value
{
  #keys: '3[413988.0.1296697080][413988.0.1296697079][413988.0.1296697081]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshOfflinePlan (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    macroPlan.OfflinePlanRow( relflush );
    macroPlan.OfflinePlanColumn( relflush );
    // ç”Ÿæˆä¸‹çº¿è®¡åˆ’表
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() and u.Name() = "ZP4-M3" ) {
      // åˆ›å»ºäº§çº¿è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
      traverse ( u, Operation, o ) {
        traverse ( o, PeriodTaskOperation.NewSupply, ns ) {
          // æ‰¾è¡Œ
          oprQuantity := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "1" );
          oprOrder    := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "2" );
          if ( isnull( oprQuantity ) and isnull( oprOrder ) ) {
            oprQuantity := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" );
            oprOrder    := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" );
          }
          // æ‰¾åˆ—
          opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( ns.Start().Date() );
          if ( isnull( opc ) ) {
            opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() );
          }
          // èµ‹å€¼å•元格
          cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name() );
          cellQuantity.OfflinePlanRow( relset, oprQuantity );
          cellOrder := opc.OfflinePlanCell( relnew, Value := "单号" );
          cellOrder.OfflinePlanRow( relset, oprOrder );
        }
      }
      // åˆ›å»ºæ€»é‡è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
      // åˆ›å»ºç­æ¬¡è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" );
    }
    // åˆ›å»ºäº§å“åˆ—&类型列
    productOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
    typeOPC    := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
    traverse ( macroPlan, OfflinePlanRow, opr ) {
      if ( opr.Type() = "0" ) {
        productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
        productLineCell.OfflinePlanRow( relset, opr );
      } else if( opr.Type() = "1" ) {
        productCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductID() );
        productCell.OfflinePlanRow( relset, opr );
        typeCell    := typeOPC.OfflinePlanCell( relnew, Value :=  "Quantity" );
        typeCell.OfflinePlanRow( relset, opr );
      } else if ( opr.Type() = "2" ) {
        typeCell    := typeOPC.OfflinePlanCell( relnew, Value :=  "Order" );
        typeCell.OfflinePlanRow( relset, opr );
      } else if ( opr.Type() = "3" ) {
        totalCell := productOPC.OfflinePlanCell( relnew, Value := "合计" );
        totalCell.OfflinePlanRow( relset, opr );
        totalCell := typeOPC.OfflinePlanCell( relnew, Value :=  "总量" );
        totalCell.OfflinePlanRow( relset, opr );
      } else if ( opr.Type() = "4" ) {
        shiftCell := typeOPC.OfflinePlanCell( relnew, Value :=  "班次" );
        shiftCell.OfflinePlanRow( relset, opr );
      }
    }
    // è¡¥å…¨æ€»é‡å’Œç­æ¬¡
    totalOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" );
    shiftOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" );
    traverse ( macroPlan, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) {
      traverse ( totalOPRs, Elements, totalOPR ) {
        total     := sum( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = totalOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1", [Real]tempOPC.Value() );
        totalCell := opc.OfflinePlanCell( relnew, Value := [String]total );
        totalCell.OfflinePlanRow( relset, totalOPR );
      }
      traverse ( shiftOPRs, Elements, shiftOPR ) {
        shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = shiftOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" );
        if ( not isnull( shift ) ) {
          shiftCell := opc.OfflinePlanCell( relnew, Value := shift.Shift() );
          shiftCell.OfflinePlanRow( relset, shiftOPR );
        }
      }
    }
    // è¡¥å…¨æ—¶é—´åˆ—
    indexDate := macroPlan.StartOfPlanning().Date();
    endDate   := Date::Construct( indexDate.Year(), 12, 31 );
    while ( indexDate <= endDate ) {
      opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( indexDate );
      if ( isnull( opc ) ) {
        opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := indexDate );
      }
      indexDate := indexDate + 1;
    }
  *]
}
_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OfflinePlanCell
{
  #keys: '5[413988.0.1296696989][413988.0.1296696987][0.0.0][413988.0.1296696988][413988.0.1296696990]'
  BaseType: Object
  StructuredName: 'OfflinePlanCells'
}
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnDate
{
  #keys: '3[413988.0.1295080211][413988.0.1295080210][413988.0.1295080212]'
  IsReadOnly: true
  ValueType: Date
}
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnIndex
{
  #keys: '3[413988.0.1296697042][413988.0.1296697041][413988.0.1296697043]'
  ValueType: Number
}
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnName
{
  #keys: '3[413988.0.1296697052][413988.0.1296697051][413988.0.1296697053]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcColumnName
{
  TextBody:
  [*
    // lihongji Jun-27-2024 (created)
    value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
    this.ColumnName( value );
  *]
}
_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
TypeIndex OfflinePlanColumnTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: ColumnDate
    }
  ]
}
_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OfflinePlanColumn
{
  #keys: '5[413988.0.1296696984][413988.0.1296696982][0.0.0][413988.0.1296696983][413988.0.1296696985]'
  BaseType: Object
  StructuredName: 'OfflinePlanColumns'
}
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1296697032][413988.0.1296697031][413988.0.1296697033]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1296697022][413988.0.1296697021][413988.0.1296697023]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[413988.0.1296697012][413988.0.1296697011][413988.0.1296697013]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Attribute Type
{
  #keys: '3[413988.0.1295121717][413988.0.1295121716][413988.0.1295121718]'
  Description:
  [*
    äº§çº¿åè¡Œ    ï¼š0
    Quantity行:1
    Order行     ï¼š2
    åˆè®¡è¡Œ        ï¼š3
    ç­æ¬¡è¡Œ        ï¼š4
  *]
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
TypeIndex OfflinePlanRowTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: ProductionLine
    }
    TypeIndexAttribute
    {
      ModelElement: ProductID
    }
    TypeIndexAttribute
    {
      ModelElement: Type
    }
  ]
}
_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OfflinePlanRow
{
  #keys: '5[413988.0.1296696979][413988.0.1296696977][0.0.0][413988.0.1296696978][413988.0.1296696980]'
  BaseType: Object
  StructuredName: 'OfflinePlanRows'
}
_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_WholeShift/Method_IsRoundingOrZeroFilling4.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
#parent: #root
Method IsRoundingOrZeroFilling4 (
  MacroPlan macroPlan,
  Unit unit
)
{
  Description: '车道整班'
  TextBody:
  [*
    traverse ( unit, Lane.LaneLeg.Trip, t ) {
      traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
        // èŽ·å–äº§å“lotsize倍数
        lotsize := 1;
        if ( pit.Product_MP().ParentID().Regex( "缸体" ) ) {
          lotsize := macroPlan.CylinderBlock();
        } else if ( pit.Product_MP().ParentID().Regex( "缸盖" ) ) {
          lotsize := macroPlan.CylinderHead();
        } else if ( pit.Product_MP().ParentID().Regex( "连杆" ) ) {
          lotsize := macroPlan.ConnectingRod();
        } else if ( pit.Product_MP().ParentID().Regex( "曲轴" ) ) {
          lotsize := macroPlan.Crankshaft();
        } else if ( pit.Product_MP().ParentID().Regex( "曲轴" ) ) {
          lotsize := macroPlan.BalanceAxis();
        }
        if ( lotsize > 1 ) {
          debuginfo( "产品ID:", pit.ProductID(), "    äº§å“æ•°é‡ï¼š", pit.Quantity(), "    lotsize:", lotsize );
          quantityToBeSupplemented := lotsize - ( pit.Quantity() mod lotsize );
          pit.Update( pit.Quantity() + quantityToBeSupplemented, true );
        }
      }
    }
  *]
}
_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
@@ -47,9 +47,10 @@
    }
    
    // è½¦é“整班
    traverse ( macroPlan, Unit, unit, unit.IsToFill() and unit.HasCapacityTypeTransportQuantity() ) {
      unitName := unit.Name();
    traverse ( macroPlan, Unit, u, u.IsToFill() and u.HasCapacityTypeTransportQuantity() ) {
      unitName := u.Name();
      debuginfo( "车道产线: ", unitName );
      this.IsRoundingOrZeroFilling4( macroPlan, u );
    }
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -16,6 +16,28 @@
        Taborder: 0
      ]
    }
    Component ButtonFinancialSalesReport
    {
      #keys: '[415136.0.861863635]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'MONEY_COINS2'
        Label: 'Financial sales report'
        Taborder: 1
      ]
    }
    Component ButtonInventorySummaryReport
    {
      #keys: '[415136.0.862201699]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOCUMENT_CHECK_EDIT'
        Label: 'Inventory summary report'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,6 +22,17 @@
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 2
      ]
    }
    Component bOfflinePlan
    {
      #keys: '[413988.0.1296872738]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'LIGHTBULB'
        Label: 'Offline plan'
        Taborder: 1
      ]
    }
_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_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_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgSecondDevelopmentPlan/bOfflinePlan
Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick
{
  #keys: '[413988.0.1296872869]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "OfflinePlan", true);
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
@@ -11,6 +11,7 @@
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKG'
        Label: 'ZKG(pcs)'
        Taborder: 0
      ]
@@ -21,6 +22,7 @@
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKM'
        Label: 'ZKM(pcs)'
        Taborder: 1
      ]
@@ -31,6 +33,7 @@
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityPL'
        Label: 'PL(pcs)'
        Taborder: 2
      ]
@@ -41,6 +44,7 @@
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityKW'
        Label: 'KW(pcs)'
        Taborder: 3
      ]
@@ -51,6 +55,7 @@
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityAGW'
        Label: 'AGW(pcs)'
        Taborder: 4
      ]
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def
@@ -45,8 +45,6 @@
          Properties:
          [
            DataType: 'FinancialProductionReport'
            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderProduct;search:QMacroPlanner::FormFinancialProductionReport.dhSearch'
            FixedFilter: 'object.Filter( search, products )'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'FinancialProductionRow'
@@ -56,7 +54,7 @@
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Name'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
@@ -10,12 +10,12 @@
    Body:
    [*
      //初始化
      //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
      if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
        FinancialProductionSource::Initialize( MacroPlan );
      //}
      }
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() );
      //info( '------------------2----------------' );
      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
      info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      
      dhSearch.Data( table.FinancialProductionSource().FinancialProductionSearch() );
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def
@@ -13,9 +13,9 @@
  {
    Body:
    [*
      binaryValue := FinancialProductionSource::Download( MacroPlan, false );
      binaryValue := FinancialProductionSource::Download( MacroPlan );
      
      Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() );
      Application.Download( FinancialProductionReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def
@@ -13,9 +13,9 @@
  {
    Body:
    [*
      binaryValue := FinancialProductionSource::Download( MacroPlan, true );
      binaryValue := FinancialProductionSource::DownloadTemplate( MacroPlan );
      
      Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() );
      Application.Download( FinancialProductionReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def
@@ -27,6 +27,12 @@
          source := FinancialProductionSource::Upload( MacroPlan, webFileBinaryData, fileName );
          source.ReadStructure();
          
          if( not source.IsExistFutureMonthData() or
              ( source.IsExistFutureMonthData() and WebMessageBox::Question( this, Translations::MP_FinancialProductionReport_Question(), 'Yes|No' ) = 0 ) ){
             source.AfterImport();
             DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
          }
          WebMessageBox::Success( Translations::A_VWED_Success() );
          traverse( MacroPlan, FinancialProductionSource, psource, psource.IsImport() and psource <> source ){
            psource.Delete();
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,10 @@
  {
    Body:
    [*
      dhSearch.Data().Generation( selection );
      if( dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,10 @@
  {
    Body:
    [*
      dhSearch.Data().MqbMlb( selection );
      if( dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,10 @@
  {
    Body:
    [*
      dhSearch.Data().Power( selection );
      if( dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -10,7 +10,7 @@
    Body:
    [*
      
      valueString := "<All>;Spider Assy Line 1;Body in White Line 3";
      valueString := "<All>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
      
      this.Strings( valueString );
    *]
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -9,7 +9,10 @@
  {
    Body:
    [*
      dhSearch.Data().Unit( selection );
      if( dhSearch.Data().Unit() <> selection ){
        dhSearch.Data().Unit( selection );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_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>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::GetDefaultDLUnit();
      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_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,30 @@
Quintiq file version 2.0
Component PanelCategory
{
  #keys: '[415136.0.862221867]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForPlanning id:RadioButtonGroupUseForPlanning_545
    {
      #keys: '[415136.0.862222092]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        BoundValue: 'Day'
        ButtonLabels: 'Day;Week;Month'
        ButtonValues: 'Day;Week;Month'
        Orientation: 'horizontal'
        ShowTitle: false
        Taborder: 0
        Title: 'Periods'
        Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_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,34 @@
Quintiq file version 2.0
Component PanelPeriod
{
  #keys: '[415136.0.862221329]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStart
    {
      #keys: '[415136.0.862221355]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start date'
        Taborder: 0
      ]
    }
    Component DateSelectorEnd
    {
      #keys: '[415136.0.862221609]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'End date'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_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 );
      }
      //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_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,20 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorEnd
Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
{
  #keys: '[415136.0.862221640]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( dhSearch.Data().EndDate() <> this.Date() ){
        dhSearch.Data().EndDate( this.Date() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorStart
Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
{
  #keys: '[415136.0.862221461]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( dhSearch.Data().StartDate() <> this.Date() ){
        dhSearch.Data().StartDate( this.Date() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_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>;" + FinancialProductionReport::GetDefaultCCUnit() + ";" + FinancialProductionReport::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/Component_FormOfflinePlan/Component_MatrixEditor951.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor951
{
  #keys: '[413988.0.1296803041]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell491
    {
      #keys: '[413988.0.1296803042]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor548
        {
          #keys: '[413988.0.1296803043]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'OfflinePlanColumn.OfflinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'OfflinePlanColumn'
        Row: 'OfflinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows271
    {
      #keys: '[413988.0.1296803046]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor869
        {
          #keys: '[413988.0.1296803047]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'OfflinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'RowNr'
        SortCriteria: 'ProductionLine;ProductID;Type'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns844
    {
      #keys: '[413988.0.1296803050]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor259
        {
          #keys: '[413988.0.1296803051]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'OfflinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'ColumnName'
        SortCriteria: 'ColumnDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage250
    #child: matrixeditorContextMenu204
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns844'
    ContextMenu: 'matrixeditorContextMenu204'
    Rows: 'MatrixEditorRows271'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage250
{
  #keys: '[413988.0.1296803054]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu204
{
  #keys: '[413988.0.1296803057]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.0.1296872691]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor951
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1296872680]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bRefresh
    {
      #keys: '[413988.0.1296860898]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Refresh'
        Taborder: 0
      ]
    }
    Component bDownload
    {
      #keys: '[413988.0.1296875316]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 1
      ]
    }
    Component bDeductionOfReplacementLoss
    {
      #keys: '[413988.0.1297911732]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Deduction of replacement loss'
        Taborder: 2
      ]
    }
    Component bRestore
    {
      #keys: '[413988.0.1297911774]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Restore'
        Taborder: 3
      ]
    }
    Component bSaveAsDraft
    {
      #keys: '[413988.0.1297973728]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Save as draft'
        Taborder: 4
      ]
    }
    Component bConfirm
    {
      #keys: '[413988.0.1297973782]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Confirm'
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bConfirm
Response OnClick () id:Response_pHeader_bConfirm_OnClick
{
  #keys: '[413988.0.1297974240]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bDeductionOfReplacementLoss
Response OnClick () id:Response_pHeader_bDeductionOfReplacementLoss_OnClick
{
  #keys: '[413988.0.1297973984]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bDownload
Response OnClick () id:Response_pHeader_bDownload_OnClick
{
  #keys: '[413988.0.1297973899]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: pHeader/bRefresh
Response OnClick () id:Response_pHeader_bRefresh_OnClick
{
  #keys: '[413988.0.1297973814]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      OfflinePlanCell::RefreshOfflinePlan( MacroPlan );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bRestore
Response OnClick () id:Response_pHeader_bRestore_OnClick
{
  #keys: '[413988.0.1297974069]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bSaveAsDraft
Response OnClick () id:Response_pHeader_bSaveAsDraft_OnClick
{
  #keys: '[413988.0.1297974155]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormOfflinePlan
{
  #keys: '[413988.0.1296872622]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pHeader
    #child: pContent
  ]
  Properties:
  [
    Image: 'WIND_ENGINE_OFFSHORE'
    Title: 'OfflinePlan'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
@@ -7,6 +7,12 @@
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogUpperLimitOfTransferCapacity );
      ApplicationMacroPlanner.ShowFormModal( dlg );
    *]
    GroupServerCalls: false
  }
}
_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/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/OfflinePlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormOfflinePlan
      {
        title: 'QMacroPlanner::FormOfflinePlan'
        shown: true
        componentID: 'QMacroPlanner::FormOfflinePlan'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormOfflinePlan_pHeader
          {
            sizeRatio: 1
          }
          FormOfflinePlan_pContent
          {
            sizeRatio: 1
          }
          FormOfflinePlan_MatrixEditor951
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 36
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormOfflinePlan.MatrixEditor951'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_Value
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Value'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'ColumnDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID';datamember:'Type'"
                  }
                }
              }
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'JACKHAMMER'
    description: ''
  }
  formatversion: 2
  id: 'OfflinePlan'
  name: 'OfflinePlan'
  isglobal: false
  isroot: true
}
_var/_Main/ProjSettings/EditorTC/Views/³µµÀÕû°à·ÖÎö_[413988.0.1301140601].vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,500 @@
# Quintiq GUI View File
# Version 3.0
PROPERTIES
{
  KEY := [413988.0.1301140601]
  NAME := '车道整班分析'
  HELPPAGE := ''
  PARENTKEY := [100676.19.414142820]
  DOMAIN := 'MacroPlanner'
  FOCUSED := [100828.0.145642700]
  MUSTREADMDSSETTINGS := false
  ISPERSONAL false
  OWNERNAME 'quintiq/lihongji'
  ICONIMAGE 'WINDOWS'
  CREATIONDATETIME '2024-06-28T13:59:36'
  CREATIONUSER 'quintiq/lihongji'
  UPDATEDATETIME '2024-06-28T13:59:54'
  UPDATEUSER 'quintiq/lihongji'
  LASTACCESSDATE '2024-06-28'
  VIEWSCOPE 0
}
AUTHORIZATIONS
{
  OPEN
  {
    AUTHORIZATIONS
    {
    }
  }
  EDIT
  {
    AUTHORIZATIONS
    {
    }
  }
}
MDSINFO
{
  LOCAL ''
  GLOBAL ''
}
INFOOBJECT
{
  KEY [892.10.659695]
  OBJECTTYPE Application // appEditor
  INFOOBJECTS
  {
   INFOOBJECT
   {
    KEY [892.10.659696]
    OBJECTTYPE Frame // Frame
    CONTENTS
    {
     State := maximized
     (896,312,1024,768)
     WorkspaceLocation := TreePath[R0.8;B0.0061;]
    }
    INFOOBJECTS
    {
     INFOOBJECT
     {
      KEY [103784.990.795900613]
      OBJECTTYPE ValueHolder // vhSearchHistory
      CONTENTS
      {
       Value ''
      }
     }
     INFOOBJECT
     {
      KEY [10786.1.820220316]
      OBJECTTYPE ValueHolder // vhLoadingErrCount
      CONTENTS
      {
       Value '0'
      }
     }
     INFOOBJECT
     {
      KEY [10786.1.820229990]
      OBJECTTYPE ValueHolder // vhLoadReason
      CONTENTS
      {
       Value 'Startup'
      }
     }
     INFOOBJECT
     {
      KEY [10786.1.821405088]
      OBJECTTYPE ValueHolder // vhWriteErrorCount
      CONTENTS
      {
       Value '0'
      }
     }
     INFOOBJECT
     {
      KEY [10786.2.342765638]
      OBJECTTYPE ValueHolder // vhGlobals
      CONTENTS
      {
       Value ''
      }
      BASEINFOOBJECTS
      {
      }
     }
     INFOOBJECT
     {
      KEY [103784.990.815711421]
      SINGLEINSTANCE false
      ID 'Type Details'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmObjectDefinitionBrowser
      CREATETYPE frmObjectDefinitionBrowser
      CONTENTS
      {
       State := normal
       (485,0,400,912)
       DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;B0.5727;]TabIdx[0]Selection[FRONT]
      }
      BASEINFOOBJECTS
      {
      }
      INFOOBJECTS
      {
       INFOOBJECT
       {
        KEY [121142.0.500922030]
        OBJECTTYPE GUIDataSetLevel // dslTypes
        CONTENTS
        {
         Columns
         {
           Definition := [892.10.660027]
           {
             [892.10.660028]
             [644.0.84080945]
           }
           SubTotals := true
           Visible
           {
             Column internal[DataSetDataColumn] [121142.0.501068000]
             {
               Header := 'Name'
               Width := 100
               Subtotals := false
               Specific
               {
                 DataPath := 'Name [1.2.1645]'
               }
             }
             Column internal[DataSetDataColumn] [121142.0.501068001]
             {
               Header := 'BaseTypeName'
               Width := 100
               Subtotals := false
               Specific
               {
                 DataPath := 'BaseTypeName [1.2.2198]'
               }
             }
           }
         }
         DataMemberSort 'SortOrder [1.2.1686]' true true
         ColumnSort [121142.0.501068000] true false
        }
       }
       INFOOBJECT
       {
        KEY [121142.0.500923128]
        OBJECTTYPE List // lstObjectDefinitionBrowser
        CONTENTS
        {
         Quantorrow := false
        }
        INFOOBJECTS
        {
         INFOOBJECT
         {
          KEY [121142.0.500923177]
          OBJECTTYPE GUIDataSetLevel // dslElements
          CONTENTS
          {
           Columns
           {
             Definition := [103784.990.769111502]
             {
               [103784.990.795596828]
               [103784.990.795596827]
             }
             SubTotals := true
             Visible
             {
               Column internal[DataSetDataColumn] [121142.0.501068002]
               {
                 Width := 401
                 SizedByUser := true
                 Subtotals := false
                 Specific
                 {
                   DataPath := 'Outline [1.2.6115]'
                 }
               }
               Column internal[DataSetDataColumn] [121142.0.501068003]
               {
                 Width := 319
                 SizedByUser := true
                 Subtotals := false
                 Specific
                 {
                   DataPath := 'ValueType [1.2.6117]'
                 }
               }
             }
           }
           Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n  <GEBFiltering Key="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Outline1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n        <ColumnID>[121142.0.1058023525]</ColumnID>\n        <BaseName>Outline</BaseName>\n        <Name>Outline</Name>\n        <Title>Outline</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Outline</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Outline1">\n          <ColumnID>[121142.0.1058023525]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n            <ZeroConverter Key="@6">\n              <IsStandard>true</IsStandard>\n              <IsISO>false</IsISO>\n              <IsCustom>false</IsCustom>\n              <ConversionType>0</ConversionType>\n            </ZeroConverter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n  <GEBFiltering Key="@Hide_inherited_elements1" TargetType="internal[UITypeDisplayElementBase]">\n    <CurrentFilter>false</CurrentFilter>\n    <Name>Hide inherited elements</Name>\n    <Active>false</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>1</SortIndex>\n    <GEBFilteringData Key="@7">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Outline2" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n        <ColumnID>[121142.0.507823646]</ColumnID>\n        <BaseName>Outline</BaseName>\n        <Name>Outline</Name>\n        <Title>Outline</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Outline</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@ValueType1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n        <ColumnID>[121142.0.507823661]</ColumnID>\n        <BaseName>ValueType</BaseName>\n        <Name>ValueType</Name>\n        <Title>ValueType</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ValueType</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@IsInherited1" ElementType="internal[UITypeDisplayElementBase]" ValueType="Boolean">\n        <ColumnID>[121142.0.507823701]</ColumnID>\n        <BaseName>IsInherited</BaseName>\n        <Name>IsInherited</Name>\n        <Title>IsInherited</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>IsInherited</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@8">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@9" Column="@Outline2">\n          <ColumnID>[121142.0.507823646]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@10" Column="@ValueType1">\n          <ColumnID>[121142.0.507823661]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@11" Column="@IsInherited1">\n          <ColumnID>[121142.0.507823701]</ColumnID>\n          <GEBFilterColumnMatch Key="@12">\n            <Operation>=</Operation>\n            <Enabled>true</Enabled>\n            <RHSValue>\n              <RHSConstantValue Key="@13">\n                <StringValue></StringValue>\n                <Value>false</Value>\n              </RHSConstantValue>\n            </RHSValue>\n          </GEBFilterColumnMatch>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@14">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n  <GEBFiltering Key="@Hide_empty_groups1" TargetType="internal[UITypeDisplayElementBase]">\n    <CurrentFilter>false</CurrentFilter>\n    <Name>Hide empty groups</Name>\n    <Active>false</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>2</SortIndex>\n    <GEBFilteringData Key="@15">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Outline3" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n        <ColumnID>[121142.0.507823747]</ColumnID>\n        <BaseName>Outline</BaseName>\n        <Name>Outline</Name>\n        <Title>Outline</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Outline</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@16">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@17" Column="@Outline3">\n          <ColumnID>[121142.0.507823747]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@18">\n          <ExpressionText>object.istype( UITypeDisplayNewElementPlaceholder )\nor object.Group().ModeledElementsSize() &gt; 0</ExpressionText>\n          <Converter>\n            <ZeroConverter Key="@19">\n              <IsStandard>true</IsStandard>\n              <IsISO>false</IsISO>\n              <IsCustom>false</IsCustom>\n              <ConversionType>0</ConversionType>\n            </ZeroConverter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n  <GEBFiltering Key="@Hide_coded_elements1" TargetType="internal[UITypeDisplayElementBase]">\n    <CurrentFilter>false</CurrentFilter>\n    <Name>Hide coded elements</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>3</SortIndex>\n    <GEBFilteringData Key="@20">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Outline4" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n        <ColumnID>[121142.0.1058023525]</ColumnID>\n        <BaseName>Outline</BaseName>\n        <Name>Outline</Name>\n        <Title>Outline</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Outline</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@21">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@22" Column="@Outline4">\n          <ColumnID>[121142.0.1058023525]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@23">\n          <ExpressionText>( object.istype( UITypeDisplayElement ) and object.Kind() = &quot;RELATION&quot; ) or\nobject.istype( UITypeDisplayGroupHeader ) or\nobject.istype( UITypeDisplayNewElementPlaceholder ) or\n( object.istype( UIModeledTypeDisplayElement ) and\n  not isnull(object.astype( UIModeledTypeDisplayElement ).ObjectModelObject()) and\n  object.astype( UIModeledTypeDisplayElement ).ObjectModelObject().Visible() )</ExpressionText>\n          <Converter>\n            <ZeroConverter Key="@24">\n              <IsStandard>true</IsStandard>\n              <IsISO>false</IsISO>\n              <IsCustom>false</IsCustom>\n              <ConversionType>0</ConversionType>\n            </ZeroConverter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
           DataMemberSort 'Index [1.2.7326]' true true
           ColumnSort [121142.0.501068002] true false
          }
          INFOOBJECTS
          {
           INFOOBJECT
           {
            KEY [121142.0.500923178]
            OBJECTTYPE GUIDataSetLevel // dslOverrides
            CONTENTS
            {
             Columns
             {
               Definition := [103784.990.1153959078]
               {
                 [103784.990.1159008565]
               }
               SubTotals := true
               Visible
               {
                 Column internal[DataSetDataColumn] [121142.0.501068004]
                 {
                   Width := 100
                   Subtotals := false
                   Specific
                   {
                     DataPath := 'ObjectModelObject [1.3.4850]|TargetType [1.2.1730]'
                   }
                 }
               }
             }
            }
           }
          }
         }
        }
       }
      }
     }
     INFOOBJECT
     {
      KEY [136402.0.98084624]
      SINGLEINSTANCE false
      ID 'Types per Module'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmTypesByModule
      CREATETYPE frmTypesByModule
      CONTENTS
      {
       State := normal
       (0,0,0,0)
       DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;T0.4273;]TabIdx[0]Selection[FRONT]
      }
      BASEINFOOBJECTS
      {
       BASEINFOOBJECT
       {
        KEY [136402.0.98084624]
        OBJECTTYPE GUIComponent // frmTypesByModule
        COMPONENTDATA
        {
         [136402.0.98084624]:[103784.990.728734692]:[892.10.659816]:[514.0.129466]:[892.10.659835] STR 'true'
        }
       }
      }
      INFOOBJECTS
      {
       INFOOBJECT
       {
        KEY [121142.0.1211769996]
        OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel776
        CONTENTS
        {
         Columns
         {
           Definition := [121142.0.950060792]
           {
             [121142.0.950062702]
           }
           SubTotals := true
           Visible
           {
             Column internal[DataSetDataColumn] [121142.0.950062702]
             {
               Width := 100
               Subtotals := false
               Specific
               {
                 DataPath := 'Name [1.2.6744]'
               }
             }
           }
         }
         ColumnSort [121142.0.950062702] true false
        }
       }
       INFOOBJECT
       {
        KEY [103784.990.728734692]
        OBJECTTYPE List // ListTypes
        CONTENTS
        {
         Quantorrow := false
        }
        INFOOBJECTS
        {
         INFOOBJECT
         {
          KEY [101180.2.890701323]
          OBJECTTYPE ValueHolder // ValueHolder
          CONTENTS
          {
           Value 'false'
          }
         }
         INFOOBJECT
         {
          KEY [10786.2.342808981]
          OBJECTTYPE ValueHolder // vhGlobals
          CONTENTS
          {
           Value ''
          }
         }
         INFOOBJECT
         {
          KEY [892.10.659838]
          OBJECTTYPE GUIDataSetLevel // dslTypes
          CONTENTS
          {
           Columns
           {
             Definition := [121142.0.950060792]
             {
               [121142.0.950062702]
             }
             SubTotals := true
             Visible
             {
               Column internal[DataSetDataColumn] [121142.0.950062702]
               {
                 Width := 367
                 SizedByUser := true
                 Subtotals := false
                 Specific
                 {
                   DataPath := 'Name [1.2.6744]'
                 }
               }
             }
           }
           DataMemberSort 'IsDomain [1.2.6747]' false true
           DataMemberSort 'IsSystemLibrary [1.2.7907]' true true
           DataMemberSort 'IsAvailable [1.2.7451]' false true
           ColumnSort [121142.0.950062702] true false
          }
          INFOOBJECTS
          {
           INFOOBJECT
           {
            KEY [136402.0.98091406]
            OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelTypes
            CONTENTS
            {
             Columns
             {
               Definition := [103784.990.1535755633]
               {
                 [103784.990.1535759199]
               }
               SubTotals := true
               Visible
               {
                 Column internal[DataSetDataColumn] [103784.990.1535759199]
                 {
                   Width := 375
                   SizedByUser := true
                   Subtotals := false
                   Specific
                   {
                     DataPath := 'Name [1.2.1645]'
                   }
                 }
               }
             }
             Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[ObjectModelType]">\n  <GEBFiltering Key="@Default_Filter1" TargetType="internal[ObjectModelType]">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Name1" ElementType="internal[ObjectModelType]" ValueType="String">\n        <ColumnID>[413988.0.1111730433]</ColumnID>\n        <BaseName>Name</BaseName>\n        <Name>Name</Name>\n        <Title>Name</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Name1">\n          <ColumnID>[413988.0.1111730433]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
             DataMemberSort 'SortOrder [1.2.1686]' true true
             ColumnSort [103784.990.1535759199] true false
            }
            INFOOBJECTS
            {
             INFOOBJECT
             {
              KEY [135566.0.318964952]
              OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSpecializations
              CONTENTS
              {
               Columns
               {
                 Definition := [103784.990.1535755633]
                 {
                   [103784.990.1535759199]
                 }
                 SubTotals := true
                 Visible
                 {
                   Column internal[DataSetDataColumn] [103784.990.1535759199]
                   {
                     Width := 100
                     Subtotals := false
                     Specific
                     {
                       DataPath := 'Name [1.2.1645]'
                     }
                   }
                 }
               }
               DataMemberSort 'SortOrder [1.2.1686]' true true
               ColumnSort [103784.990.1535759199] true false
              }
             }
            }
           }
          }
         }
        }
       }
      }
     }
     INFOOBJECT
     {
      KEY [121142.0.36340892]
      SINGLEINSTANCE false
      ID 'Model Overview'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmModelOverview
      CREATETYPE frmModelOverview
      CONTENTS
      {
       State := normal
       (0,0,0,0)
       DockableLocation := Station[MAIN]State[NORM]TreePath[R0.8;T0.9939;]TabIdx[0]Selection[FRONT]
      }
      BASEINFOOBJECTS
      {
       BASEINFOOBJECT
       {
        KEY [121142.0.36340892]
        OBJECTTYPE GUIContainerComponent // frmModelOverview
        COMPONENTDATA
        {
         [121142.0.36340892]:[121142.0.37512339]:[121142.0.40573788] STR 'PeriodTaskOperation:Unit:PeriodTaskLaneLeg:Operation:MacroPlan:Lane:PeriodTask_MP:NewSupply:LaneLeg:UnitPeriod:DependentDemand:ProductInTrip:Trip#601:266:-40:657:238:266:189:211:497:17:178:464:513#168:437:163:276:350:529:165:274:436:277:59:59:244#219:54:197:109:109:54:153:109:87:120:175:153:54#26:26:26:26:26:26:26:26:26:26:26:26:26'
         [121142.0.36340892]:[121142.0.37512339]:[121142.0.48706989]:[121142.0.48706990]:[121142.0.48809938] STR 'true'
        }
       }
      }
      INFOOBJECTS
      {
       INFOOBJECT
       {
        KEY [121142.0.37512339]
        OBJECTTYPE CustomDrawComponent // customDraw
        CONTENTS
        {
         ZoomX 1.331
         ZoomY 1.331
        }
        INFOOBJECTS
        {
        }
       }
      }
     }
    }
   }
  }
  COMPONENTDATA
  {
   [892.10.659695]:[892.10.659696]:[103784.990.702401639] STR 'MacroPlanner'
   [892.10.659695]:[892.10.659696]:[892.10.659800]:[892.10.1501977] STR '0'
  }
}
_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