lihongji
2024-07-15 035ff4e0ea0e65da8631e940d9dd2312d3c38dee
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已添加200个文件
已修改9个文件
已删除1个文件
4382 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineCell_Column_MachiningPipelineColumn_Cell.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineCell_Row_MachiningPipelineRow_Cell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineColumn_Report_MachiningPipelineReport_Column.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineReport_Source_MachiningPipelineSource_Report.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineRow_Report_MachiningPipelineReport_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCAssemblyPlanQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCProductionQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCTransferQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLAssemblyPlanQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLProductionQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLTransferQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_TotalInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Function_CalcTotalInventoryQty.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Method_Add.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Method_Copy.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/StaticMethod_Initialize.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCAssemnlyUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCProductionUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLAssemnlyUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLProductionUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod#325.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_MatrixEditorTable#870.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelHeader#832.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelPeriod.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelSearch#957.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTable#141.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTimeUnit#778.def 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixEditorActionBarPageTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixeditorContextMenuTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSummaryExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineCellValue_Column_EnginePipelineColumn_CellValue
{
  #keys: '1[415136.0.886711679]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.886711681][415136.0.886711680][415136.0.886711682]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineCellValue
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CellValue
  {
    #keys: '3[415136.0.886711684][415136.0.886711683][415136.0.886711685]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineColumn
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_EnginePipelineCell_Production_EnginePipelineProduction_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineCell_Production_EnginePipelineProduction_Cell
{
  #keys: '1[415136.0.883590181]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Production
  {
    #keys: '3[415136.0.883590183][415136.0.883590182][415136.0.883590184]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineCell
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Cell
  {
    #keys: '3[415136.0.883590186][415136.0.883590185][415136.0.883590187]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineProduction
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineColumn_Cell_EnginePipelineCell_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineColumn_Cell_EnginePipelineCell_Column
{
  #keys: '1[415136.0.883590111]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.883590130][415136.0.883590124][415136.0.883590131][415136.0.883590125][415136.0.883590132][415136.0.883590126][415136.0.883590133][415136.0.883590127][415136.0.883590134][415136.0.883590128][415136.0.883590135][415136.0.883590129]'
    SequenceElementSuffix: 'CellInColumn'
    SequenceSuffix: 'CellInColumn'
  }
  RelationSide.LeftSide Cell
  {
    #keys: '3[415136.0.883590113][415136.0.883590112][415136.0.883590114]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineColumn
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Column
  {
    #keys: '3[415136.0.883590116][415136.0.883590115][415136.0.883590117]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineDemand_Cell_EnginePipelineCell_Demand.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineDemand_Cell_EnginePipelineCell_Demand
{
  #keys: '1[415136.0.883590237]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Cell
  {
    #keys: '3[415136.0.883590239][415136.0.883590238][415136.0.883590240]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineDemand
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Demand
  {
    #keys: '3[415136.0.883590242][415136.0.883590241][415136.0.883590243]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineCell
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_EnginePipelineReport_Column_EnginePipelineColumn_Report.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineReport_Column_EnginePipelineColumn_Report
{
  #keys: '1[415136.0.883590042]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.883590073][415136.0.883590067][415136.0.883590074][415136.0.883590068][415136.0.883590075][415136.0.883590069][415136.0.883590076][415136.0.883590070][415136.0.883590077][415136.0.883590071][415136.0.883590078][415136.0.883590072]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.883590044][415136.0.883590043][415136.0.883590045]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineReport
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.883590047][415136.0.883590046][415136.0.883590048]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineReport_Row_EnginePipelineRow_Report.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineReport_Row_EnginePipelineRow_Report
{
  #keys: '1[415136.0.883590084]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Row
  {
    #keys: '3[415136.0.883590086][415136.0.883590085][415136.0.883590087]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineReport
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.883590089][415136.0.883590088][415136.0.883590090]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineRow_CellValue_EnginePipelineCellValue_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineRow_CellValue_EnginePipelineCellValue_Row
{
  #keys: '1[415136.0.886711663]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide CellValue
  {
    #keys: '3[415136.0.886711665][415136.0.886711664][415136.0.886711666]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Row
  {
    #keys: '3[415136.0.886711668][415136.0.886711667][415136.0.886711669]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineCellValue
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineRow_Cell_EnginePipelineCell_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineRow_Cell_EnginePipelineCell_Row
{
  #keys: '1[415136.0.883590141]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Cell
  {
    #keys: '3[415136.0.883590143][415136.0.883590142][415136.0.883590144]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Row
  {
    #keys: '3[415136.0.883590146][415136.0.883590145][415136.0.883590147]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineSource_MacroPlan_MacroPlan_EnginePipelineSource
{
  #keys: '1[415136.0.883574775]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.883574777][415136.0.883574776][415136.0.883574778]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide EnginePipelineSource
  {
    #keys: '3[415136.0.883574780][415136.0.883574779][415136.0.883574781]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_EnginePipelineSource_Report_EnginePipelineReport_Source.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineSource_Report_EnginePipelineReport_Source
{
  #keys: '1[415136.0.883590029]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Report
  {
    #keys: '3[415136.0.883590031][415136.0.883590030][415136.0.883590032]'
    Cardinality: '1toN'
    ObjectDefinition: EnginePipelineSource
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Source
  {
    #keys: '3[415136.0.883590034][415136.0.883590033][415136.0.883590035]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineReport
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineSource_Search_EnginePipelineSearch_Source
{
  #keys: '1[415136.0.883574788]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Search
  {
    #keys: '3[415136.0.883574790][415136.0.883574789][415136.0.883574791]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineSource
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Source
  {
    #keys: '3[415136.0.883574793][415136.0.883574792][415136.0.883574794]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineSearch
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineCell_Column_MachiningPipelineColumn_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineCell_Column_MachiningPipelineColumn_Cell
{
  #keys: '1[415136.0.894469828]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.894469847][415136.0.894469841][415136.0.894469848][415136.0.894469842][415136.0.894469849][415136.0.894469843][415136.0.894469850][415136.0.894469844][415136.0.894469851][415136.0.894469845][415136.0.894469852][415136.0.894469846]'
    SequenceElementSuffix: 'CellInColumn'
    SequenceSuffix: 'CellInColumn'
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.894469830][415136.0.894469829][415136.0.894469831]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Cell
  {
    #keys: '3[415136.0.894469833][415136.0.894469832][415136.0.894469834]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineColumn
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineCell_Row_MachiningPipelineRow_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineCell_Row_MachiningPipelineRow_Cell
{
  #keys: '1[415136.0.894469858]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Row
  {
    #keys: '3[415136.0.894469860][415136.0.894469859][415136.0.894469861]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Cell
  {
    #keys: '3[415136.0.894469863][415136.0.894469862][415136.0.894469864]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineColumn_Report_MachiningPipelineReport_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineColumn_Report_MachiningPipelineReport_Column
{
  #keys: '1[415136.0.894481255]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.894481277][415136.0.894481271][415136.0.894481278][415136.0.894481272][415136.0.894481279][415136.0.894481273][415136.0.894481280][415136.0.894481274][415136.0.894481281][415136.0.894481275][415136.0.894481282][415136.0.894481276]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
  }
  RelationSide.LeftSide Report
  {
    #keys: '3[415136.0.894481257][415136.0.894481256][415136.0.894481258]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Column
  {
    #keys: '3[415136.0.894481260][415136.0.894481259][415136.0.894481261]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineReport_Source_MachiningPipelineSource_Report.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineReport_Source_MachiningPipelineSource_Report
{
  #keys: '1[415136.0.894481242]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Source
  {
    #keys: '3[415136.0.894481244][415136.0.894481243][415136.0.894481245]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.894481247][415136.0.894481246][415136.0.894481248]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineRow_Report_MachiningPipelineReport_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineRow_Report_MachiningPipelineReport_Row
{
  #keys: '1[415136.0.894481229]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Report
  {
    #keys: '3[415136.0.894481231][415136.0.894481230][415136.0.894481232]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Row
  {
    #keys: '3[415136.0.894481234][415136.0.894481233][415136.0.894481235]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineSearch_Source_MachiningPipelineSource_Search
{
  #keys: '1[415136.0.894481216]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Source
  {
    #keys: '3[415136.0.894481218][415136.0.894481217][415136.0.894481219]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Search
  {
    #keys: '3[415136.0.894481221][415136.0.894481220][415136.0.894481222]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource
{
  #keys: '1[415136.0.894481203]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.894481205][415136.0.894481204][415136.0.894481206]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachiningPipelineSource
  {
    #keys: '3[415136.0.894481208][415136.0.894481207][415136.0.894481209]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSalary (
  const Unit owner,
  const OvertimeMultiplier overtimeMutiplier,
  Real overtime
) const as Real
{
  TextBody:
  [*
    // rislai Jul-10-2024 (created)
    value := 0.0;
    salaryByEmployeeTypeTree := NamedValueTree::Create();
    traverse( owner,EmployeeCost,cost ){
      salaryByEmployeeTypeHandle := salaryByEmployeeTypeTree.GetHandle( cost.EmployeeType().Name() );
      salary := guard( salaryByEmployeeTypeTree.Root().Child( salaryByEmployeeTypeHandle ),null( NamedValue ));
      // äº§çº¿äººå‘˜ç±»åˆ«1*人数*基本工资1/21.75/8*工作日加班时长*倍率1
      temp_salary := cost.EmployeeNumber() * cost.BaseSalary() / owner.MacroPlan().StandardWorkingDay() / 8 * overtime * overtimeMutiplier.Multiplier();
      if( not isnull( salary )){
        salary.SetValue( salary.GetValueAsReal() + temp_salary );
      }else{
        salaryByEmployeeTypeTree.Root().AddChild( salaryByEmployeeTypeHandle,temp_salary );
      }
      value := value + temp_salary;
    }
    return value;
  *]
}
_Main/BL/Type_EnginePipelineCell/Attribute_DemandQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DemandQuantity
{
  #keys: '3[415136.0.883574849][415136.0.883574848][415136.0.883574850]'
  Description: '需求'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineCell/Attribute_InventoryQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryQuantity
{
  #keys: '3[415136.0.883574836][415136.0.883574835][415136.0.883574837]'
  Description: '库存'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineCell/Attribute_ProductionQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionQuantity
{
  #keys: '3[415136.0.883574826][415136.0.883574825][415136.0.883574827]'
  Description: '生产'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineCell/Function_CalcDemandQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcDemandQuantity
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-9-2024 (created)
    value := sum( this, Demand, demand, demand.Quantity() );
    this.DemandQuantity( value );
  *]
}
_Main/BL/Type_EnginePipelineCell/Function_CalcProductionQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Function CalcProductionQuantity
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-9-2024 (created)
    production := this.Production();
    value      := [Real]0;
    if( not isnull( production ) ){
      value    := production.CCProduction() + production.DLProduction();
    }
    this.ProductionQuantity( value );
  *]
}
_Main/BL/Type_EnginePipelineCell/Method_Copy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method Copy (
  EnginePipelineColumn column
) as EnginePipelineCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-9-2024 (created)
    cell := column.Cell( relnew, InventoryQuantity := this.InventoryQuantity() );
    traverse( this, Demand, demand ){
      cell.Demand( relnew, EngineType := demand.EngineType(), Model := demand.Model(), Period := demand.Period(), Quantity := demand.Quantity() );
    }
    production := this.Production();
    cell.Production( relnew, EngineType := production.EngineType(), Period := production.Period(), DLProduction := production.DLProduction(), CCProduction := production.CCProduction() );
    return cell;
  *]
}
_Main/BL/Type_EnginePipelineCell/_ROOT_Type_EnginePipelineCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineCell
{
  #keys: '5[415136.0.883574656][415136.0.883574654][0.0.0][415136.0.883574655][415136.0.883574657]'
  BaseType: Object
  Description: '发动机管线报表单元格'
  StructuredName: 'EnginePipelineCells'
}
_Main/BL/Type_EnginePipelineCellValue/Attribute_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Value
{
  #keys: '3[415136.0.886711654][415136.0.886711653][415136.0.886711655]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineCellValue/DefaultValue_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Value
}
_Main/BL/Type_EnginePipelineCellValue/_ROOT_Type_EnginePipelineCellValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineCellValue
{
  #keys: '5[415136.0.886711642][415136.0.886711640][0.0.0][415136.0.886711641][415136.0.886711643]'
  BaseType: Object
  Description: '发动机管线报表显示单元格'
  StructuredName: 'EnginePipelineCellValues'
}
_Main/BL/Type_EnginePipelineColumn/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[415136.0.883574675][415136.0.883574674][415136.0.883574676]'
  ValueType: Number
}
_Main/BL/Type_EnginePipelineColumn/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.883574678][415136.0.883574677][415136.0.883574679]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineColumn/Attribute_Period.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Period
{
  #keys: '3[415136.0.883574681][415136.0.883574680][415136.0.883574682]'
  ValueType: Date
}
_Main/BL/Type_EnginePipelineColumn/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.883590099][415136.0.883590098][415136.0.883590100]'
  Description: '日期类型'
  ValueType: String
}
_Main/BL/Type_EnginePipelineColumn/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_EnginePipelineColumn/Function_CalcIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIndex
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-21-2024 (created)
    value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
    this.Index( value );
  *]
}
_Main/BL/Type_EnginePipelineColumn/_ROOT_Type_EnginePipelineColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineColumn
{
  #keys: '5[415136.0.883574672][415136.0.883574670][0.0.0][415136.0.883574671][415136.0.883574673]'
  BaseType: Object
  Description: '发动机管线报表列'
  StructuredName: 'EnginePipelineColumns'
}
_Main/BL/Type_EnginePipelineDemand/Attribute_EngineType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EngineType
{
  #keys: '3[415136.0.883590198][415136.0.883590197][415136.0.883590199]'
  Description: '发动机型号'
  ValueType: String
}
_Main/BL/Type_EnginePipelineDemand/Attribute_Model.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Model
{
  #keys: '3[415136.0.883590218][415136.0.883590217][415136.0.883590219]'
  Description: '车型'
  ValueType: String
}
_Main/BL/Type_EnginePipelineDemand/Attribute_Period.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Period
{
  #keys: '3[415136.0.883590208][415136.0.883590207][415136.0.883590209]'
  Description: '日期'
  ValueType: Date
}
_Main/BL/Type_EnginePipelineDemand/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[415136.0.883590228][415136.0.883590227][415136.0.883590229]'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineDemand/_ROOT_Type_EnginePipelineDemand.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineDemand
{
  #keys: '5[415136.0.883574869][415136.0.883574867][0.0.0][415136.0.883574868][415136.0.883574870]'
  BaseType: Object
  Description: '需求子表'
  StructuredName: 'EnginePipelineDemands'
}
_Main/BL/Type_EnginePipelineProduction/Attribute_CCProduction.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCProduction
{
  #keys: '3[415136.0.883590169][415136.0.883590168][415136.0.883590170]'
  Description: '长春产量'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineProduction/Attribute_DLProduction.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLProduction
{
  #keys: '3[415136.0.883574893][415136.0.883574892][415136.0.883574894]'
  Description: '大连产量'
  ValueType: Real
}
_Main/BL/Type_EnginePipelineProduction/Attribute_EngineType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EngineType
{
  #keys: '3[415136.0.883574873][415136.0.883574872][415136.0.883574874]'
  Description: '发动机型号'
  ValueType: String
}
_Main/BL/Type_EnginePipelineProduction/Attribute_Period.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Period
{
  #keys: '3[415136.0.883574883][415136.0.883574882][415136.0.883574884]'
  Description: '日期'
  ValueType: Date
}
_Main/BL/Type_EnginePipelineProduction/_ROOT_Type_EnginePipelineProduction.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineProduction
{
  #keys: '5[415136.0.883574864][415136.0.883574862][0.0.0][415136.0.883574863][415136.0.883574865]'
  BaseType: Object
  Description: '生产子表'
  StructuredName: 'EnginePipelineProductions'
}
_Main/BL/Type_EnginePipelineReport/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[415136.0.883574713][415136.0.883574712][415136.0.883574714]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_EnginePipelineReport/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[415136.0.883574719][415136.0.883574718][415136.0.883574720]'
  ValueType: Boolean
}
_Main/BL/Type_EnginePipelineReport/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.883574722][415136.0.883574721][415136.0.883574723]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_EnginePipelineReport/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_EnginePipelineReport/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
Method Clear (
  String timeunit,
  Date startdate,
  Date enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    this.Column( relflush );
    this.Row( relflush );
    this.Column( relnew, Name := '', TimeUnit := timeunit );
    this.Column( relnew, Name := '', TimeUnit := timeunit );
    this.GenerateColumn( this.Source().MacroPlan(), timeunit, startdate, enddate );
  *]
}
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  EnginePipelineSearch search,
  Product_MPs products
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    table                   := selectobject( this, Source.Report, report, not report.IsShow() );
    //清空之前存储的显示数据
    this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
    Transaction::Transaction().Propagate( attribute( EnginePipelineColumn, Index ) );
    Transaction::Transaction().Propagate( attribute( EnginePipelineCell, ProductionQuantity ) );
    Transaction::Transaction().Propagate( attribute( EnginePipelineCell, DemandQuantity ) );
    //过滤后的产品id
    productids              := selectuniquevalues( products, Elements, product, true, product.ID() );
    rows                    := selectsortedset( table, Row, row, row.RowNr() );
    //显示列
    productcolumn           := selectobject( this, Column, column, column.Index() = 0 );
    attricolumn             := selectobject( this, Column, column, column.Index() = 1 );
    models                  := selectuniquevalues( table, Column.Cell.Demand, demand, demand.Model() );
    cellnr                  := 5 + models.Size();
    //合计行
    sumrowproduction        := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '生产', rows.Size() * cellnr, true );
    sumrowdlproduction      := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '大连产量', sumrowproduction.RowNr() + 1, false );
    sumrowccproduction      := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '长春产量', sumrowproduction.RowNr() + 2, false );
    sumrowdemand            := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '需求', sumrowproduction.RowNr() + 3, false );
    rowno                   := sumrowproduction.RowNr() + 4;
    traverse( models, Elements, model ){
      EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', model, rowno, false );
      rowno                 := rowno + 1;
    }
    sumrowinventory         := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '库存', rowno, false );
    //行计数
    rownr                   := 0;
    traverse( rows, Elements, row, productids.Find( row.Name() ) >= 0 ){
      showrowproduction   := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '生产', rownr, true );;
      showrowdlproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '大连产量', rownr + 1, false );
      showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '长春产量', rownr + 2, false );
      showrowdemand       := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '需求', rownr + 3, false );
      rownr               := rownr + 4;
      traverse( models, Elements, model ){
        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), model, rownr, false );
        rownr             := rownr + 1;
      }
      showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '库存', rownr, false );
      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
        column            := selectobject( this, Column, column, column.Name() = cell.Column().Name() and column.TimeUnit() = search.TimeUnit() );
        if( not isnull( column ) ){
          //生产
          production              := column.CellValue( relnew, Value := [String]cell.ProductionQuantity() );
          showrowproduction.CellValue( relinsert, production );
          sumproduction           := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
          if( isnull( sumproduction ) ){
            sumproduction         := column.CellValue( relnew, Value := [String]0 );
            sumrowproduction.CellValue( relinsert, sumproduction );
          }
          sumproduction.Value( [String]( [Real]sumproduction.Value() + cell.ProductionQuantity() ) );
          //大连产量
          dlproductionquantity     := guard( cell.Production().DLProduction(), 0 );
          dlproduction             := column.CellValue( relnew, Value := [String]dlproductionquantity );
          showrowdlproduction.CellValue( relinsert, dlproduction );
          sumdlproduction          := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
          if( isnull( sumdlproduction ) ){
            sumdlproduction        := column.CellValue( relnew, Value := [String]0 );
            sumrowdlproduction.CellValue( relinsert, sumdlproduction );
          }
          sumdlproduction.Value( [String]( [Real]sumdlproduction.Value() + dlproductionquantity ) );
          //长春产量
          ccproductionquantity     := guard( cell.Production().CCProduction(), 0 );
          ccproduction             := column.CellValue( relnew, Value := [String]ccproductionquantity );
          showrowccproduction.CellValue( relinsert, ccproduction );
          sumccproduction          := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
          if( isnull( sumccproduction ) ){
            sumccproduction        := column.CellValue( relnew, Value := [String]0 );
            sumrowccproduction.CellValue( relinsert, sumccproduction );
          }
          sumccproduction.Value( [String]( [Real]sumccproduction.Value() + ccproductionquantity ) );
          //需求
          totaldemand              := column.CellValue( relnew, Value := [String]cell.DemandQuantity() );
          showrowdemand.CellValue( relinsert, totaldemand );
          sumdemand                := selectobject( column, CellValue, c, c.Row() = sumrowdemand );
          if( isnull( sumdemand ) ){
            sumdemand              := column.CellValue( relnew, Value := [String]0 );
            sumrowdemand.CellValue( relinsert, sumdemand );
          }
          sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
          traverse( cell, Demand, demand ){
            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
            if( not isnull( demandrow ) ){
              demandcell             := column.CellValue( relnew, Value := [String]demand.Quantity() );
              demandrow.CellValue( relinsert, demandcell );
            }
            sumdemandcell          := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
            if( isnull( sumdemandcell ) ){
              sumdemandcell        := column.CellValue( relnew, Value := [String]0 );
              sumdemandrow.CellValue( relinsert, sumdemandcell );
            }
            sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demand.Quantity() ) );
          }
          for( demandr := showrowdemand.RowNr() + 1; demandr < showrowinventory.RowNr(); demandr := demandr + 1 ){
            demandrow              := selectobject( this, Row, r, r.RowNr() = demandr );
            if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
              demandcell           := column.CellValue( relnew, Value := '' );
              demandrow.CellValue( relinsert, demandcell );
            }
          }
          //库存
          inventory                := column.CellValue( relnew, Value := [String]cell.InventoryQuantity() );
          showrowinventory.CellValue( relinsert, inventory );
          suminventory             := selectobject( column, CellValue, c, c.Row() = sumrowinventory );
          if( isnull( suminventory ) ){
            suminventory           := column.CellValue( relnew, Value := [String]0 );
            sumrowinventory.CellValue( relinsert, suminventory );
          }
          suminventory.Value( [String]( [Real]suminventory.Value() + cell.InventoryQuantity() ) );
        }
      }
    }
    traverse( this, Column, column ){
      for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr );
        if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
          demandcell           := column.CellValue( relnew, Value := '' );
          demandrow.CellValue( relinsert, demandcell );
        }
      }
    }
  *]
}
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  MacroPlan owner,
  String timeunit,
  Date startdate,
  Date enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //查询日期返回需要在计划日期之内
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
              and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
                    or period.TimeUnit() = timeunit ) ){
      periodtime := period.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
    }
  *]
}
_Main/BL/Type_EnginePipelineReport/Method_GetRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  String product
) as EnginePipelineRow
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    row := selectobject( this, Row, row, row.Name() = product );
    if( isnull( row ) ){
      row := this.Row( relnew, Name := product );
      //初始化单元格
      row.InitializeCell( this );
    }
    return row;
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultAllUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultAllUnit () const declarative as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '<All>';
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultName () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Machining pipelines';
  *]
}
_Main/BL/Type_EnginePipelineReport/_ROOT_Type_EnginePipelineReport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineReport
{
  #keys: '5[415136.0.883574710][415136.0.883574708][0.0.0][415136.0.883574709][415136.0.883574711]'
  BaseType: Object
  Description: '发动机管线报表'
  StructuredName: 'EnginePipelineReports'
}
_Main/BL/Type_EnginePipelineRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.883574695][415136.0.883574694][415136.0.883574696]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[415136.0.883574698][415136.0.883574697][415136.0.883574699]'
  ValueType: Number
}
_Main/BL/Type_EnginePipelineRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_EnginePipelineRow/Method_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  EnginePipelineColumn column
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := column.Cell( relnew, InventoryQuantity := 0 );
    this.Cell( relinsert, cell );
  *]
}
_Main/BL/Type_EnginePipelineRow/Method_InitializeCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell (
  EnginePipelineReport table
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    traverse( table, Column, column ){
      this.Initialize( column );
    }
  *]
}
_Main/BL/Type_EnginePipelineRow/Method_SetCellDemandValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
Method SetCellDemandValue (
  EnginePipelineColumn column,
  String segment,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    demand := selectobject( cell, Demand, demand, demand.EngineType() = cell.Row().Name() and demand.Model() = segment and demand.Period() = column.Period() );
    if( isnull( demand ) ){
      demand := cell.Demand( relnew, EngineType := cell.Row().Name(), Period := column.Period(), Model := segment, Quantity := 0 );
    }
    demand.Quantity( demand.Quantity() + quantity );
  *]
}
_Main/BL/Type_EnginePipelineRow/Method_SetCellInventoryValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method SetCellInventoryValue (
  EnginePipelineColumn column,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    cell.InventoryQuantity( cell.InventoryQuantity() + quantity );
  *]
}
_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Method SetCellProductionValue (
  EnginePipelineColumn column,
  String unit,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    production := cell.Production();
    if( isnull( production ) ){
      production := cell.Production( relnew, EngineType := cell.Row().Name(), Period := column.Period(), DLProduction := 0, CCProduction := 0 );
    }
    if( unit = EnginePipelineReport::GetDefaultCCUnit() ){
      production.CCProduction( production.CCProduction() + quantity );
    }else if( unit = EnginePipelineReport::GetDefaultDLUnit() ){
      production.DLProduction( production.DLProduction() + quantity );
    }
  *]
}
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CraeteCellValueForRow (
  EnginePipelineReport table,
  EnginePipelineColumn productcolumn,
  EnginePipelineColumn attricolumn,
  String productname,
  String attriname,
  Number rownr,
  Boolean isfirst
) as EnginePipelineRow
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-11-2024 (created)
    row           := table.Row( relnew, Name := productname, RowNr := rownr );
    if( not isfirst ){
      productname := '';
    }
    pcell         := productcolumn.CellValue( relnew, Value := productname );
    acell         := attricolumn.CellValue( relnew, Value := attriname );
    row.CellValue( relinsert, pcell );
    row.CellValue( relinsert, acell );
    return row;
  *]
}
_Main/BL/Type_EnginePipelineRow/_ROOT_Type_EnginePipelineRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineRow
{
  #keys: '5[415136.0.883574689][415136.0.883574687][0.0.0][415136.0.883574688][415136.0.883574690]'
  BaseType: Object
  Description: '发动机管线行'
  StructuredName: 'EnginePipelineRows'
}
_Main/BL/Type_EnginePipelineSearch/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[415136.0.883574814][415136.0.883574813][415136.0.883574815]'
  Description: '结束日期'
  ValueType: Date
}
_Main/BL/Type_EnginePipelineSearch/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[415136.0.883574802][415136.0.883574801][415136.0.883574803]'
  Description: '开始时间'
  ValueType: Date
}
_Main/BL/Type_EnginePipelineSearch/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.883590020][415136.0.883590019][415136.0.883590021]'
  Description: '日期类型'
  ValueType: String
}
_Main/BL/Type_EnginePipelineSearch/_ROOT_Type_EnginePipelineSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineSearch
{
  #keys: '5[415136.0.883574730][415136.0.883574728][0.0.0][415136.0.883574729][415136.0.883574731]'
  BaseType: Object
  Description: '发动机管线查询类'
  StructuredName: 'EnginePipelineSearchs'
}
_Main/BL/Type_EnginePipelineSource/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.883574762][415136.0.883574761][415136.0.883574763]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineSource/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载发动机管线数据'
  TextBody:
  [*
    table := selectobject( macroPlan, EnginePipelineSource.Report, table, table.IsShow() );
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    traverse ( table, Column, column ) {
      columnelement := xmlDOM.CreateElement( "column" );
      nameelement   := xmlDOM.CreateElement( "name" );
      typeelement   := xmlDOM.CreateElement( "type" );
      if( column.Index() = 0 ){
        nameelement.TextContent( 'Product' );
      }else if( column.Index() = 1 ){
        nameelement.TextContent( 'Attribute' );
      }else{
        nameelement.TextContent( column.Name() );
      }
      typeelement.TextContent( "String" );
      columnelement.AppendChild( nameelement );
      columnelement.AppendChild( typeelement );
      cells := selectsortedset( column, CellValue, cell, cell.Row().RowNr() );
      traverse ( cells, Elements, c ) {
        cellElement := xmlDOM.CreateElement( "cell" );
        cellElement.SetAttribute( "value", c.Value() );
        columnelement.AppendChild( cellElement );
      }
      tableElement.AppendChild( columnelement );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
    //info( xmlString );
    tableGroupHandle := TableGroupHandle::Create( EnginePipelineReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.EnginePipelineSource( relflush );
    ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
    dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
    source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    products                  := construct( Product_MPs );
    //初始化列
    table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
    //生成生产和库存数据
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
      unit := pisp.StockingPoint_MP().UnitID();
    //  info( unit, pisp.ProductID() );
      //初始化行
      row := table.GetRow( pisp.ProductID() );
      traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
        periodtime := pispip.Period_MP().StartDate();
        periodname := periodtime.Format( "M2/D2/Y" );
    //    info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() );
        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
    //    info( '---------------------------------', isnull( column ), isnull( row ) );
    //    info( '---------------------------------', column.Name(), row.Name() );
        if( unit = ccunit or unit = dlunit ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() );
      }
    }
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
      row := table.GetRow( forecast.ProductID() );
      weekdate   := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
      periodtime := forecast.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
      weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() );
      if( not isnull( column ) ){
        row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() );
      }
      if( not isnull( weekcolumn ) ){
        row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    showtable.Generate( search, products );
  *]
}
_Main/BL/Type_EnginePipelineSource/_ROOT_Type_EnginePipelineSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EnginePipelineSource
{
  #keys: '5[415136.0.883574750][415136.0.883574748][0.0.0][415136.0.883574749][415136.0.883574751]'
  BaseType: Object
  Description: '发动机管线报表'
  StructuredName: 'EnginePipelineSources'
}
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -33,6 +33,7 @@
          traverse( row, InventorySummaryCell, cell, cell.InventorySummaryColumn().TimeUnit() = search.Category() ){
            column   := selectobject( this, InventorySummaryColumn, column, column.Name() = cell.InventorySummaryColumn().Name() );
            
            if( not isnull( column ) ){
            sumcell  := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
            
            showcell := column.InventorySummaryCell( relnew, EndingInventory := cell.EndingInventory(), MinimumInventory := cell.MinimumInventory(), MaximumInventory := cell.MaximumInventory(), AverageInventory := cell.AverageInventory() );
@@ -45,5 +46,6 @@
        }
      }
    }
    }
  *]
}
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: #root
Method SetBreakDayOverTimeDurction (
  String outcome
)
{
  TextBody:
  [*
    // rislai Jul-10-2024 (created)
    overtime := 0.0;
    nextDayOvertime := 0.0;
    if( outcome = "一班" ){
      overtime := 8.5;
      nextDayOvertime := 0.0;
    }else if( outcome = "二班" ){
      overtime := 16;
      nextDayOvertime := 0.5;
    }else if(outcome = "9+9"){
      overtime := 16;
      nextDayOvertime := 2.5;
    }else if(outcome = "10+10"){
      overtime := 16;
      nextDayOvertime := 4.5;
    }else if(outcome = "三班"){
      overtime := 16;
      nextDayOvertime := 8;
    }
    this.RealValue( this.RealValue() + overtime + nextDayOvertime );
  *]
}
_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: #root
Method SetOvertimeDurction (
  String outcome
)
{
  TextBody:
  [*
    // rislai Jul-10-2024 (created)
    overtime := 0.0;
    nextDayOvertime := 0.0;
    if( outcome = "一班" ){
      overtime := 0.5;
      nextDayOvertime := 0.0;
    }else if( outcome = "二班" ){
      overtime := 8;
      nextDayOvertime := 0.5;
    }else if(outcome = "9+9"){
      overtime := 8;
      nextDayOvertime := 2.5;
    }else if(outcome = "10+10"){
      overtime := 8;
      nextDayOvertime := 4.5;
    }else if(outcome = "三班"){
      overtime := 8;
      nextDayOvertime := 8;
    }
    this.RealValue( this.RealValue() + overtime + nextDayOvertime );
  *]
}
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateComprehensiveHoursReport (
  MacroPlan macroPlan,
  const constcontent ShiftPlans shiftPlans,
  RecycleBin owner
) as LocalTable
{
  Description: '综合工时制报表'
  TextBody:
  [*
    // rislai Jul-9-2024 (created)
    table := owner.LocalTable( relnew,Name := "综合工时制报表");
    //column1  := table.LocalColumn( relnew,Name := "工厂" ,Index := 1);
    //column2  := table.LocalColumn( relnew,Name := "产线" ,Index := 2);
    column3  := table.LocalColumn( relnew,Name := "生产天数" ,Index := 3);
    column4  := table.LocalColumn( relnew,Name := "加班/欠工时长" ,Index := 4);
    column5  := table.LocalColumn( relnew,Name := "节假日加班时长" ,Index := 6);
    column6  := table.LocalColumn( relnew,Name := "加班/欠工费" ,Index := 8);
    column7 := table.LocalColumn( relnew,Name := "节假日加班费" ,Index := 10);
    units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
    rows := construct( LocalRows );
    rowIndexTree := NamedValueTree::Create();
    cells := construct( LocalCell_Defaults );
    cellIndexTree := NamedValueTree::Create();
    unitIndexTree := NamedValueTree::Create();
    for( i := 0; i < units.Size(); i++){
      unit := units.Element( i );
      row := table.LocalRow( relnew,Index := table.GetRowIndexCache() ,CustomName := unit.ID());
      rowHandle := rowIndexTree.GetHandle( unit.ID() );
      rows.Add( row );
      rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
      unitIndexTree.Root().AddChild( unitIndexTree.GetHandle( unit.ID() ),i );
    }
    traverse( shiftPlans,Elements,shiftPlan ){
      rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
      row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
      // gongchangCell := LocalCell_Default::GetCell(  rowKey + column1.Name(), cellIndexTree, cells, row, column1 );
      // chanxianxCell := LocalCell_Default::GetCell(  rowKey + column2.Name(), cellIndexTree, cells, row, column2 );
      shengchanCell := LocalCell_Default::GetCell(  rowKey + column3.Name(), cellIndexTree, cells, row, column3 );
      week := shiftPlan.UnitPeriodTime().Period_MP().StartDate().DayOfWeek();
      if( shiftPlan.Outcome() <> "" ){
        shengchanCell.RealValue( shengchanCell.RealValue() + 1 );
        if( shiftPlan.IsHoliday() ){
          // èŠ‚å‡æ—¥åŠ ç­
          jiejiariCell := LocalCell_Default::GetCell(  rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
          jiejiariCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
        }else if( week = 6 or week = 7 ){
          // ä¼‘息日加班
          xiuxiCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
          xiuxiCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
        }else{
          // å¹³æ—¶åŠ ç­
          jiabanCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
          jiabanCell.SetOvertimeDurction( shiftPlan.Outcome() );
        }
      }else{
        if( not shiftPlan.IsHoliday() and not ( week = 6 or week = 7 )){
          qiangongCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
          qiangongCell.RealValue( qiangongCell.RealValue() - 8 );
        }
      }
    }
    // å¹³æ—¶åŠ ç­å€çŽ‡
    defaultMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "平时加班倍率" );
    if( isnull( defaultMultiplier )){
      defaultMultiplier := macroPlan.OvertimeMultiplier( relnew,Name := "平时加班倍率",Multiplier := 1 );
    }
    // ä¼‘息日加班倍率
    breakDayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "休息日加班倍率");
    if( isnull( breakDayMultiplier )){
      breakDayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "休息日加班倍率",Multiplier := 2 );
    }
    // èŠ‚å‡æ—¥åŠ ç­å€çŽ‡
    holidayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "节假日加班倍率");
    if( isnull( holidayMultiplier )){
      holidayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "节假日加班倍率",Multiplier := 3 );
    }
    traverse( table,LocalRow,row ){
      rowKey := row.CustomName();
      unit := units.Element( unitIndexTree.Root().Child( unitIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
      jiejiariCell := LocalCell_Default::GetCell(  rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
      jiejiarifeiCell := LocalCell_Default::GetCell(  rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
      jiejiarifeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,jiejiariCell.RealValue()));
      qiangongCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
      qiangongfeiCell := LocalCell_Default::GetCell(  rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
      qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,qiangongCell.RealValue() ));
    }
    return table;
  *]
}
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateStandardHoursReport (
  MacroPlan macroPlan,
  const constcontent ShiftPlans shiftPlans,
  RecycleBin owner
) as LocalTable
{
  Description: '标准工时制报表'
  TextBody:
  [*
    // rislai Jul-4-2024 (created)
    table := owner.LocalTable( relnew,Name := "标准工时制报表");
    //column1  := table.LocalColumn( relnew,Name := "工厂" ,Index := 1);
    //column2  := table.LocalColumn( relnew,Name := "产线" ,Index := 2);
    column3  := table.LocalColumn( relnew,Name := "生产天数" ,Index := 3);
    column4  := table.LocalColumn( relnew,Name := "平日加班时长" ,Index := 4);
    column5  := table.LocalColumn( relnew,Name := "休息日加班时长" ,Index := 5);
    column6  := table.LocalColumn( relnew,Name := "节假日加班时长" ,Index := 6);
    column7  := table.LocalColumn( relnew,Name := "欠工时长" ,Index := 7);
    column8  := table.LocalColumn( relnew,Name := "平日加班费" ,Index := 8);
    column9  := table.LocalColumn( relnew,Name := "休息日加班费" ,Index := 9);
    column10 := table.LocalColumn( relnew,Name := "节假日加班费" ,Index := 10);
    column11 := table.LocalColumn( relnew,Name := "欠工费" ,Index := 11);
    units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
    rows := construct( LocalRows );
    rowIndexTree := NamedValueTree::Create();
    cells := construct( LocalCell_Defaults );
    cellIndexTree := NamedValueTree::Create();
    unitIndexTree := NamedValueTree::Create();
    for( i := 0; i < units.Size(); i++){
      unit := units.Element( i );
      row := table.LocalRow( relnew,Index := table.GetRowIndexCache() ,CustomName := unit.ID());
      rowHandle := rowIndexTree.GetHandle( unit.ID() );
      rows.Add( row );
      rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
      unitIndexTree.Root().AddChild( unitIndexTree.GetHandle( unit.ID() ),i );
    }
    traverse( shiftPlans,Elements,shiftPlan ){
      rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
      row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
      // gongchangCell := LocalCell_Default::GetCell(  rowKey + column1.Name(), cellIndexTree, cells, row, column1 );
      // chanxianxCell := LocalCell_Default::GetCell(  rowKey + column2.Name(), cellIndexTree, cells, row, column2 );
      shengchanCell := LocalCell_Default::GetCell(  rowKey + column3.Name(), cellIndexTree, cells, row, column3 );
      week := shiftPlan.UnitPeriodTime().Period_MP().StartDate().DayOfWeek();
      if( shiftPlan.Outcome() <> "" ){
        shengchanCell.RealValue( shengchanCell.RealValue() + 1 );
        if( shiftPlan.IsHoliday() ){
          // èŠ‚å‡æ—¥åŠ ç­
          jiejiariCell := LocalCell_Default::GetCell(  rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
          jiejiariCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
        }else if( week = 6 or week = 7 ){
          // ä¼‘息日加班
          xiuxiCell := LocalCell_Default::GetCell(  rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
          xiuxiCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
        }else{
          // å¹³æ—¶åŠ ç­
          jiabanCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
          jiabanCell.SetOvertimeDurction( shiftPlan.Outcome() );
        }
      }else{
        if( not shiftPlan.IsHoliday() and not ( week = 6 or week = 7 )){
          qiangongCell := LocalCell_Default::GetCell(  rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
          qiangongCell.RealValue( qiangongCell.RealValue() + 8 );
        }
      }
    }
    // å¹³æ—¶åŠ ç­å€çŽ‡
    defaultMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "平时加班倍率" );
    if( isnull( defaultMultiplier )){
      defaultMultiplier := macroPlan.OvertimeMultiplier( relnew,Name := "平时加班倍率",Multiplier := 1 );
    }
    // ä¼‘息日加班倍率
    breakDayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "休息日加班倍率");
    if( isnull( breakDayMultiplier )){
      breakDayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "休息日加班倍率",Multiplier := 2 );
    }
    // èŠ‚å‡æ—¥åŠ ç­å€çŽ‡
    holidayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "节假日加班倍率");
    if( isnull( holidayMultiplier )){
      holidayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "节假日加班倍率",Multiplier := 3 );
    }
    traverse( table,LocalRow,row ){
      rowKey := row.CustomName();
      unit := units.Element( unitIndexTree.Root().Child( unitIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
      jiejiariCell := LocalCell_Default::GetCell(  rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
      jiejiarifeiCell := LocalCell_Default::GetCell(  rowKey + column10.Name(), cellIndexTree, cells, row, column10 );
      jiejiarifeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,jiejiariCell.RealValue()));
      xiuxiCell := LocalCell_Default::GetCell(  rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
      xiuxifeiCell := LocalCell_Default::GetCell(  rowKey + column9.Name(), cellIndexTree, cells, row, column9 );
      xiuxifeiCell.RealValue( EmployeeCost::GetSalary( unit,breakDayMultiplier,xiuxiCell.RealValue()));
      jiabanCell := LocalCell_Default::GetCell(  rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
      jiabanfeiCell := LocalCell_Default::GetCell(  rowKey + column8.Name(), cellIndexTree, cells, row, column8 );
      jiabanfeiCell.RealValue( EmployeeCost::GetSalary( unit,holidayMultiplier,jiabanCell.RealValue()));
      qiangongCell := LocalCell_Default::GetCell(  rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
      qiangongfeiCell := LocalCell_Default::GetCell(  rowKey + column11.Name(), cellIndexTree, cells, row, column11 );
      qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,qiangongCell.RealValue() ));
    }
    return table;
  *]
}
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
@@ -14,7 +14,7 @@
    cellHandle := cellIndexTree.GetHandle( cellKey );
    cellIndex := guard( cellIndexTree.Root().Child( cellHandle ),null( NamedValue ));
    cell := null( LocalCell_Default );
    if( isnull( cell )){
    if( isnull( cellIndex )){
       cell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
       cells.Add( cell );
       cellIndexTree.Root().AddChild( cellHandle,cells.Size() - 1 );
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
@@ -5,7 +5,7 @@
  DateTime end1,
  DateTime start2,
  DateTime end2
) const declarative as Boolean
) const declarative remote as Boolean
{
  TextBody:
  [*
_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
@@ -5,11 +5,11 @@
  Date end1,
  Date start2,
  Date end2
) const declarative as Boolean
) const declarative remote as Boolean
{
  TextBody:
  [*
    // rislai Jun-14-2024 (created)
    return start1 < end2 and start2 < end1 ;
    return start1 <= end2 and start2 <= end1 ;
  *]
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCAssemblyPlanQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCAssemblyPlanQty
{
  #keys: '3[415136.0.886711537][415136.0.886711536][415136.0.886711538]'
  Description: '长春装配计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCInventoryQty
{
  #keys: '3[415136.0.886711534][415136.0.886711533][415136.0.886711535]'
  Description: '长春库存'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCProductionQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCProductionQty
{
  #keys: '3[415136.0.886711531][415136.0.886711530][415136.0.886711532]'
  Description: '长春生产计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCTransferQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCTransferQty
{
  #keys: '3[415136.0.894481176][415136.0.894481175][415136.0.894481177]'
  Description: '长春调拨计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLAssemblyPlanQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLAssemblyPlanQty
{
  #keys: '3[415136.0.894481139][415136.0.894481138][415136.0.894481140]'
  Description: '大连装配计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLInventoryQty
{
  #keys: '3[415136.0.894481162][415136.0.894481161][415136.0.894481163]'
  Description: '大连库存'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLProductionQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLProductionQty
{
  #keys: '3[415136.0.894481152][415136.0.894481151][415136.0.894481153]'
  Description: '大连生产计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLTransferQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLTransferQty
{
  #keys: '3[415136.0.894481186][415136.0.894481185][415136.0.894481187]'
  Description: '大连调拨计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_TotalInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalInventoryQty
{
  #keys: '3[415136.0.894481169][415136.0.894481168][415136.0.894481170]'
  Description: '长春 + å¤§è¿ž åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Function_CalcTotalInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalInventoryQty
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    value := this.CCInventoryQty() + this.DLInventoryQty();
    this.TotalInventoryQty( value );
  *]
}
_Main/BL/Type_MachiningPipelineCell/Method_Add.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method Add (
  MachiningPipelineCell cell
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    this.CCAssemblyPlanQty( this.CCAssemblyPlanQty() + cell.CCAssemblyPlanQty() );
    this.CCProductionQty( this.CCProductionQty() + cell.CCProductionQty() );
    this.CCTransferQty( this.CCTransferQty() + cell.CCTransferQty() );
    this.CCInventoryQty( this.CCInventoryQty() + cell.CCInventoryQty() );
    this.DLAssemblyPlanQty( this.DLAssemblyPlanQty() + cell.DLAssemblyPlanQty() );
    this.DLProductionQty( this.DLProductionQty() + cell.DLProductionQty() );
    this.DLTransferQty( this.DLTransferQty() + cell.DLTransferQty() );
    this.DLInventoryQty( this.DLInventoryQty() + cell.DLInventoryQty() );
  *]
}
_Main/BL/Type_MachiningPipelineCell/Method_Copy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
Method Copy (
  MachiningPipelineColumn column
) as MachiningPipelineCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    cell := column.Cell( relnew, CCAssemblyPlanQty := this.CCAssemblyPlanQty(),
                         CCProductionQty := this.CCProductionQty(),
                         CCTransferQty := this.CCTransferQty(),
                         CCInventoryQty := this.CCInventoryQty(),
                         DLAssemblyPlanQty := this.DLAssemblyPlanQty(),
                         DLProductionQty := this.DLProductionQty(),
                         DLTransferQty := this.DLTransferQty(),
                         DLInventoryQty := this.DLInventoryQty() );
    return cell;
  *]
}
_Main/BL/Type_MachiningPipelineCell/StaticMethod_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MachiningPipelineColumn column
) as MachiningPipelineCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    cell := column.Cell( relnew, CCAssemblyPlanQty := 0,
                         CCProductionQty := 0,
                         CCTransferQty := 0,
                         CCInventoryQty := 0,
                         DLAssemblyPlanQty := 0,
                         DLProductionQty := 0,
                         DLTransferQty := 0,
                         DLInventoryQty := 0 );
    return cell;
  *]
}
_Main/BL/Type_MachiningPipelineCell/_ROOT_Type_MachiningPipelineCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineCell
{
  #keys: '5[415136.0.886711528][415136.0.886711526][0.0.0][415136.0.886711527][415136.0.886711529]'
  BaseType: Object
  Description: '机加工管线报表单元格'
  StructuredName: 'MachiningPipelineCells'
}
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[415136.0.886711548][415136.0.886711547][415136.0.886711549]'
  ValueType: Number
}
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.886711551][415136.0.886711550][415136.0.886711552]'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineColumn0/Attribute_Period.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Period
{
  #keys: '3[415136.0.886711554][415136.0.886711553][415136.0.886711555]'
  ValueType: Date
}
_Main/BL/Type_MachiningPipelineColumn0/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.886711557][415136.0.886711556][415136.0.886711558]'
  Description: '日期类型'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MachiningPipelineColumn0/DefaultValue_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: TimeUnit
}
_Main/BL/Type_MachiningPipelineColumn0/Function_CalcIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIndex
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-21-2024 (created)
    value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
    this.Index( value );
  *]
}
_Main/BL/Type_MachiningPipelineColumn0/_ROOT_Type_MachiningPipelineColumn0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineColumn
{
  #keys: '5[415136.0.886711545][415136.0.886711543][0.0.0][415136.0.886711544][415136.0.886711546]'
  BaseType: Object
  Description: '机加工管线报表列'
  StructuredName: 'MachiningPipelineColumns'
}
_Main/BL/Type_MachiningPipelineReport/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[415136.0.886711585][415136.0.886711584][415136.0.886711586]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_MachiningPipelineReport/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[415136.0.886711588][415136.0.886711587][415136.0.886711589]'
  ValueType: Boolean
}
_Main/BL/Type_MachiningPipelineReport/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.886711591][415136.0.886711590][415136.0.886711592]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineReport/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_MachiningPipelineReport/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MachiningPipelineReport/Method_Clear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method Clear (
  String timeunit,
  Date startdate,
  Date enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    this.Column( relflush );
    this.Row( relflush );
    this.GenerateColumn( this.Source().MacroPlan(), timeunit, startdate, enddate );
  *]
}
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  MachiningPipelineSearch search,
  Product_MPs products
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    table      := selectobject( this, Source.Report, report, not report.IsShow() );
    //清空之前存储的显示数据
    this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
    //过滤后的产品id
    productids := selectuniquevalues( products, Elements, product, true, product.ID() );
    sumrow     := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
    traverse( table, Row, row, productids.Find( row.Name() ) >= 0 ){
      showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
        column   := selectobject( this, Column, column, column.Name() = cell.Column().Name() and column.TimeUnit() = search.TimeUnit() );
        if( not isnull( column ) ){
          sumcell  := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell := MachiningPipelineCell::Initialize( column );
            sumrow.Cell( relinsert, sumcell );
          }
          showcell := cell.Copy( column );
          showrow.Cell( relinsert, showcell );
          sumcell.Add( cell );
        }
      }
    }
  *]
}
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  MacroPlan owner,
  String timeunit,
  Date startdate,
  Date enddate
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //查询日期返回需要在计划日期之内
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
              and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
                    or period.TimeUnit() = timeunit ) ){
      periodtime := period.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
    }
  *]
}
_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  String product
) as MachiningPipelineRow
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    row := selectobject( this, Row, row, row.Name() = product );
    if( isnull( row ) ){
      row := this.Row( relnew, Name := product );
      //初始化单元格
      row.InitializeCell( this );
    }
    return row;
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultAllUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultAllUnit () const declarative as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '<All>';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCAssemnlyUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCAssemnlyUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春装配线';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCProductionUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCProductionUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春机加产线';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLAssemnlyUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLAssemnlyUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连装配线';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLProductionUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLProductionUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连机加产线';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultName () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Machining pipelines';
  *]
}
_Main/BL/Type_MachiningPipelineReport/_ROOT_Type_MachiningPipelineReport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineReport
{
  #keys: '5[415136.0.886711582][415136.0.886711580][0.0.0][415136.0.886711581][415136.0.886711583]'
  BaseType: Object
  Description: '机加工管线报表'
  StructuredName: 'MachiningPipelineReports'
}
_Main/BL/Type_MachiningPipelineRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.886711571][415136.0.886711570][415136.0.886711572]'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[415136.0.886711574][415136.0.886711573][415136.0.886711575]'
  ValueType: Number
}
_Main/BL/Type_MachiningPipelineRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  MachiningPipelineColumn column
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := MachiningPipelineCell::Initialize( column );
    this.Cell( relinsert, cell );
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell (
  MachiningPipelineReport table
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    traverse( table, Column, column ){
      this.Initialize( column );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetCellAssemblyValue (
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() ){
      cell.CCAssemblyPlanQty( cell.CCAssemblyPlanQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
      cell.DLAssemblyPlanQty( cell.DLAssemblyPlanQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetCellInventoryValue (
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    if( unit = MachiningPipelineReport::GetDefaultCCUnit() ){
      cell.CCInventoryQty( cell.CCInventoryQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLUnit() ){
      cell.DLInventoryQty( cell.DLInventoryQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetCellProductionValue (
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() ){
      cell.CCProductionQty( cell.CCProductionQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
      cell.DLProductionQty( cell.DLProductionQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/_ROOT_Type_MachiningPipelineRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineRow
{
  #keys: '5[415136.0.886711568][415136.0.886711566][0.0.0][415136.0.886711567][415136.0.886711569]'
  BaseType: Object
  Description: '机加工管线行'
  StructuredName: 'MachiningPipelineRows'
}
_Main/BL/Type_MachiningPipelineSearch/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[415136.0.886711605][415136.0.886711604][415136.0.886711606]'
  Description: '结束日期'
  ValueType: Date
}
_Main/BL/Type_MachiningPipelineSearch/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[415136.0.886711602][415136.0.886711601][415136.0.886711603]'
  Description: '开始时间'
  ValueType: Date
}
_Main/BL/Type_MachiningPipelineSearch/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.886711608][415136.0.886711607][415136.0.886711609]'
  Description: '日期类型'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineSearch/DefaultValue_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: TimeUnit
}
_Main/BL/Type_MachiningPipelineSearch/_ROOT_Type_MachiningPipelineSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineSearch
{
  #keys: '5[415136.0.886711599][415136.0.886711597][0.0.0][415136.0.886711598][415136.0.886711600]'
  BaseType: Object
  Description: '机加工管线查询类'
  StructuredName: 'MachiningPipelineSearchs'
}
_Main/BL/Type_MachiningPipelineSource0/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.886711619][415136.0.886711618][415136.0.886711620]'
  ValueType: String
}
_Main/BL/Type_MachiningPipelineSource0/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载发动机管线数据'
  TextBody:
  [*
    table := selectobject( macroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    //Product
    productcolumnelement := xmlDOM.CreateElement( "column" );
    productnameelement   := xmlDOM.CreateElement( "name" );
    producttypeelement   := xmlDOM.CreateElement( "type" );
    productnameelement.TextContent( 'Product' );
    producttypeelement.TextContent( "String" );
    productcolumnelement.AppendChild( productnameelement );
    productcolumnelement.AppendChild( producttypeelement );
    //Attribute
    attricolumnelement := xmlDOM.CreateElement( "column" );
    attrinameelement   := xmlDOM.CreateElement( "name" );
    attritypeelement   := xmlDOM.CreateElement( "type" );
    attrinameelement.TextContent( 'Attribute' );
    attritypeelement.TextContent( "String" );
    attricolumnelement.AppendChild( attrinameelement );
    attricolumnelement.AppendChild( attritypeelement );
    tableElement.AppendChild( productcolumnelement );
    tableElement.AppendChild( attricolumnelement );
    traverse ( table, Column, column ) {
      columnelement := xmlDOM.CreateElement( "column" );
      nameelement   := xmlDOM.CreateElement( "name" );
      typeelement   := xmlDOM.CreateElement( "type" );
      nameelement.TextContent( column.Name() );
      typeelement.TextContent( "String" );
      columnelement.AppendChild( nameelement );
      columnelement.AppendChild( typeelement );
      cells := selectsortedset( column, Cell, cell, cell.Row().RowNr() );
      traverse ( cells, Elements, c ) {
        if( column.Index() = 0 ){
          row := c.Row();
          //Product
          productcellElement1 := xmlDOM.CreateElement( "cell" );
          productcellElement1.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement1 );
          productcellElement2 := xmlDOM.CreateElement( "cell" );
          productcellElement2.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement2 );
          productcellElement3 := xmlDOM.CreateElement( "cell" );
          productcellElement3.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement3 );
          productcellElement4 := xmlDOM.CreateElement( "cell" );
          productcellElement4.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement4 );
          productcellElement5 := xmlDOM.CreateElement( "cell" );
          productcellElement5.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement5 );
          productcellElement6 := xmlDOM.CreateElement( "cell" );
          productcellElement6.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement6 );
          productcellElement7 := xmlDOM.CreateElement( "cell" );
          productcellElement7.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement7 );
          productcellElement8 := xmlDOM.CreateElement( "cell" );
          productcellElement8.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement8 );
          productcellElement9 := xmlDOM.CreateElement( "cell" );
          productcellElement9.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement9 );
          //Attribute
          //长春装配计划
          ccaqcellElement := xmlDOM.CreateElement( "cell" );
          ccaqcellElement.SetAttribute( "value", 'CCAssemblyPlanQty' );
          attricolumnelement.AppendChild( ccaqcellElement );
          //长春生产计划
          ccpqcellElement := xmlDOM.CreateElement( "cell" );
          ccpqcellElement.SetAttribute( "value", 'CCProductionQty' );
          attricolumnelement.AppendChild( ccpqcellElement );
          //长春调拨计划
          cctqcellElement := xmlDOM.CreateElement( "cell" );
          cctqcellElement.SetAttribute( "value", 'CCTransferQty' );
          attricolumnelement.AppendChild( cctqcellElement );
          //长春库存
          cciqcellElement := xmlDOM.CreateElement( "cell" );
          cciqcellElement.SetAttribute( "value", 'CCInventoryQty' );
          attricolumnelement.AppendChild( cciqcellElement );
          //大连装配计划
          dlaqcellElement := xmlDOM.CreateElement( "cell" );
          dlaqcellElement.SetAttribute( "value", 'DLAssemblyPlanQty' );
          attricolumnelement.AppendChild( dlaqcellElement );
          //大连生产计划
          dlpqcellElement := xmlDOM.CreateElement( "cell" );
          dlpqcellElement.SetAttribute( "value", 'DLProductionQty' );
          attricolumnelement.AppendChild( dlpqcellElement );
          //大连调拨计划
          dltqcellElement := xmlDOM.CreateElement( "cell" );
          dltqcellElement.SetAttribute( "value", 'DLTransferQty' );
          attricolumnelement.AppendChild( dltqcellElement );
          //大连库存
          dliqcellElement := xmlDOM.CreateElement( "cell" );
          dliqcellElement.SetAttribute( "value", 'DLInventoryQty' );
          attricolumnelement.AppendChild( dliqcellElement );
          //长春 + å¤§è¿ž åº“å­˜
          tiqcellElement := xmlDOM.CreateElement( "cell" );
          tiqcellElement.SetAttribute( "value", 'TotalInventoryQty' );
          attricolumnelement.AppendChild( tiqcellElement );
        }
        //长春装配计划
        ccaqcellElement := xmlDOM.CreateElement( "cell" );
        ccaqcellElement.SetAttribute( "value", [String]c.CCAssemblyPlanQty() );
        columnelement.AppendChild( ccaqcellElement );
        //长春生产计划
        ccpqcellElement := xmlDOM.CreateElement( "cell" );
        ccpqcellElement.SetAttribute( "value", [String]c.CCProductionQty() );
        columnelement.AppendChild( ccpqcellElement );
        //长春调拨计划
        cctqcellElement := xmlDOM.CreateElement( "cell" );
        cctqcellElement.SetAttribute( "value", [String]c.CCTransferQty() );
        columnelement.AppendChild( cctqcellElement );
        //长春库存
        cciqcellElement := xmlDOM.CreateElement( "cell" );
        cciqcellElement.SetAttribute( "value", [String]c.CCInventoryQty() );
        columnelement.AppendChild( cciqcellElement );
        //大连装配计划
        dlaqcellElement := xmlDOM.CreateElement( "cell" );
        dlaqcellElement.SetAttribute( "value", [String]c.DLAssemblyPlanQty() );
        columnelement.AppendChild( dlaqcellElement );
        //大连生产计划
        dlpqcellElement := xmlDOM.CreateElement( "cell" );
        dlpqcellElement.SetAttribute( "value", [String]c.DLProductionQty() );
        columnelement.AppendChild( dlpqcellElement );
        //大连调拨计划
        dltqcellElement := xmlDOM.CreateElement( "cell" );
        dltqcellElement.SetAttribute( "value", [String]c.DLTransferQty() );
        columnelement.AppendChild( dltqcellElement );
        //大连库存
        dliqcellElement := xmlDOM.CreateElement( "cell" );
        dliqcellElement.SetAttribute( "value", [String]c.DLInventoryQty() );
        columnelement.AppendChild( dliqcellElement );
        //长春 + å¤§è¿ž åº“å­˜
        tiqcellElement := xmlDOM.CreateElement( "cell" );
        tiqcellElement.SetAttribute( "value", [String]c.TotalInventoryQty() );
        columnelement.AppendChild( tiqcellElement );
      }
      tableElement.AppendChild( columnelement );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
    //info( xmlString );
    tableGroupHandle := TableGroupHandle::Create( MachiningPipelineReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.FinancialProductionSource( relflush );
    ccunit                    := MachiningPipelineReport::GetDefaultCCUnit();
    dlunit                    := MachiningPipelineReport::GetDefaultDLUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
    source                    := owner.MachiningPipelineSource( relnew, Name := MachiningPipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    products                  := construct( Product_MPs );
    //初始化列
    table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
    //生成装配、生产和库存数据
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
      unit := pisp.StockingPoint_MP().UnitID();
      //初始化行
      row := table.GetRow( pisp.ProductID() );
      traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
        periodtime := pispip.Period_MP().StartDate();
        periodname := periodtime.Format( "M2/D2/Y" );
        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
        //装配线
        if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
          row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        //机加线
        if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        if( unit = ccunit or unit = dlunit ){
          row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() );
        }
      }
    }
    //生成调拨数据
    traverse( owner, TransferPlanRow, tprow, ( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ) or ( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ) ){
      row := selectobject( table, Row, row, row.Name() = tprow.Name() );
      traverse( table, Column, column ){
        cell := selectobject( row, Cell, cell, cell.Column() = column );
        if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = column.Period() );
          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
            cell.CCTransferQty( [Real]tpcell.Value() );
          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
            cell.DLTransferQty( [Real]tpcell.Value() );
          }
        }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){
          period := column.Period() + Duration::Days( 6 );
          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = period.Date() );
          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
            cell.CCTransferQty( [Real]tpcell.Value() );
          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
            cell.DLTransferQty( [Real]tpcell.Value() );
          }
        }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    showtable.Generate( search, products );
  *]
}
_Main/BL/Type_MachiningPipelineSource0/_ROOT_Type_MachiningPipelineSource0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachiningPipelineSource
{
  #keys: '5[415136.0.886711616][415136.0.886711614][0.0.0][415136.0.886711615][415136.0.886711617]'
  BaseType: Object
  Description: '机加工管线报表'
  StructuredName: 'MachiningPipelineSources'
}
_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '21.75'
  TargetAttribute: StandardWorkingDay
}
_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsHoliday
{
  #keys: '3[412672.1.34300030][412672.1.34300029][412672.1.34300031]'
  ValueType: Boolean
}
_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Function CalcIsHoliday
{
  TextBody:
  [*
    // rislai Jul-9-2024 (created)
    value := false
    if( this.EventType() = "法定节假日"){
      value := true;
    }
    this.IsHoliday( value );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -49,6 +49,28 @@
        Taborder: 3
      ]
    }
    Component ButtonComprehensiveStandardHoursReport
    {
      #keys: '[412672.1.39734996]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOCUMENT_CHART'
        Label: '工时制报表'
        Taborder: 4
      ]
    }
    Component ButtonEnginePipelineReport
    {
      #keys: '[415136.0.884991586]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOCUMENT_CONNECTION'
        Label: 'Engine pipeline report'
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ActionBarGroupReport/ButtonComprehensiveStandardHoursReport
Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursReport_OnClick
{
  #keys: '[412672.1.36822187]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'ComprehensiveStandardHoursReport', ButtonComprehensiveStandardHoursReport );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ActionBarGroupReport/ButtonEnginePipelineReport
Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClick
{
  #keys: '[415136.0.888144270]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "Engine_pipleline_report", true);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_ListEnginePipelineDemand.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
Component ListEnginePipelineDemand
{
  #keys: '[415136.0.889610579]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorEnginePipelineDemand
    {
      #keys: '[415136.0.889610580]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[external[EnginePipelineCell]]'
        Source: 'FormEnginePipelineReport.dhEnginePipelineCells'
        Taborder: 0
        Transformation: 'Elements.Demand'
      ]
    }
    #child: listActionBarPageEnginePipelineDemand
    Component DataSetLevelEnginePipelineDemand
    {
      #keys: '[415136.0.889610585]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuEnginePipelineDemand
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineType","title":"EngineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Model","title":"Model","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Model"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Period","title":"Period","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Period"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}}]'
        ContextMenu: 'listContextMenuEnginePipelineDemand'
        SortCriteria: 'EngineType;Model;Period'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listActionBarPageEnginePipelineDemand.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageEnginePipelineDemand
{
  #keys: '[415136.0.889610582]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/Component_listContextMenuEnginePipelineDemand.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuEnginePipelineDemand
{
  #keys: '[415136.0.889610587]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineDemand/_ROOT_Component_FormEnginePipelineDemand.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormEnginePipelineDemand
{
  #keys: '[415136.0.889610518]'
  BaseType: 'WebForm'
  Children:
  [
    #child: ListEnginePipelineDemand
  ]
  Properties:
  [
    Image: 'NOTE'
    Title: 'Engine pipeline demand'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_ListEnginePipelineProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
Component ListEnginePipelineProduction
{
  #keys: '[415136.0.888050782]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorEnginePipelineProduction
    {
      #keys: '[415136.0.888050783]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[EnginePipelineCell]'
        Source: 'FormEnginePipelineReport.dhEnginePipelineCells'
        Taborder: 0
        Transformation: 'Elements.Production'
      ]
    }
    #child: listActionBarPageEnginePipelineProduction
    Component DataSetLevelEnginePipelineProduction
    {
      #keys: '[415136.0.888050788]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuEnginePipelineProduction
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineType","title":"EngineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Period","title":"Period","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Period"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DLProduction","title":"DLProduction","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DLProduction"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CCProduction","title":"CCProduction","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CCProduction"}}]'
        ContextMenu: 'listContextMenuEnginePipelineProduction'
        SortCriteria: 'EngineType;Period'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listActionBarPageEnginePipelineProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageEnginePipelineProduction
{
  #keys: '[415136.0.888050785]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/Component_listContextMenuEnginePipelineProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuEnginePipelineProduction
{
  #keys: '[415136.0.888050790]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineProduction/_ROOT_Component_FormEnginePipelineProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormEnginePipelineProduction
{
  #keys: '[415136.0.886943096]'
  BaseType: 'WebForm'
  Children:
  [
    #child: ListEnginePipelineProduction
  ]
  Properties:
  [
    Image: 'NOTE'
    Title: 'Engine pipeline production'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditorTable
{
  #keys: '[415136.0.884991429]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellTable
    {
      #keys: '[415136.0.884991430]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCell
        {
          #keys: '[415136.0.884991431]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'EnginePipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column.CellValue'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsTable
    {
      #keys: '[415136.0.884991434]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRow
        {
          #keys: '[415136.0.884991435]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'EnginePipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Row'
          ]
        }
      ]
      Properties:
      [
        Legend: 'RowNr'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsTable
    {
      #keys: '[415136.0.884991438]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumn
        {
          #keys: '[415136.0.884991439]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'EnginePipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageTable
    #child: matrixeditorContextMenuTable
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumnsTable'
    ContextMenu: 'matrixeditorContextMenuTable'
    Rows: 'MatrixEditorRowsTable'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelExport id:PanelExport_570
{
  #keys: '[415136.0.884991008]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonSummaryExport
    {
      #keys: '[415136.0.884991009]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelHeader
{
  #keys: '[415136.0.884990889]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelSearch
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelPeriod#325.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
Component PanelPeriod id:PanelPeriod_325
{
  #keys: '[415136.0.884991005]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStart
    {
      #keys: '[415136.0.884991006]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start date'
        Taborder: 0
      ]
    }
    Component DateSelectorEnd
    {
      #keys: '[415136.0.884991007]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 9999-12-31
        Label: 'End date'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelSearch.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component PanelSearch
{
  #keys: '[415136.0.884991004]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelPeriod_325
    #child: PanelExport_570
    #child: PanelTimeUnit
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelTable
{
  #keys: '[415136.0.884991246]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorTable
  ]
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelTimeUnit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
Component PanelTimeUnit
{
  #keys: '[415136.0.884991010]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForTimeUnit
    {
      #keys: '[415136.0.884991011]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        ButtonLabels: 'Day;Week'
        ButtonValues: 'Day;Week'
        Orientation: 'horizontal'
        ShowTitle: false
        Taborder: 0
        Title: 'Periods'
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixEditorActionBarPageTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable
{
  #keys: '[415136.0.884991442]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_matrixeditorContextMenuTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable
{
  #keys: '[415136.0.884991445]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_MatrixEditorTable_OnSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: MatrixEditorTable
Response OnSelectionChanged (
  structured[EnginePipelineCell] selection
) id:Response_MatrixEditorTable_OnSelectionChanged
{
  #keys: '[415136.0.886943328]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnSelectionChanged'
  QuillAction
  {
    Body:
    [*
      //选择的单元格
      dhEnginePipelineCells.Data( selection.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Response OnCreated () id:Response_FormEnginePipelineReport_OnCreated
{
  #keys: '[415136.0.884991340]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
        EnginePipelineSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( table.Source().Search() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSummaryExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelExport_570/ButtonSummaryExport
Response OnClick () id:Response_PanelExport_570_ButtonSummaryExport_OnClick
{
  #keys: '[415136.0.884991001]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := EnginePipelineSource::Download( MacroPlan );
      Application.Download( EnginePipelineReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod_325/DateSelectorEnd
Response OnChanged () id:Response_PanelPeriod_325_DateSelectorEnd_OnChanged
{
  #keys: '[415136.0.884991002]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod_325/DateSelectorStart
Response OnChanged () id:Response_PanelPeriod_325_DateSelectorStart_OnChanged
{
  #keys: '[415136.0.884991003]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
Response OnChanged () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged
{
  #keys: '[415136.0.884991000]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  QuillAction
  {
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
Response OnCreated () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated
{
  #keys: '[415136.0.884990999]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormEnginePipelineReport
{
  #keys: '[415136.0.884990753]'
  BaseType: 'WebForm'
  Children:
  [
    Component DataHolderTable id:DataHolderTable_750
    {
      #keys: '[415136.0.884990847]'
      BaseType: 'WebDataHolder'
      Databinding: 'EnginePipelineReport'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component dhSearch id:dhSearch_316
    {
      #keys: '[415136.0.884990864]'
      BaseType: 'WebDataHolder'
      Databinding: 'EnginePipelineSearch'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: PanelHeader
    #child: PanelTable
    Component dhEnginePipelineCells id:dhEnginePipelineCells_430
    {
      #keys: '[415136.0.888401920]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[EnginePipelineCell]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Image: 'DOCUMENT_CONNECTION'
    Title: 'Engine pipeline report'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -17,7 +17,6 @@
        ShowTitle: false
        Taborder: 0
        Title: 'Periods'
        Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_MatrixEditorTable#870.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditorTable id:MatrixEditorTable_870
{
  #keys: '[415136.0.893820897]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellTable
    {
      #keys: '[415136.0.893820898]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCell
        {
          #keys: '[415136.0.893820899]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column.Cell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'CCAssemblyPlanQty;CCProductionQty;CCTransferQty;CCInventoryQty;DLAssemblyPlanQty;DLProductionQty;DLTransferQty;DLInventoryQty;TotalInventoryQty'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsTable
    {
      #keys: '[415136.0.893820900]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRow
        {
          #keys: '[415136.0.893820901]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Row'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsTable
    {
      #keys: '[415136.0.893820902]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumn
        {
          #keys: '[415136.0.893820903]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageTable_1
    #child: matrixeditorContextMenuTable_1
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsTable'
    ContextMenu: 'matrixeditorContextMenuTable'
    Rows: 'MatrixEditorRowsTable'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelExport
{
  #keys: '[415136.0.893820864]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonSummaryExport
    {
      #keys: '[415136.0.893820865]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelHeader#832.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelHeader id:PanelHeader_832
{
  #keys: '[415136.0.893820859]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelSearch_957
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelPeriod.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
Component PanelPeriod
{
  #keys: '[415136.0.893820861]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStart
    {
      #keys: '[415136.0.893820862]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start date'
        Taborder: 0
      ]
    }
    Component DateSelectorEnd
    {
      #keys: '[415136.0.893820863]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 9999-12-31
        Label: 'End date'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelSearch#957.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component PanelSearch id:PanelSearch_957
{
  #keys: '[415136.0.893820860]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelPeriod
    #child: PanelExport
    #child: PanelTimeUnit_778
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTable#141.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelTable id:PanelTable_141
{
  #keys: '[415136.0.893820896]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorTable_870
  ]
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTimeUnit#778.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
Component PanelTimeUnit id:PanelTimeUnit_778
{
  #keys: '[415136.0.893820866]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForTimeUnit
    {
      #keys: '[415136.0.893820867]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        ButtonLabels: 'Day;Week'
        ButtonValues: 'Day;Week'
        Orientation: 'horizontal'
        ShowTitle: false
        Taborder: 0
        Title: 'Periods'
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixEditorActionBarPageTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
{
  #keys: '[415136.0.893820904]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixeditorContextMenuTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
{
  #keys: '[415136.0.893820905]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Response OnCreated () id:Response_FormMachiningPipelineReport_OnCreated
{
  #keys: '[415136.0.897182652]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
        MachiningPipelineSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( table.Source().Search() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/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.893820856]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := MachiningPipelineSource::Download( MacroPlan );
      Application.Download( MachiningPipelineReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorEnd
Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
{
  #keys: '[415136.0.893820857]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorStart
Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
{
  #keys: '[415136.0.893820858]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelTimeUnit_778/RadioButtonGroupUseForTimeUnit
Response OnChanged () id:Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged
{
  #keys: '[415136.0.893820855]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  QuillAction
  {
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelTimeUnit_778/RadioButtonGroupUseForTimeUnit
Response OnCreated () id:Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated
{
  #keys: '[415136.0.893820854]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMachiningPipelineReport
{
  #keys: '[415136.0.893820723]'
  BaseType: 'WebForm'
  Children:
  [
    Component DataHolderTable
    {
      #keys: '[415136.0.893820797]'
      BaseType: 'WebDataHolder'
      Databinding: 'MachiningPipelineReport'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component dhSearch
    {
      #keys: '[415136.0.893820823]'
      BaseType: 'WebDataHolder'
      Databinding: 'MachiningPipelineSearch'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: PanelHeader_832
    #child: PanelTable_141
  ]
  Properties:
  [
    Image: 'DOCUMENT_CONNECTION'
    Title: 'Machining pipeline report'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor859
{
  #keys: '[412672.1.33151379]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell642
    {
      #keys: '[412672.1.33151380]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor872
        {
          #keys: '[412672.1.33151381]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow.LocalCell.astype(LocalCell_Default)'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'RealValue'
        Column: 'LocalColumn'
        Row: 'LocalRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows590
    {
      #keys: '[412672.1.33151384]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor862
        {
          #keys: '[412672.1.33151385]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns481
    {
      #keys: '[412672.1.33151388]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor661
        {
          #keys: '[412672.1.33151389]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage681
    #child: matrixeditorContextMenu445
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns481'
    ContextMenu: 'matrixeditorContextMenu445'
    Rows: 'MatrixEditorRows590'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component Panel743
{
  #keys: '[412672.1.33151321]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor859
    Component dhTable
    {
      #keys: '[412672.1.33151419]'
      BaseType: 'WebDataHolder'
      Databinding: 'LocalTable'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage681
{
  #keys: '[412672.1.33151392]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu445
{
  #keys: '[412672.1.33151395]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component pMain
{
  #keys: '[412672.1.33151242]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: Panel743
    #child: pOperaction
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
Quintiq file version 2.0
Component pOperaction
{
  #keys: '[412672.1.33151285]'
  BaseType: 'WebPanel'
  Children:
  [
    Component cbStandardHours
    {
      #keys: '[412672.1.33151450]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        CheckboxType: 'toggle'
        Label: '标准工时制'
        Taborder: 0
      ]
    }
    Component cbComprehensiveHours
    {
      #keys: '[412672.1.33151469]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        CheckboxType: 'toggle'
        Label: '综合工时制'
        Taborder: 1
      ]
    }
    Component dsStartDate
    {
      #keys: '[412672.1.33151495]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Taborder: 2
      ]
    }
    Component dsEndDate
    {
      #keys: '[412672.1.33151514]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 9999-12-31
        Taborder: 3
      ]
    }
    Component bCalculating
    {
      #keys: '[412672.1.33180446]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Calculating'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: pOperaction/bCalculating
Response OnClick () id:Response_pOperaction_bCalculating_OnClick
{
  #keys: '[412672.1.33160729]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      shiftPlans := selectset( MacroPlan,Unit.UnitPeriod.astype( UnitPeriodTime ).ShiftPlan,shiftPlan,LocalTool::IsOverlap( dsStartDate.Date(),dsEndDate.Date(),shiftPlan.UnitPeriodTime().Period_MP().StartDate(),shiftPlan.UnitPeriodTime().Period_MP().EndDate()));
      if( cbStandardHours.Checked() ){
        dhTable.Data( LocalCell_Default::GenerateStandardHoursReport( MacroPlan ,shiftPlans ,RecycleBin ));
      }
      if( cbComprehensiveHours.Checked()){
        dhTable.Data( LocalCell_Default::GenerateComprehensiveHoursReport( MacroPlan ,shiftPlans ,RecycleBin ));
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: pOperaction/cbComprehensiveHours
Response OnUserChanged () id:Response_pOperaction_cbComprehensiveHours_OnUserChanged
{
  #keys: '[412672.1.33151755]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      cbStandardHours.Checked( not this.Checked() );
      if( this.Checked() ){
        FormComprehensiveStandardHoursReport.Title( "综合工时制报表" );
      }else{
        FormComprehensiveStandardHoursReport.Title( "标准工时制报表" );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pOperaction/cbStandardHours
Response OnUserChanged () id:Response_pOperaction_cbStandardHours_OnUserChanged
{
  #keys: '[412672.1.33151672]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      cbComprehensiveHours.Checked( not this.Checked() );
      if( this.Checked() ){
        FormComprehensiveStandardHoursReport.Title( "标准工时制报表" );
      }else{
        FormComprehensiveStandardHoursReport.Title( "综合工时制报表" );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormComprehensiveStandardHoursReport
{
  #keys: '[412672.1.33151116]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pMain
  ]
  Properties:
  [
    Image: 'DOCUMENT_CHART'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
{
  viewcontents
  {
    page: ''
    group: ''
    index: 0
    image: 'DOCUMENT_CHART'
    description: ''
  }
  formatversion: 2
  id: 'ComprehensiveStandardHoursReport'
  name: 'ComprehensiveStandardHoursReport'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,367 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormEnginePipelineReport
      {
        title: 'QMacroPlanner::FormEnginePipelineReport'
        shown: true
        componentID: 'QMacroPlanner::FormEnginePipelineReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 15
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormEnginePipelineReport_PanelHeader
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_PanelSearch
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_PanelPeriod
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_PanelTimeUnit
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_PanelExport
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_PanelTable
          {
            sizeRatio: 1
          }
          FormEnginePipelineReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormEnginePipelineReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_Value
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Value'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'RowNr'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormMachiningPipelineReport
      {
        title: 'QMacroPlanner::FormMachiningPipelineReport'
        shown: true
        componentID: 'QMacroPlanner::FormMachiningPipelineReport'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 19
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMachiningPipelineReport_PanelHeader
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelSearch
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelPeriod
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTimeUnit
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelExport
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTable
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormMachiningPipelineReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_CCAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCAssemblyPlanQty'
                    }
                    attribute_CCProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCProductionQty'
                    }
                    attribute_CCTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCTransferQty'
                    }
                    attribute_CCInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCInventoryQty'
                    }
                    attribute_DLAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 4
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLAssemblyPlanQty'
                    }
                    attribute_DLProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 5
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLProductionQty'
                    }
                    attribute_DLTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 6
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLTransferQty'
                    }
                    attribute_DLInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 7
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLInventoryQty'
                    }
                    attribute_TotalInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 8
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalInventoryQty'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'RowNr'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 20
    image: 'DOCUMENT_CONNECTION'
    description: ''
  }
  formatversion: 2
  id: 'Engine_pipleline_report'
  name: 'Engine pipleline report'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
@@ -2,10 +2,10 @@
{
  viewcontents
  {
    image: 'MONEY_BILL_FIRE'
    page: ''
    group: ''
    index: 0
    image: 'MONEY_BILL_FIRE'
    description: ''
  }
  formatversion: 2
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
@@ -2,10 +2,10 @@
{
  viewcontents
  {
    image: 'COMPASSES'
    page: ''
    group: ''
    index: 0
    image: 'COMPASSES'
    description: ''
  }
  formatversion: 2