xiaoding721
2024-10-12 489022017f8b581ab413455b41ec841879a75e03
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已重命名2个文件
已添加144个文件
已修改58个文件
已删除19个文件
4600 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionColumn_InterfaceDataset_InterfaceDataset_A.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionRow_InterfaceDataset_InterfaceDataset_Asse.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionSearch_InterfaceDataset_InterfaceDataset_A.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_Column_AssemblyOnlinePlanVersionColumn_Ve.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_InterfaceDataset_InterfaceDataset_Assembl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_Row_AssemblyOnlinePlanVersionRow_Version.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Factory_MacroPlan_MacroPlan_Factory.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InterfaceNewOfflinePlanDetailData_InterfaceNewOfflinePlanVersion_In.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InterfaceNewOfflinePlanVersion_InterfaceDataset_InterfaceDataset_In.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanCell_Detailed_NewOfflinePlanCell_Total.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanCell_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOff.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanRow_NewOfflinePlanCell_NewOfflinePlanCell_NewOfflineP.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanTable_MacroPlan_MacroPlan_NewOfflinePlanTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanTable_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOf.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewOfflinePlanTable_NewOfflinePlanRow_NewOfflinePlanRow_NewOfflineP.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductGeneration_MacroPlan_MacroPlan_ProductGeneration.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductMLBMQB_MacroPlan_MacroPlan_ProductMLBMQB.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductPower_MacroPlan_MacroPlan_ProductPower.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell0/StaticMethod_RefreshData.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_ColumnDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_TimeUnit.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetColumnByTimeUnit.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_GenerateData.qbl 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersion/_ROOT_Type_AssemblyOnlinePlanVersion.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionRow/Method_Initialize.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionRow/Method_InitializeCell.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_Product.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_ProductionLine.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_TimeUnit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_Product.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_TimeUnit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_Unit.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/_ROOT_Type_AssemblyOnlinePlanVersionSearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_CoefficientValue.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CoefficientValue.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_GenerateNew.qbl 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Attribute_Demand.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Attribute_Product.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/DefaultValue_Product.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Factory/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Factory/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Factory/StaticMethod_Initilize.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Factory/_ROOT_Type_Factory.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionCell/Attribute_IsUpdate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_Order.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_OrderNr.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ProductID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ProductionLine.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternEnd.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternStart.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/_ROOT_Type_InterfaceNewOfflinePlanDetailData.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceOfflinePlanVersion/Attribute_ScenarioName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceOfflinePlanVersion/_ROOT_Type_InterfaceNewOfflinePlanVersion.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_GenerateShow#925.qbl 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_InitiateSearch.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_InventoryWeight.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_Order.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_OrderNr.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternEnd.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternStart.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Attribute_TotalQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Function_CalcEndDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Function_CalcStartDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/_ROOT_Type_NewOfflinePlanCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanColumn/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanColumn/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanColumn/_ROOT_Type_NewOfflinePlanColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_ProductID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_ProductionLine.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_Type.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Method_Filter.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/_ROOT_Type_NewOfflinePlanRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanTable/Attribute_SaveDateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanTable/_ROOT_Type_NewOfflinePlanTable.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductGeneration/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductGeneration/StaticMethod_Initilize.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductGeneration/_ROOT_Type_ProductGeneration.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductMLBMQB/Attribute_MLBMQB.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductMLBMQB/StaticMethod_Initilize.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductMLBMQB/_ROOT_Type_ProductMLBMQB.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductPower/Attribute_Power.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductPower/StaticMethod_Initilize.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductPower/_ROOT_Type_ProductPower.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/FinancialProductionCell.qrp 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/ProductInStockingPointInPeriod.qrp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewOfflinePlan_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSMS64/Component_pnlLeft#88.def 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSPIR/Component_pnlLeft.def 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSPIR/Method_OnOk.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSearch_OnClick#648.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonSearch_OnClick#118.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListFactory.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListGeneration.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListMQBMLB.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListPower.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelFactory.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryReport.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelRight.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_Panelleft#847.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageFactory.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageGeneration.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageMQBMLB.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPagePower.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuFactory.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuGeneration.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuMQBMLB.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuPower.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListFactory_OnCheckedChanged#618.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListFactory_OnCheckedChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListGeneration_OnCheckedChanged#568.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListGeneration_OnCheckedChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListMQBMLB_OnCheckedChanged#393.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListMQBMLB_OnCheckedChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListPower_OnCheckedChanged#925.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListPower_OnCheckedChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick#290.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSearch_OnClick.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor515.def 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor583.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixEditorActionBarPage338.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixEditorActionBarPage623.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixeditorContextMenu229.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixeditorContextMenu267.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pDetail.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pHeader.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pTotal.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_dhNewOfflinePlanTable_OnCreated.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bRefresh_OnClick.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/_ROOT_Component_FormNewOfflinePlan.def 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/HighlightRules.hl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/NewOfflinePlan.vw 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionColumn_InterfaceDataset_InterfaceDataset_A.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionRow_InterfaceDataset_InterfaceDataset_Asse.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersionSearch_InterfaceDataset_InterfaceDataset_A.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanVersionSearch_InterfaceDataset_InterfaceDataset_AssemblyOnlinePlanVersionSearch
{
  #keys: '1[415136.0.1184120209]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide InterfaceDataset
  {
    #keys: '3[415136.0.1184120211][415136.0.1184120210][415136.0.1184120212]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanVersionSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanVersionSearch
  {
    #keys: '3[415136.0.1184120214][415136.0.1184120213][415136.0.1184120215]'
    Cardinality: '0to1'
    ObjectDefinition: InterfaceDataset
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_Column_AssemblyOnlinePlanVersionColumn_Ve.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanVersion_Column_AssemblyOnlinePlanVersionColumn_Version
{
  #keys: '1[415136.0.1184171015]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.1184171034][415136.0.1184171028][415136.0.1184171035][415136.0.1184171029][415136.0.1184171036][415136.0.1184171030][415136.0.1184171037][415136.0.1184171031][415136.0.1184171038][415136.0.1184171032][415136.0.1184171039][415136.0.1184171033]'
    SequenceElementSuffix: 'VersionColumn'
    SequenceSuffix: 'VersionColumn'
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.1184171017][415136.0.1184171016][415136.0.1184171018]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanVersion
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Version
  {
    #keys: '3[415136.0.1184171020][415136.0.1184171019][415136.0.1184171021]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanVersionColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_InterfaceDataset_InterfaceDataset_Assembl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanVersion_InterfaceDataset_InterfaceDataset_AssemblyOnlinePlanVersion
{
  #keys: '1[415136.0.1184171001]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide InterfaceDataset
  {
    #keys: '3[415136.0.1184171003][415136.0.1184171002][415136.0.1184171004]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanVersion
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanVersion
  {
    #keys: '3[415136.0.1184171006][415136.0.1184171005][415136.0.1184171007]'
    Cardinality: '1toN'
    ObjectDefinition: InterfaceDataset
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanVersion_Row_AssemblyOnlinePlanVersionRow_Version.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanVersion_Row_AssemblyOnlinePlanVersionRow_Version
{
  #keys: '1[415136.0.1184170985]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Row
  {
    #keys: '3[415136.0.1184170987][415136.0.1184170986][415136.0.1184170988]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanVersion
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Version
  {
    #keys: '3[415136.0.1184170990][415136.0.1184170989][415136.0.1184170991]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanVersionRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Factory_MacroPlan_MacroPlan_Factory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Factory_MacroPlan_MacroPlan_Factory
{
  #keys: '1[415136.0.1188465634]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1188465636][415136.0.1188465635][415136.0.1188465637]'
    Cardinality: '0to1'
    ObjectDefinition: Factory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Factory
  {
    #keys: '3[415136.0.1188465639][415136.0.1188465638][415136.0.1188465640]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_InterfaceNewOfflinePlanDetailData_InterfaceNewOfflinePlanVersion_In.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation InterfaceNewOfflinePlanDetailData_InterfaceNewOfflinePlanVersion_InterfaceNewOfflinePlanVersion_InterfaceNewOfflinePlanDetailData
{
  #keys: '1[413988.0.1635820084]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide InterfaceNewOfflinePlanVersion
  {
    #keys: '3[413988.0.1635820086][413988.0.1635820085][413988.0.1635820087]'
    Cardinality: '0to1'
    ObjectDefinition: InterfaceNewOfflinePlanDetailData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide InterfaceNewOfflinePlanDetailData
  {
    #keys: '3[413988.0.1635820089][413988.0.1635820088][413988.0.1635820090]'
    Cardinality: '1toN'
    ObjectDefinition: InterfaceNewOfflinePlanVersion
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_InterfaceNewOfflinePlanVersion_InterfaceDataset_InterfaceDataset_In.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation InterfaceNewOfflinePlanVersion_InterfaceDataset_InterfaceDataset_InterfaceNewOfflinePlanVersion
{
  #keys: '1[413988.0.1635820033]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide InterfaceDataset
  {
    #keys: '3[413988.0.1635820035][413988.0.1635820034][413988.0.1635820036]'
    Cardinality: '0to1'
    ObjectDefinition: InterfaceNewOfflinePlanVersion
    OwningSide: 'Reference'
  }
  RelationSide.RightSide InterfaceNewOfflinePlanVersion
  {
    #keys: '3[413988.0.1635820038][413988.0.1635820037][413988.0.1635820039]'
    Cardinality: '1toN'
    ObjectDefinition: InterfaceDataset
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanCell_Detailed_NewOfflinePlanCell_Total.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanCell_Detailed_NewOfflinePlanCell_Total
{
  #keys: '1[413988.0.1603460432]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Detailed
  {
    #keys: '3[413988.0.1603460434][413988.0.1603460433][413988.0.1603460435]'
    Cardinality: '1toN'
    ObjectDefinition: NewOfflinePlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Total
  {
    #keys: '3[413988.0.1603460437][413988.0.1603460436][413988.0.1603460438]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanCell_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOff.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanCell_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOfflinePlanCell
{
  #keys: '1[413988.0.1603460144]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide NewOfflinePlanColumn
  {
    #keys: '3[413988.0.1603460146][413988.0.1603460145][413988.0.1603460147]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide NewOfflinePlanCell
  {
    #keys: '3[413988.0.1603460149][413988.0.1603460148][413988.0.1603460150]'
    Cardinality: '1toN'
    ObjectDefinition: NewOfflinePlanColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanRow_NewOfflinePlanCell_NewOfflinePlanCell_NewOfflineP.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanRow_NewOfflinePlanCell_NewOfflinePlanCell_NewOfflinePlanRow
{
  #keys: '1[413988.0.1603460131]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][413988.0.1603460275][413988.0.1603460269][413988.0.1603460276][413988.0.1603460270][413988.0.1603460277][413988.0.1603460271][413988.0.1603460278][413988.0.1603460272][413988.0.1603460279][413988.0.1603460273][413988.0.1603460280][413988.0.1603460274]'
    SequenceElementSuffix: 'NOPCell'
    SequenceSuffix: 'NOPCell'
    SortAttributes:
    [
      DeclarativeSequenceRelationSortAttribute
      {
        #keys: '1[413988.0.1603460282]'
        Attribute: 'StartDate'
      }
    ]
  }
  RelationSide.LeftSide NewOfflinePlanCell
  {
    #keys: '3[413988.0.1603460133][413988.0.1603460132][413988.0.1603460134]'
    Cardinality: '1toN'
    ObjectDefinition: NewOfflinePlanRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide NewOfflinePlanRow
  {
    #keys: '3[413988.0.1603460136][413988.0.1603460135][413988.0.1603460137]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanTable_MacroPlan_MacroPlan_NewOfflinePlanTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanTable_MacroPlan_MacroPlan_NewOfflinePlanTable
{
  #keys: '1[413988.0.1603460049]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1603460051][413988.0.1603460050][413988.0.1603460052]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanTable
    OwningSide: 'Reference'
  }
  RelationSide.RightSide NewOfflinePlanTable
  {
    #keys: '3[413988.0.1603460054][413988.0.1603460053][413988.0.1603460055]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanTable_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOf.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanTable_NewOfflinePlanColumn_NewOfflinePlanColumn_NewOfflinePlanTable
{
  #keys: '1[413988.0.1603460118]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide NewOfflinePlanColumn
  {
    #keys: '3[413988.0.1603460120][413988.0.1603460119][413988.0.1603460121]'
    Cardinality: '1toN'
    ObjectDefinition: NewOfflinePlanTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide NewOfflinePlanTable
  {
    #keys: '3[413988.0.1603460123][413988.0.1603460122][413988.0.1603460124]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewOfflinePlanTable_NewOfflinePlanRow_NewOfflinePlanRow_NewOfflineP.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewOfflinePlanTable_NewOfflinePlanRow_NewOfflinePlanRow_NewOfflinePlanTable
{
  #keys: '1[413988.0.1603460091]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide NewOfflinePlanRow
  {
    #keys: '3[413988.0.1603460093][413988.0.1603460092][413988.0.1603460094]'
    Cardinality: '1toN'
    ObjectDefinition: NewOfflinePlanTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide NewOfflinePlanTable
  {
    #keys: '3[413988.0.1603460096][413988.0.1603460095][413988.0.1603460097]'
    Cardinality: '0to1'
    ObjectDefinition: NewOfflinePlanRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ProductGeneration_MacroPlan_MacroPlan_ProductGeneration.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductGeneration_MacroPlan_MacroPlan_ProductGeneration
{
  #keys: '1[415136.0.1188500009]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1188500011][415136.0.1188500010][415136.0.1188500012]'
    Cardinality: '0to1'
    ObjectDefinition: ProductGeneration
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductGeneration
  {
    #keys: '3[415136.0.1188500014][415136.0.1188500013][415136.0.1188500015]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ProductMLBMQB_MacroPlan_MacroPlan_ProductMLBMQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductMLBMQB_MacroPlan_MacroPlan_ProductMLBMQB
{
  #keys: '1[415136.0.1188500048]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1188500050][415136.0.1188500049][415136.0.1188500051]'
    Cardinality: '0to1'
    ObjectDefinition: ProductMLBMQB
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductMLBMQB
  {
    #keys: '3[415136.0.1188500053][415136.0.1188500052][415136.0.1188500054]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ProductPower_MacroPlan_MacroPlan_ProductPower.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductPower_MacroPlan_MacroPlan_ProductPower
{
  #keys: '1[415136.0.1188465592]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1188465594][415136.0.1188465593][415136.0.1188465595]'
    Cardinality: '0to1'
    ObjectDefinition: ProductPower
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductPower
  {
    #keys: '3[415136.0.1188465597][415136.0.1188465596][415136.0.1188465598]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
@@ -3,7 +3,7 @@
StaticMethod GenerateData (
  InterfaceDataset owner,
  String werk,
  const MacroPlan macroplan,
  String version,
  Date startdate,
  Date enddate,
  String executor
@@ -33,41 +33,43 @@
                                                      , ReturnMsg := 'Success'
                                                      , Success := true
                                                      );
    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, ZPPPSCode := OS::GenerateGUIDAsString(), Werk := werk, Version := macroplan.ScenarioName(), StartDate := startdate, EndDate := enddate );
    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, ZPPPSCode := OS::GenerateGUIDAsString(), Werk := werk, Version := version, StartDate := startdate, EndDate := enddate );
    loginfo.AOnlineAndMOfflinePlanPIR( relinsert, pir );
    traverse( macroplan, AssemblyOnlinePlanColumn, column, column.ColumnDate() >= startdate and column.ColumnDate() <= enddate ){
      traverse( column, AssemblyOnlinePlanCell, cell, ( werk = 'All' or cell.AssemblyOnlinePlanRow().ProductionLine().FindString( werk, 0 ) > -1 )
                and cell.AssemblyOnlinePlanRow().Type() = '1' ){
        quantityrow        := cell.AssemblyOnlinePlanRow();
        if( not exists( productids, Elements, e, e = quantityrow.ProductID() ) ){
          productids.Add( quantityrow.ProductID() );
        }
        pir.PIRData( relnew, Product           := quantityrow.ProductID()
                     , PlanningDate            := column.ColumnDate()
                     , PlanningQty             := [Number]cell.Value());
      }
    }
    traverse( macroplan, OfflinePlanTable, table ){
      traverse( table, OfflinePlanColumn, column, column.ColumnDate() >= startdate and column.ColumnDate() <= enddate ){
        traverse( column, OfflinePlanCell, cell, ( werk = 'All' or cell.OfflinePlanRow().ProductionLine().FindString( werk, 0 ) > -1 )
                  and ( cell.OfflinePlanRow().ProductionLine() <> 'DL_MOMO' or cell.OfflinePlanRow().ProductionLine() <> 'CC_MOMO' )
                  and cell.OfflinePlanRow().Type() = '1' ){
          row              := cell.OfflinePlanRow();
          if( not exists( productids, Elements, e, e = row.ProductID() ) ){
            productids.Add( row.ProductID() );
    traverse( owner, AssemblyOnlinePlanVersion, verison, not verison.IsShow() ){
      traverse( verison, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() >= startdate and column.StartDate() <= enddate ){
        traverse( column, Cell, cell, ( werk = 'All' or cell.Row().ProductionLine().FindString( werk, 0 ) > -1 )
                  and cell.Row().Type() = '1' ){
          quantityrow        := cell.Row();
          if( not exists( productids, Elements, e, e = quantityrow.ProductID() ) ){
            productids.Add( quantityrow.ProductID() );
          }
          pirdata          := selectobject(  pir, PIRData, pirdata, pirdata.Product() = row.ProductID() and pirdata.PlanningDate() = column.ColumnDate() );
          if( isnull( pirdata ) ){
            pirdata          := pir.PIRData( relnew, Product         := row.ProductID()
                                             , PlanningDate            := column.ColumnDate()
                                             , PlanningQty             := 0 );
          }
          pirdata.PlanningQty( pirdata.PlanningQty() + [Number]cell.Value() );
          pir.PIRData( relnew, Product           := quantityrow.ProductID()
                       , PlanningDate            := column.StartDate()
                       , PlanningQty             := [Number]cell.Value());
        }
      }
    }
    //traverse( version, OfflinePlanTable, table ){
    //  traverse( table, OfflinePlanColumn, column, column.ColumnDate() >= startdate and column.ColumnDate() <= enddate ){
    //    traverse( column, OfflinePlanCell, cell, ( werk = 'All' or cell.OfflinePlanRow().ProductionLine().FindString( werk, 0 ) > -1 )
    //              and ( cell.OfflinePlanRow().ProductionLine() <> 'DL_MOMO' or cell.OfflinePlanRow().ProductionLine() <> 'CC_MOMO' )
    //              and cell.OfflinePlanRow().Type() = '1' ){
    //      row              := cell.OfflinePlanRow();
    //      if( not exists( productids, Elements, e, e = row.ProductID() ) ){
    //        productids.Add( row.ProductID() );
    //      }
    //      pirdata          := selectobject(  pir, PIRData, pirdata, pirdata.Product() = row.ProductID() and pirdata.PlanningDate() = column.ColumnDate() );
    //      if( isnull( pirdata ) ){
    //        pirdata          := pir.PIRData( relnew, Product         := row.ProductID()
    //                                         , PlanningDate            := column.ColumnDate()
    //                                         , PlanningQty             := 0 );
    //      }
    //      pirdata.PlanningQty( pirdata.PlanningQty() + [Number]cell.Value() );
    //    }
    //  }
    //}
    traverse( productids, Elements, e ){
      for( date := startdate.StartOfWeek(); date <= enddate; date := ( date + Duration::Days( 1 ) ).Date() ){
        if( not exists( pir, PIRData, pirdata, pirdata.Product() = e and pirdata.PlanningDate() = date ) ){
_Main/BL/Type_AssemblyOnlinePlanCell0/StaticMethod_RefreshData.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_ColumnDate.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[415136.0.1184120166][415136.0.1184120165][415136.0.1184120167]'
  ValueType: Date
}
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[415136.0.1184120156][415136.0.1184120155][415136.0.1184120157]'
  ValueType: Date
}
_Main/BL/Type_AssemblyOnlinePlanColumn0/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.1184120146][415136.0.1184120145][415136.0.1184120147]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[415136.0.1184170976][415136.0.1184170975][415136.0.1184170977]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[415136.0.1184120223][415136.0.1184120222][415136.0.1184120224]'
  ValueType: Boolean
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.1184170979][415136.0.1184170978][415136.0.1184170980]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersion/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_AssemblyOnlinePlanVersion/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  Dates periods,
  String timeunit,
  Date starttime,
  Date endtime
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    mindate               := min( periods, Elements, period, period );
    maxdate               := max( periods, Elements, period, period );
    //查询日期返回需要在计划日期之内
    if( starttime < mindate and endtime > maxdate ){
      if( starttime < mindate ){
        starttime             := mindate;
      }
      if( endtime > maxdate ){
        endtime               := maxdate;
      }
      if( timeunit = Translations::MP_GlobalParameters_Day() ){
        for( start := starttime; start <= endtime; start := start.DateTime().StartOfNextDay().Date() ){
          periodname          := start.Format( "M2/D2/Y" );
          if( not exists( this, Column, column, column.StartDate() = start ) ){
            this.Column( relnew, ColumnName := periodname, StartDate := start, EndDate := start, TimeUnit := Translations::MP_GlobalParameters_Day() );
          }
        }
      }else if( timeunit = Translations::MP_GlobalParameters_Week() ){
    //    weekstartstr          := ' KW';
        for( start := starttime; start <= endtime; start := start.StartOfNextWeek() ){
          weekend             := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();//.Concat( weekstartstr.Concat( weekend.Week().Format( 'N(LPad0(2))' ) ) )
          this.Column( relnew, ColumnName := weekend.Format( "M2/D2/Y" ), StartDate := start, EndDate := weekend, TimeUnit := Translations::MP_GlobalParameters_Week() );
        }
      }else if( timeunit = Translations::MP_GlobalParameters_Month() ){
        for( start := starttime; start <= endtime; start := start.StartOfNextMonth() ){
          monthend            := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();//.Concat( ' ' ).Concat( monthend.Format( "MM", us_locale ).Concat( '/').Concat( [String]monthend.Month() ).Concat( '月' ) )
    //      us_locale := Locale::Construct( 'en_us' );
          this.Column( relnew, ColumnName := monthend.Format( "M2/D2/Y" ), StartDate := start, EndDate := monthend, TimeUnit := Translations::MP_GlobalParameters_Month() );
        }
      }
    }
    //weekstart             := periods.Element( 0 );
    //monthstart            := periods.Element( 0 );
    //traverse( periods, Elements, periodtime ){
    //  periodname          := periodtime.Format( "M2/D2/Y" );
    //
    //  this.Column( relnew, Name := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
    //
    //  if( periodtime = weekstart ){
    //    weekperiodname    := weekstart.Format( "M2/D2/Y" );
    //    this.Column( relnew, Name := weekperiodname, StartDate := weekstart, EndDate := ( weekstart + Duration::Days( 6 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() );
    //    weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
    //  }
    //  if( periodtime = monthstart ){
    //    monthperiodname   := monthstart.Format( "M2/D2/Y" );
    //    enddate           := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
    //    this.Column( relnew, Name := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() );
    //    monthstart        := monthstart.StartOfNextMonth();
    //  }
    //}
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetColumnByTimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method GetColumnByTimeUnit (
  String unit,
  Date period
) as AssemblyOnlinePlanVersionColumn
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-7-2024 (created)
    column := selectobject( this, Column, column, column.StartDate() <= period and column.EndDate() >= period and column.TimeUnit() = unit );
    return column;
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  const AssemblyOnlinePlanRow aoprow
) as AssemblyOnlinePlanVersionRow
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-11-2024 (created)
    row := selectobject( this, Row, row, row.ProductID() = aoprow.ProductID() and row.ProductionLine() = aoprow.ProductionLine() and row.Type() = aoprow.Type() );
    if( isnull( row ) ){
      row := this.Row( relnew, ProductID := aoprow.ProductID(), ProductionLine := aoprow.ProductionLine(), Type := aoprow.Type() );
      //初始化单元格
      row.InitializeCell();
    }
    return row;
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_GenerateData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateData (
  InterfaceDataset interface,
  RecycleBin recycle,
  const Archive archive
)
{
  Description: '生成可以下发的客户需求(PPA+IDS)数据'
  TextBody:
  [*
    // ç”„兰鸽 Aug-20-2024 (created)
    interface.CustomerDemandIDS( relflush );
    interface.CustomerDemandIDSSearch( relflush );
    allunit               := CustomerDemandIDS::GetDefaultAllUnit();
    interface.CustomerDemandIDSSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit );
    idstable              := interface.CustomerDemandIDS( relnew, ID := '客户需求', Name := '客户需求' );
    binaryValue           := TemplateManager::GetIDSFullTable( archive, Date::ActualDate().Year() );
    source                := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
    source.ReadStructure();
    Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "yyyy/MM/dd" );
    idsdates              := selectuniquevalues( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() > 2, cnv2.Convert( column.Name() ) );
    ppadates              := selectuniquevalues( interface, InterfaceForecast, forecast, forecast.Origin() = 'PPA', forecast.Date() );
    //ppadates              := construct( Dates );
    //traverse( macroplan, SalesDemand.astype( Forecast ), forecast, forecast.Origin() = 'PPA' ){
    //  ppadates            := ppadates.Union( selectuniquevalues( forecast, PlanningSalesDemandInPeriod, salesdemand, salesdemand.StartDate() ) );
    //}
    periods               := idsdates.Union( ppadates );
    periods               := selectuniquevalues( periods, Elements, e, e );
    idstable.GenerateColumn( periods.Sort() );
    traverse( recycle, GeneralExcelImportAndExportDataSource.GeneralExcelImportAndExportDataTable, table ){
      traverse( table, GeneralExcelImportAndExportDataRow, row ){
        productcell       := selectobject( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() = 2 );
        factorycell       := selectobject( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() = 0 );
        idsrow            := idstable.GetRowByUnit( productcell.Value(), factorycell.Value() );
        traverse( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 2 ){
          period          := cnv2.Convert( cell.GeneralExcelImportAndExportDataColumn().Name() );
          daycolumn       := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), period );
          weekcolumn      := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), period );
          monthcolumn     := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), period );
          idsrow.SetCellValue( daycolumn, [Number]cell.Value() );
          idsrow.SetCellValue( weekcolumn, [Number]cell.Value() );
          idsrow.SetCellValue( monthcolumn, [Number]cell.Value() );
        }
      }
    }
    traverse( interface, InterfaceForecast, forecast, forecast.Origin() = 'PPA' ){
      idsrow              := idstable.GetRowByUnit( forecast.PartNumber(), forecast.Factory() );
      daycolumn           := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), forecast.Date() );
      weekcolumn          := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), forecast.Date() );
      monthcolumn         := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), forecast.Date() );
      idsrow.SetCellValue( daycolumn, [Number]forecast.Quantity() );
      idsrow.SetCellValue( weekcolumn, [Number]forecast.Quantity() );
      idsrow.SetCellValue( monthcolumn, [Number]forecast.Quantity() );
    }
    source.Delete();
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/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_AssemblyOnlinePlanVersion/StaticMethod_GetDefaultName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultName () const declarative as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '装配上线计划全量表';
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshData (
  InterfaceDataset interface,
  const MacroPlan macroPlan
)
{
  TextBody:
  [*
    //根据当前版本的装配上线计划
    allunit                := AssemblyOnlinePlanVersion::GetDefaultAllUnit();
    name                   := AssemblyOnlinePlanVersion::GetDefaultName();
    search                 := interface.AssemblyOnlinePlanVersionSearch( relnew, Product := allunit, ProductionLine := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
    table                  := selectobject( interface, AssemblyOnlinePlanVersion, version, not version.IsShow() );
    if( isnull( table ) ){
      table                := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name );
    }
    showtable              := selectobject( interface, AssemblyOnlinePlanVersion, version, version.IsShow() );
    if( isnull( table ) ){
      showtable               := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name, IsShow := true );
    }
    aopcolumns             := selectuniquevalues(  macroPlan, AssemblyOnlinePlanColumn, aopcolumn, not exists( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = aopcolumn.ColumnDate() ), aopcolumn.ColumnDate() );
    table.GenerateColumn( aopcolumns, search.TimeUnit(), search.StartDate(), search.EndDate() );
    traverse( macroPlan, AssemblyOnlinePlanRow, aoprow ){
      row                  := table.GetRow( aoprow );
      traverse( aoprow, AssemblyOnlinePlanCell, aopcell ){
        column             := selectobject( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = aopcell.AssemblyOnlinePlanColumn().ColumnDate() );
        cell               := selectobject( row, Cell, cell, cell.Column() = column );
        cell.InventoryWeight( aopcell.InventoryWeight() );
        cell.ProductionSerialNumber( aopcell.ProductionSerialNumber() );
        cell.Quantity( aopcell.Quantity() );
        cell.Shift( aopcell.Shift() );
        cell.Value( aopcell.Value() );
      }
    }
    //showtable.Generate( search, products );
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersion/_ROOT_Type_AssemblyOnlinePlanVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlinePlanVersion
{
  #keys: '5[415136.0.1184170973][415136.0.1184170971][0.0.0][415136.0.1184170972][415136.0.1184170974]'
  BaseType: Object
  Description: '装配上线计划全表数据'
  StructuredName: 'AssemblyOnlinePlanVersions'
}
_Main/BL/Type_AssemblyOnlinePlanVersionRow/Method_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  AssemblyOnlinePlanVersionColumn column
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := column.Cell( relnew, InventoryWeight := 0, ProductionSerialNumber := 0, Quantity := 0, Shift := '', Value := '' );
    this.Cell( relinsert, cell );
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersionRow/Method_InitializeCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    traverse( this.Version(), Column, column ){
      this.Initialize( column );
    }
  *]
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[415136.0.1184120182][415136.0.1184120181][415136.0.1184120183]'
  ValueType: Date
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Product
{
  #keys: '3[415136.0.1184120194][415136.0.1184120193][415136.0.1184120195]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[415136.0.1184120240][415136.0.1184120239][415136.0.1184120241]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[415136.0.1184120197][415136.0.1184120196][415136.0.1184120198]'
  ValueType: Date
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[415136.0.1184120200][415136.0.1184120199][415136.0.1184120201]'
  Description: '日期类型'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/Attribute_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Unit
{
  #keys: '3[415136.0.1184120203][415136.0.1184120202][415136.0.1184120204]'
  Description: '产线'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Product
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: TimeUnit
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/DefaultValue_Unit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Unit
}
_Main/BL/Type_AssemblyOnlinePlanVersionSearch/_ROOT_Type_AssemblyOnlinePlanVersionSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlinePlanVersionSearch
{
  #keys: '5[415136.0.1184120179][415136.0.1184120177][0.0.0][415136.0.1184120178][415136.0.1184120180]'
  BaseType: Object
  Description: '查询类'
  StructuredName: 'AssemblyOnlinePlanVersionSearchs'
}
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_Coefficient.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_CoefficientValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CoefficientValue
{
  #keys: '3[415136.0.1188511347][415136.0.1188511346][415136.0.1188511348]'
  Description: '系数'
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl
@@ -6,7 +6,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    value := this.EstimateTotalCost() * this.Coefficient();
    value := this.EstimateTotalCost() * [Real]this.CoefficientValue();
    
    this.AllCost( value );
  *]
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CoefficientValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CoefficientValue
{
  #keys: '3[415136.0.1188511356][415136.0.1188511355][415136.0.1188511357]'
  Description: '系数'
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl
@@ -6,7 +6,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    value := this.EstimateTotalCost() * this.Coefficient();
    value := this.EstimateTotalCost() * [Real]this.CoefficientValue();
    
    this.AllCost( value );
  *]
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
@@ -12,32 +12,43 @@
    allunit          := '<All>';
    //清空之前存储的显示数据
    this.Clear();
    //年汇总
    yearcolumn := this.Column( relnew, Name := '汇总', StartDate := search.MacroPlan().StartOfPlanning().StartOfNextYear().Date() );
    //过滤后的产品id
    productids       := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                      and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                      and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
    sumrow           := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
    sumyearcell      := sumrow.Initialize( yearcolumn );
    traverse( table, Row, row ){
      productid      := construct( Strings );
      productid.Add( row.Name() );
      
      if( productids.ContainsAll( productid ) ){
        showrow      := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
        yearcell     := showrow.Initialize( yearcolumn );
        
        traverse( row, Cell, cell ){
          column     := selectobject( this, Column, column, column.Name() = cell.Column().Name() );
          
          sumcell    := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell  := sumrow.Cell( relnew, RentInCost            := 0
                                     , RentOutOfCost               := 0
                                     , WerkToRentTransCost         := 0
                                     , RentStorCost                := 0 );
            column.Cell( relinsert, sumcell );
            sumcell  := sumrow.Initialize( column );
          }
          //显示月单元格
          showcell   := showrow.Cell( relnew, RentInCost := cell.RentInCost(), RentOutOfCost := cell.RentOutOfCost(), WerkToRentTransCost := cell.WerkToRentTransCost(), RentStorCost := cell.RentStorCost() );
          column.Cell( relinsert, showcell );
          //显示年单元格
          yearcell.RentInCost( cell.RentInCost() + yearcell.RentInCost() );
          yearcell.RentOutOfCost( cell.RentOutOfCost() + yearcell.RentOutOfCost() );
          yearcell.WerkToRentTransCost( cell.WerkToRentTransCost() + yearcell.WerkToRentTransCost() );
          yearcell.RentStorCost( cell.RentStorCost() + yearcell.RentStorCost() );
          //显示合计年单元格
          sumyearcell.RentInCost( cell.RentInCost() + sumyearcell.RentInCost() );
          sumyearcell.RentOutOfCost( cell.RentOutOfCost() + sumyearcell.RentOutOfCost() );
          sumyearcell.WerkToRentTransCost( cell.WerkToRentTransCost() + sumyearcell.WerkToRentTransCost() );
          sumyearcell.RentStorCost( cell.RentStorCost() + sumyearcell.RentStorCost() );
          //显示合计月单元格
          sumcell.RentInCost( cell.RentInCost() + sumcell.RentInCost() );
          sumcell.RentOutOfCost( cell.RentOutOfCost() + sumcell.RentOutOfCost() );
          sumcell.WerkToRentTransCost( cell.WerkToRentTransCost() + sumcell.WerkToRentTransCost() );
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
@@ -127,7 +127,7 @@
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", c.Coefficient().Format( 'N(Dec)' ) );
        coefficientcellElement.SetAttribute( "value", c.CoefficientValue() );
        columnelement.AppendChild( coefficientcellElement );
        //总费用
        totalcostcellElement := xmlDOM.CreateElement( "cell" );
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
@@ -59,7 +59,7 @@
    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
    //          }
              else if( attricell.Value() = '系数' ){
                cell.Coefficient( [Number]valuecell.Value() );
                cell.CoefficientValue( valuecell.Value() );
              }
    //          else if( attricell.Value() = '总费用' ){
    //            cell.TotalCost( [Number]valuecell.Value() );
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -46,8 +46,8 @@
                enginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
                if( not isnull( enginecost ) ){
                  //入库量/包装容量*入库单价,入库量等于长春产量
                  quantity          := ceil( cell.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                  column            := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                  quantity    := ceil( cell.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                  column      := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                  //外租库入库费用 
                  ccrow.SetRentEnterCost( column, quantity );
                }
@@ -96,34 +96,23 @@
      destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
      isccrent               := table.IsInUnit( destisp, ccrent );
      if( isccspline and isccrent ){
        traverse( laneleg, Trip, trip, trip.Arrival().Date() < startofnextyear ){
          periodtime         := trip.Arrival().StartOfMonth().Date();
          periodname         := periodtime.Format( "M2/D2/Y" );
          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.StartDate() <= trip.Arrival().Date() and engine.EndDate() >= trip.Arrival().Date() );
          transcosts         := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.StartDate() <= trip.Arrival().Date() and trans.EndDate() >= trip.Arrival().Date() );
        traverse( table, Column, column ){
          alltrips           := selectset( laneleg, Trip, trip, trip.Arrival().Date() < column.StartDate().StartOfNextMonth() and trip.Arrival().Date() >= column.StartDate() );
          enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
          transcosts         := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
              product          := pit.Product_MP();
              productparents   := product.GetAllParent();
              if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////查询产品类型是发动机
                //在发动机成本参数表找到对应的包装容量
                enginecost     := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = ccfactory );
                //在运输成本参数表里找到发动机对应运输单价和装载容量
                transcost      := selectobject( transcosts, Elements, trans, trans.Origin() = 'CC åŽ‚å†…åº“'
                                                  and trans.Destination() = ccrent
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
                if( not isnull( enginecost ) and not isnull( transcost ) ){
                  row          := table.GetRow( pit.ProductID() );
                  products.Add( product );
                  //运输数量/包装容量/装载容量*运输单价
                  quantity     := ceil( ceil( [Number]pit.Quantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                  row.SetFactoryToRentTransCost( column, quantity );
                }
            producttrips     := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
            traverse( producttrips, Elements, producttrip ){
              row            := table.GetRow( producttrip );
              product        := selectobject( owner, Product_MP, product, product.ID() = producttrip );
              products.Add( product );
              quantity       := sum( alltrips, Elements.ProductInTrip, pit, pit.Product_MP() = product, pit.Quantity() );
              enginecost     := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB() and engine.Factory() = ccfactory );
              //在运输成本参数表里找到发动机对应运输单价和装载容量
              transcost      := selectobject( transcosts, Elements, trans, trans.Origin() = 'CC åŽ‚å†…åº“' and trans.Destination() = ccrent and exists( product.GetAllParent(), Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                cost := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                row.SetFactoryToRentTransCost( column, cost );
              }
            }
          }
@@ -131,36 +120,31 @@
      }
    }
    //外租库仓储费用:仓储数量/包装容量*仓储单价,在Actual inventories里取到长春外租库该发动机的仓储量,根据发动机号找到对应的Generation å’Œæ¨ªçºµåˆ¶ï¼Œåœ¨å‘动机成本参数表里找到对应的仓储单价和包装容量,用公式计算,月度进行汇总
    traverse( owner, StockingPoint_MP, stockingpoint ){
      //是否属于长春外租库
      isccrent                 := table.IsInUnit( stockingpoint, ccrent );
      if( isccrent ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf()
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
          //获取行
          product              := pisp.Product_MP();
          productparents       := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////查询产品类型是发动机
            //查询对应的发动机成本
            enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccfactory );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              row              := table.GetRow( pisp.ProductID() );
              products.Add( product );
              //当product planning的日期区间在需要的日期区间内
              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ){
                enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date() );
                if( not isnull( enginecost ) ){
                  periodtime   := pispip.Start().StartOfMonth().Date();
                  periodname   := periodtime.Format( "M2/D2/Y" );
                  quantity     := ceil( [Number]pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
    traverse( owner, StockingPoint_MP, stockingpoint, table.IsInUnit( stockingpoint, ccrent ) ){//是否属于长春外租库
      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent )//查询产品类型是发动机
                and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.PlannedInventoryLevelEnd() <> 0 ) ){
        //获取行
        product              := pisp.Product_MP();
        //查询对应的发动机成本
        enginecosts          := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB()and engine.Factory() = ccfactory );
        if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
          row                := table.GetRow( pisp.ProductID() );
          products.Add( product );
          //当product planning的日期区间在需要的日期区间内
    //      traverse( table, Column, column ){
    //        pispips          := selectset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.PlannedInventoryLevelEnd() <> 0
    //                                       and pispip.Start().Date() < column.StartDate().StartOfNextMonth() and pispip.Start().Date() >= column.StartDate() );
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.PlannedInventoryLevelEnd() <> 0 ){
            enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date() );
            if( not isnull( enginecost ) ){
              periodtime   := pispip.Start().StartOfMonth().Date();
              periodname   := periodtime.Format( "M2/D2/Y" );
              quantity     := ceil( pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                  
                  column       := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
              column       := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
                  
                  row.SetRentStorageCost( column, quantity );
                }
              }
              row.SetRentStorageCost( column, quantity );
            }
          }
        }
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
@@ -12,35 +12,30 @@
    allunit          := '<All>';
    //清空之前存储的显示数据
    this.Clear();
    //年汇总
    yearcolumn := this.Column( relnew, Name := '汇总', StartDate := search.MacroPlan().StartOfPlanning().StartOfNextYear().Date() );
    //过滤后的产品id
    productids       := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                      and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                      and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
    sumrow           := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
    sumyearcell      := sumrow.Initialize( yearcolumn );
    traverse( table, Row, row ){
      productid      := construct( Strings );
      productid.Add( row.Name() );
      
      if( productids.ContainsAll( productid ) ){
        showrow      := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
        yearcell     := showrow.Initialize( yearcolumn );
        
        traverse( row, Cell, cell ){
          column     := selectobject( this, Column, column, column.Name() = cell.Column().Name() );
          
          sumcell    := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell  := sumrow.Cell( relnew, CCRentInCost            := 0
                                     , CCRentOutOfCost               := 0
                                     , CCLongTransCost               := 0
                                     , CCShorTransCost               := 0
                                     , CCRentStorCost                := 0
                                     , DLRentInCost                  := 0
                                     , DLRentOutOfCost               := 0
                                     , WerkToDLRentTransCost         := 0
                                     , DLRentStorCost                := 0 );
            column.Cell( relinsert, sumcell );
            sumcell  := sumrow.Initialize( column );
          }
          //显示月单元格
          showcell   := showrow.Cell( relnew, CCRentInCost           := cell.CCRentInCost()
                                      , CCRentOutOfCost              := cell.CCRentOutOfCost()
                                      , CCLongTransCost              := cell.CCLongTransCost()
@@ -51,6 +46,27 @@
                                      , WerkToDLRentTransCost        := cell.WerkToDLRentTransCost()
                                      , DLRentStorCost            := cell.DLRentStorCost() );
          column.Cell( relinsert, showcell );
          //显示年单元格
          yearcell.CCRentInCost( cell.CCRentInCost() + yearcell.CCRentInCost() );
          yearcell.CCRentOutOfCost( cell.CCRentOutOfCost() + yearcell.CCRentOutOfCost() );
          yearcell.CCLongTransCost( cell.CCLongTransCost() + yearcell.CCLongTransCost() );
          yearcell.CCShorTransCost( cell.CCShorTransCost() + yearcell.CCShorTransCost() );
          yearcell.CCRentStorCost( cell.CCRentStorCost() + yearcell.CCRentStorCost() );
          yearcell.DLRentInCost( cell.DLRentInCost() + yearcell.DLRentInCost() );
          yearcell.DLRentOutOfCost( cell.DLRentOutOfCost() + yearcell.DLRentOutOfCost() );
          yearcell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + yearcell.WerkToDLRentTransCost() );
          yearcell.DLRentStorCost( cell.DLRentStorCost() + yearcell.DLRentStorCost() );
          //显示合计年单元格
          sumyearcell.CCRentInCost( cell.CCRentInCost() + sumyearcell.CCRentInCost() );
          sumyearcell.CCRentOutOfCost( cell.CCRentOutOfCost() + sumyearcell.CCRentOutOfCost() );
          sumyearcell.CCLongTransCost( cell.CCLongTransCost() + sumyearcell.CCLongTransCost() );
          sumyearcell.CCShorTransCost( cell.CCShorTransCost() + sumyearcell.CCShorTransCost() );
          sumyearcell.CCRentStorCost( cell.CCRentStorCost() + sumyearcell.CCRentStorCost() );
          sumyearcell.DLRentInCost( cell.DLRentInCost() + sumyearcell.DLRentInCost() );
          sumyearcell.DLRentOutOfCost( cell.DLRentOutOfCost() + sumyearcell.DLRentOutOfCost() );
          sumyearcell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + sumyearcell.WerkToDLRentTransCost() );
          sumyearcell.DLRentStorCost( cell.DLRentStorCost() + sumyearcell.DLRentStorCost() );
          //显示合计月单元格
          sumcell.CCRentInCost( cell.CCRentInCost() + sumcell.CCRentInCost() );
          sumcell.CCRentOutOfCost( cell.CCRentOutOfCost() + sumcell.CCRentOutOfCost() );
          sumcell.CCLongTransCost( cell.CCLongTransCost() + sumcell.CCLongTransCost() );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
@@ -187,7 +187,7 @@
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", c.Coefficient().Format( 'N(Dec)' ) );
        coefficientcellElement.SetAttribute( "value", c.CoefficientValue() );
        columnelement.AppendChild( coefficientcellElement );
        //总费用
        totalcostcellElement := xmlDOM.CreateElement( "cell" );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
@@ -69,7 +69,7 @@
    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
    //          }
              else if( attricell.Value() = '系数' ){
                cell.Coefficient( [Number]valuecell.Value() );
                cell.CoefficientValue( valuecell.Value() );
              }
    //          else if( attricell.Value() = '总费用' ){
    //            cell.TotalCost( [Number]valuecell.Value() );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
@@ -11,16 +11,10 @@
    produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
    name                      := DLEngineLogisticsCostReport::GetDefaultName();
    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
    ccunit                    := DLEngineLogisticsCostReport::GetDefaultCCUnit();
    dlunit                    := DLEngineLogisticsCostReport::GetDefaultDLUnit();
    ccfactory                 := DLEngineLogisticsCostReport::GetCCFactory();
    dlfactory                 := DLEngineLogisticsCostReport::GetDLFactory();
    //dlline                    := DLEngineLogisticsCostReport::GetStockingPointDLLine();
    //ccrent                    := DLEngineLogisticsCostReport::GetStockingPointCCRent();
    //dlrent                    := DLEngineLogisticsCostReport::GetStockingPointCCRent();
    
    startofplanning           := owner.StartOfPlanning().Date();
    //startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    
    table                     := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
@@ -33,57 +27,59 @@
    //外租库仓储费用:仓储数量/包装容量*仓储单价,在Actual inventories里取到长春外租库/大连外租库该发动机的仓储量,根据发动机号找到对应的Generation å’Œæ¨ªçºµåˆ¶ï¼Œåœ¨å‘动机成本参数表里找到对应的仓储单价和包装容量,用公式计算,月度进行汇总
    //长春外租库入库/出库费用,大连发动机的长春外租库的New supply
    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '外租库' ) ){
    //  unit                    := stockingpoint.Unit();
    //  parentunits             := unit.GetAllParent();
      //是否属于长春外租库用于长春外租库仓储费用
      isccrent                := stockingpoint.ID().StartsWith( '长春' ) or stockingpoint.ID().StartsWith( 'CC' );
      //是否属于大连发动机的长春外租库用于长春入库/出库费用
      isdltoccrent            := stockingpoint.ID().StartsWith( '大连发动机的长春' );
      //是否属于大连外租库用于大连外租库仓储费用
      isdlrent                := stockingpoint.ID().StartsWith( '大连' ) or stockingpoint.ID().StartsWith( 'DL' );
      if( isccrent or isdlrent ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf()
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
      isdlrent                := not isdltoccrent and stockingpoint.ID().StartsWith( '大连' ) or stockingpoint.ID().StartsWith( 'DL' );
      if( isdlrent or isdltoccrent){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf()
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
          //获取行
          product             := pisp.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            row               := table.GetRow( pisp.ProductID() );
            enginecosts       := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB() );
            transcosts        := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( pisp.Product_MP() );
              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0  ){
              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
                        and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ){
                periodtime    := pispip.Start().StartOfMonth().Date();
                periodname    := periodtime.Format( "M2/D2/Y" );
                column        := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
                cell          := selectobject( row, Cell, cell, cell.Column() = column );
                
                if( isccrent or isdltoccrent){
                if( isdltoccrent){
                  //在发动机成本参数表找到对应的包装容量
                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
                                                     and engine.Factory() = ccfactory );
                   if( not isnull( enginecost ) ){
                     if( isccrent ){
                       cost        := ceil( pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                       cell.CCRentStorCost( cell.CCRentStorCost() + cost );//长春外租库仓储费用
                     }else{
                       cell.CCRentQty( cell.CCRentQty() + pispip.NewSupplyQuantity() );
                       //长春外租库入库费用:入库量/包装容量*入库单价
                       entercost  := ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                       //长春外租库出库费用: å‡ºåº“量/包装容量*出库单价
                       outcost    := ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
                       cell.CCRentInCost( cell.CCRentInCost() + entercost );
                       cell.CCRentOutOfCost( cell.CCRentOutOfCost() + outcost );
                     }
                   }
                  cell.CCRentQty( cell.CCRentQty() + pispip.NewSupplyQuantity() );
                  //长春外租库入库费用:入库量/包装容量*入库单价
                  entercost   := ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                  //长春外租库出库费用: å‡ºåº“量/包装容量*出库单价
                  outcost     := ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
                  cell.CCRentInCost( cell.CCRentInCost() + entercost );
                  cell.CCRentOutOfCost( cell.CCRentOutOfCost() + outcost );
                  cost        := ceil( pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                  cell.CCRentStorCost( cell.CCRentStorCost() + cost );//长春外租库仓储费用
                  transcost   := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() and trans.Origin() = '长春外租库' and trans.Destination() = '客户库' );
                  if( not isnull( transcost ) ){
                    cost      := ceil( ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
                    cell.CCShorTransCost( cell.CCShorTransCost() + cost );//长春短途运输费用
                  }
                } else {
                  //在发动机成本参数表找到对应的包装容量
                  enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
                                                     and engine.Factory() = dlfactory  );
                   if( not isnull( enginecost ) ){
                     cost        := ceil( [Number]pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                     cell.DLRentStorCost( cell.DLRentStorCost() + cost );//大连外租库仓储费用
                   }
                  if( not isnull( enginecost ) ){
                    cost      := ceil( pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                    cell.DLRentStorCost( cell.DLRentStorCost() + cost );//大连外租库仓储费用
                    row.SetDLRentEnterCost( column, enginecost, pispip.NewSupplyQuantity() );//大连外租库入库费用
                    transcost := selectobject( transcosts, Elements, trans, trans.StartDate() <= pispip.Start().Date() and trans.EndDate() >= pispip.Start().Date() and trans.Origin() = '大连厂内库' and trans.Destination() = '大连外租库' );
                    if( not isnull( transcost ) ){
                      cost    := ceil( ceil( pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                      row.SetFactoryToRentTransCost( column, cost );
                    }
                  }
                }
              }   
            }
@@ -91,177 +87,134 @@
        }
      }
    }
    //在 trip plan里找到大连装配线边库到大连外租库的运输数量//大连厂内库到外租库
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是大连装配线边库
      isdlspline             := laneleg.OriginStockingPointID().EndsWith( '厂内库' ) and ( laneleg.OriginStockingPointID().StartsWith( '大连' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );
      //目的地是否是大连外租库
      isdlrent               := laneleg.DestinationStockingPointID().EndsWith( '外租库' ) and ( laneleg.DestinationStockingPointID().StartsWith( '大连' ) or laneleg.DestinationStockingPointID().StartsWith( 'DL' ) );
      if( isdlspline and isdlrent ){
        traverse( laneleg, Trip, trip, trip.Departure().Date() < startofnextyear ){//由于需要考虑产品运输lead time,每个月的汇总数据需要推迟两天进行计算
          periodtime         := trip.Departure().StartOfMonth().Date();
          periodname         := periodtime.Format( "M2/D2/Y" );
          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.StartDate() <= trip.Departure().Date() and engine.EndDate() >= trip.Departure().Date() );
          transcosts         := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.StartDate() <= trip.Departure().Date() and trans.EndDate() >= trip.Departure().Date() );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 and not isnull( column ) and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
              quantity       := [Number]pit.Quantity();
              row            := table.GetRow( pit.ProductID() );
              product        := pit.Product_MP();
              productparents := product.GetAllParent();
              //在发动机成本参数表找到对应的包装容量
              enginecost     := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = dlfactory  );
              //在运输成本参数表里找到发动机对应运输单价和装载容量
              transcost      := selectobject( transcosts, Elements, trans, trans.Origin() = laneleg.OriginStockingPointID()
                                                  and trans.Destination() = laneleg.DestinationStockingPointID()
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                products.Add( product );
                cell         := selectobject( row, Cell, cell, cell.Column() = column );
                //运输数量/包装容量/装载容量*运输单价
                cost         := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                cell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + cost );
              }
            }
          }
        }
      }
    }
    //大连外租库入库费用:入库量/包装容量*入库单价,入库量等于大连工厂该产品产量减去发往长春(大连的长春外租库)的数量-newSupply
    traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//财务产量报表非导入
      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//财务产量报表不显示
        traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' and not cell.FinancialProductionColumn().IsDay() ) ){//财务产量报表里的大连产量, ä¸ä¸º0
          product            := row.Product_MP();
          productparents     := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlfactory );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( product );
              ccrow          := table.GetRow( row.Name() );
              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' and not cell.FinancialProductionColumn().IsDay() ){
                cellcolumn   := cell.FinancialProductionColumn();
                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
                if( not isnull( enginecost ) ){
                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                  //大连外租库入库费用
                  ccrow.SetDLRentEnterCost( column, enginecost, cell );
                }
              }
            }
          }
        }
      }
    }
    //大连外租库出库费用:出库量/包装容量*出库单价,出库量等于大连工厂该产品销量减去发往长春的数量-newSupply, å¤§è¿žåŽ‚å†…åº“ï¼Œå¤§è¿žå¤–ç§Ÿåº“
    traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//财务销量报表非导入
      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//财务销量报表不显示
        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' and not cell.FinancialSalesColumn().IsDay() ) ){//财务销量报表里的大连产量, ä¸ä¸º0
          product            := row.Product_MP();
          productparents     := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlfactory );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( product );
              ccrow          := table.GetRow( row.Name() );
              traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' and not cell.FinancialSalesColumn().IsDay() ){
                cellcolumn   := cell.FinancialSalesColumn();
                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
                if(  not isnull( enginecost ) ){
                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
                  //大连外租库出库费用
                  ccrow.SetDLRentOutCost( column, enginecost, cell );
                }
              }
            }
          }
        }
      }
    }
    //长春长途运输费用:调拨数量/包装容量/装载容量*运输单价,调拨计划里找到该产品从DL到CC的调拨数量,即起始地大连装配线边库,目的地为长春外租库对应的运输数量,在发动机成本参数表找到对应的包装容量,在运输成本参数表里找到发动机对应运输单价和装载容量,用公式计算得出结果,月度进行汇总
    traverse( owner, TransferPlanRow, tprow ){
      product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
      productparents          := product.GetAllParent();
      if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
        //起始库存点是否是大连(大连厂内库)
        isdl                   := tprow.SourceStockpoingPointID().EndsWith( '厂内库' ) and ( tprow.TargetStockpoingPointID().StartsWith( '大连' ) or tprow.TargetStockpoingPointID().StartsWith( 'DL' ) );
        //目的地库存点是否是长春(长春外租库)
        iscc                   := tprow.TargetStockpoingPointID().EndsWith( '外租库' ) and ( tprow.TargetStockpoingPointID().StartsWith( '长春' ) or tprow.TargetStockpoingPointID().StartsWith( 'CC' ) );
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是大连(大连厂内库)
      isdl                    := laneleg.OriginStockingPointID().EndsWith( '厂内库' ) and ( laneleg.OriginStockingPointID().StartsWith( '大连' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );
      //目的地库存点是否是长春(长春外租库)
      iscc                    := laneleg.DestinationStockingPointID() = '大连发动机的长春外租库';
        if( isdl and iscc ){
          //查询对应的发动机成本
          enginecosts          := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccfactory );
          //在运输成本参数表里找到发动机对应运输单价和装载容量
          transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.Origin() = tprow.SourceStockpoingPointID()
                                                  and trans.Destination() = tprow.TargetStockpoingPointID()
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
        traverse( table, Column, column){//, column.StartDate().Month() = 1
          alltrips            := selectset( laneleg, Trip, trip, trip.Arrival().Date() < column.StartDate().StartOfNextMonth() and trip.Arrival().Date() >= column.StartDate() );
          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
          transcosts          := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
            row                := table.GetRow( product.ID() );
            products.Add( product );
            traverse( tprow,TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() <> Date::MinDate() and [Number]tpcell.Value() > 0){
              tpcolumndate     := tpcell.TransferPlanColumn().ColumnDate();
              enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= tpcolumndate and engine.EndDate() >= tpcolumndate );
              transcost        := selectobject( transcosts, Elements, trans, trans.StartDate() <= tpcolumndate and trans.EndDate() >= tpcolumndate );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                periodtime     := tpcolumndate.StartOfMonth();
                periodname     := periodtime.Format( "M2/D2/Y" );
                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
                cost           := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
                cell           := selectobject( row, Cell, cell, cell.Column() = column );
                cell.CCLongTransCost( cell.CCLongTransCost() + cost );
              }
            producttrips      := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
            traverse( producttrips, Elements, producttrip ){//, producttrip = '6912'
              row             := table.GetRow( producttrip );
              product         := selectobject( owner, Product_MP, product, product.ID() = producttrip );
              products.Add( product );
              quantity        := sum( alltrips, Elements.ProductInTrip, pit, pit.Product_MP() = product, pit.Quantity() );
              enginecost      := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = ccfactory );
                //在运输成本参数表里找到发动机对应运输单价和装载容量
                transcost     := selectobject( transcosts, Elements, trans, trans.Origin() = laneleg.OriginStockingPointID()
                                                  and trans.Destination() = laneleg.DestinationStockingPointID()
                                                  and exists( product.GetAllParent(), Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
                if( not isnull( enginecost ) and not isnull( transcost ) ){
                  cost        := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                  cell        := selectobject( row, Cell, cell, cell.Column() = column );
                  cell.CCLongTransCost( cell.CCLongTransCost() + cost )
                }
            }
          }
        }
    //traverse( owner, TransferPlanRow, tprow ){
    //  product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
    //  productparents          := product.GetAllParent();
    //  if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
    //    //起始库存点是否是大连(大连厂内库)
    //    isdl                   := tprow.SourceStockpoingPointID().EndsWith( '厂内库' ) and ( tprow.TargetStockpoingPointID().StartsWith( '大连' ) or tprow.TargetStockpoingPointID().StartsWith( 'DL' ) );
    //    //目的地库存点是否是长春(长春外租库)
    //    iscc                   := tprow.TargetStockpoingPointID().EndsWith( '外租库' ) and ( tprow.TargetStockpoingPointID().StartsWith( '长春' ) or tprow.TargetStockpoingPointID().StartsWith( 'CC' ) );
    //    if( isdl and iscc ){
    //      //查询对应的发动机成本
    //      enginecosts          := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
    //                                             and engine.MLB_MQB() = product.MQBMLB()
    //                                             and engine.Factory() = ccfactory );
    //      //在运输成本参数表里找到发动机对应运输单价和装载容量
    //      transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.Origin() = tprow.SourceStockpoingPointID()
    //                                              and trans.Destination() = tprow.TargetStockpoingPointID()
    //                                              and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
    //      if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
    //        row                := table.GetRow( product.ID() );
    //        products.Add( product );
    //        traverse( tprow,TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() <> Date::MinDate() and [Number]tpcell.Value() > 0){
    //          tpcolumndate     := tpcell.TransferPlanColumn().ColumnDate();
    //          enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= tpcolumndate and engine.EndDate() >= tpcolumndate );
    //          transcost        := selectobject( transcosts, Elements, trans, trans.StartDate() <= tpcolumndate and trans.EndDate() >= tpcolumndate );
    //          if( not isnull( enginecost ) and not isnull( transcost ) ){
    //            periodtime     := tpcolumndate.StartOfMonth();
    //            periodname     := periodtime.Format( "M2/D2/Y" );
    //            column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
    //
    //            cost           := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
    //            cell           := selectobject( row, Cell, cell, cell.Column() = column );
    //            cell.CCLongTransCost( cell.CCLongTransCost() + cost );
    //          }
    //        }
    //      }
    //    }
      }
    }
    //长春短途运输费用:客户需求数量/包装容量/装载容量*运输单价,客户需求数量取自forecast里sales segment为长春的数量汇总,再用公式计算,月度进行汇总(取客户需求数量换算成车次)
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.Quantity() > 0 and not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < startofnextyear ){
      salessegment            := forecast.SalesSegment_MP();
      parentsalessegments     := salessegment.GetAllParent();
      //是否属于长春
      iscc                    := salessegment.Name().StartsWith( 'Changchun' ) or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name().StartsWith( 'Changchun' ) );
      if( iscc ){
        product               := forecast.Product_MP();
        productparents        := product.GetAllParent();
        if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
          //查询对应的发动机成本
    allforecast               := selectset( owner, SalesDemand.astype( Forecast ), forecast, forecast.Quantity() > 0 and not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < startofnextyear and //forecast.ProductID() = '6912' and forecast.StartDate().Month() = 1 and
    //                                         ( forecast.SalesSegment_MP().Name().StartsWith( 'Changchun' ) or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Changchun' ) ) or
                                               ( forecast.SalesSegment_MP().Name().StartsWith( 'Foshan' ) or forecast.SalesSegment_MP().Name().StartsWith( 'Tianjin' )
                                                or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Foshan' ) or psalessegment.Name().StartsWith( 'Tianjin' ) ) )
                                             and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) );
    //ccforecasts               := selectset( allforecast, Elements, forecast, forecast.SalesSegment_MP().Name().StartsWith( 'Changchun' ) or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Changchun' ) )  );
    //ccproducts                := selectuniquevalues( ccforecasts, Elements, forecast, forecast.ProductID() );
    dlforecasts               := selectset( allforecast, Elements, forecast, forecast.SalesSegment_MP().Name().StartsWith( 'Foshan' ) or forecast.SalesSegment_MP().Name().StartsWith( 'Tianjin' )
                                                or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Foshan' ) or psalessegment.Name().StartsWith( 'Tianjin' ) ) );
    dlproducts                := selectuniquevalues( dlforecasts, Elements, forecast, forecast.ProductID() );;
    //traverse( ccproducts, Elements, ccproduct){
    //  product                 := selectobject( owner, Product_MP, product, product.ID() = ccproduct );
    ////  info( '************', product.ID(), exists( ccforecasts, Elements, forecast, forecast.Quantity() > 0 ));
    //  //查询对应的发动机成本
    //      enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower()
    //                                             and engine.MLB_MQB() = product.MQBMLB()and engine.Factory() = ccfactory );
    //      //在运输成本参数表里找到发动机对应运输单价和装载容量
    //      transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.Origin() = '长春外租库'
    //                                              and trans.Destination() = '客户库'
    //                                              and exists( product.GetAllParent(), Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
    //  if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
    //    row               := table.GetRow( ccproduct )
    //    products.Add( product );
    //    traverse( table, Column, column ){
    //      allpsdips             := selectset( ccforecasts, Elements.PlanningSalesDemandInPeriod, psdip, psdip.ProductID() = ccproduct and psdip.Quantity() > 0 and psdip.StartDate() < column.StartDate().StartOfNextMonth() and psdip.StartDate() >= column.StartDate() );
    //      enginecost      := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
    //      transcost       := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() );
    //      if( not isnull( enginecost ) and not isnull( transcost ) ){
    //        quantity        := sum( allpsdips, Elements, psdip, psdip.Quantity() );
    //        cost           := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
    //         cell           := selectobject( row, Cell, cell, cell.Column() = column );
    //         cell.CCShorTransCost( cell.CCShorTransCost() + cost );
    //       }
    //    }
    //  }
    //}
    traverse( dlproducts, Elements, ccproduct){
      row                     := table.GetRow( ccproduct )
      product                 := selectobject( owner, Product_MP, product, product.ID() = ccproduct );
      //查询对应的发动机成本
          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccfactory );
          //在运输成本参数表里找到发动机对应运输单价和装载容量
          transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.Origin() = '长春外租库'
                                                  and trans.Destination() = '客户库'
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
            products.Add( forecast.Product_MP() );
            row               := table.GetRow( forecast.ProductID() );
            traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() > 0 ){
              enginecost      := selectobject( enginecosts, Elements, engine, engine.StartDate() <= psdip.StartDate() and engine.EndDate() >= psdip.StartDate() );
              transcost       := selectobject( transcosts, Elements, trans, trans.StartDate() <= psdip.StartDate() and trans.EndDate() >= psdip.StartDate() );
              if( not isnull( enginecost ) ){
                periodtime    := psdip.StartDate().StartOfMonth();
                periodname    := periodtime.Format( "M2/D2/Y" );
          //      info( '-------------------------', periodname, periodtime );
                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          //      info( '-------------------------', column.Name() );
                cost           := ceil( ceil( [Number]psdip.Quantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
                cell           := selectobject( row, Cell, cell, cell.Column() = column );
                cell.CCShorTransCost( cell.CCShorTransCost() + cost );
              }
            }
                                                 and engine.MLB_MQB() = product.MQBMLB()and engine.Factory() = dlfactory );
      if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
        traverse( table, Column, column ){
          allpsdips           := selectset( dlforecasts, Elements.PlanningSalesDemandInPeriod, psdip, psdip.ProductID() = ccproduct and psdip.Quantity() > 0 and psdip.StartDate() < column.StartDate().StartOfNextMonth() and psdip.StartDate() >= column.StartDate() );
          enginecost          := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
          if( not isnull( enginecost ) ){
            products.Add( product );
            quantity          := sum( allpsdips, Elements, psdip, psdip.Quantity() );
            cost              := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
            row.SetDLRentOutCost( column, cost );
          }
        }
      }
_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
@@ -2,16 +2,18 @@
#parent: #root
Method Initialize (
  CCEngineLogisticsCostColumn column
)
) as CCEngineLogisticsCostCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := this.Cell( relnew, RentInCost              := 0
                         , RentOutOfCost               := 0
                         , WerkToRentTransCost         := 0
                         , RentStorCost                := 0 );
                       , RentOutOfCost                 := 0
                       , WerkToRentTransCost           := 0
                       , RentStorCost                  := 0
                       , CoefficientValue              := '1.05' );
    
    column.Cell( relinsert, cell );
    return cell;
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
@@ -2,21 +2,23 @@
#parent: #root
Method Initialize (
  DLEngineLogisticsCostColumn column
)
) as DLEngineLogisticsCostCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := this.Cell( relnew, CCRentInCost              := 0
                         , CCRentOutOfCost               := 0
                         , CCLongTransCost               := 0
                         , CCShorTransCost               := 0
                         , CCRentStorCost                := 0
                         , DLRentInCost                  := 0
                         , DLRentOutOfCost               := 0
                         , WerkToDLRentTransCost         := 0
                         , DLRentStorCost                := 0 );
                       , CCRentOutOfCost                 := 0
                       , CCLongTransCost                 := 0
                       , CCShorTransCost                 := 0
                       , CCRentStorCost                  := 0
                       , DLRentInCost                    := 0
                       , DLRentOutOfCost                 := 0
                       , WerkToDLRentTransCost           := 0
                       , DLRentStorCost                  := 0
                       , CoefficientValue                := '1.05');
    
    column.Cell( relinsert, cell );
    return cell;
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
@@ -3,14 +3,13 @@
Method SetDLRentEnterCost (
  DLEngineLogisticsCostColumn column,
  LogisticsCostEngine enginecost,
  FinancialProductionCell fpcell
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created) 
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    quantity      := fpcell.Quantity() - cell.CCRentQty();
    //入库量/包装容量*入库单价,入库量等于长春产量
    cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
    othercost     := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OtherPrice();
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
@@ -2,19 +2,14 @@
#parent: #root
Method SetDLRentOutCost (
  DLEngineLogisticsCostColumn column,
  LogisticsCostEngine enginecost,
  FinancialSalesCell fscell
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    quantity      := [Number]fscell.Value() - cell.CCRentQty();
    //入库量/包装容量*入库单价,入库量等于长春产量
    cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
    value := cell.DLRentOutOfCost() + cost;
    value := cell.DLRentOutOfCost() + quantity;
    cell.DLRentOutOfCost( value );
  *]
}
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -17,31 +17,30 @@
    //过滤后的产品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 );
    sumname                 := 'SUM';
    sumstr                  := sumname.Format( 'S(Len(10))' );
    sumrowproduction        := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '总产量' ), sumname, '', rows.Size() * cellnr );
    sumrowdlproduction      := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '大连产量' ), sumname, '', sumrowproduction.RowNr() + 1 );
    sumrowccproduction      := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '长春产量' ), sumname, '', sumrowproduction.RowNr() + 2  );
    sumrowdemand            := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '总需求' ), sumname, '', sumrowproduction.RowNr() + 3 );
    rowno                   := sumrowproduction.RowNr() + 4;
    traverse( models, Elements, model ){
      EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', model.Concat( '需求' ), rowno, false );
      EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( model.Concat( '需求' ) ), sumname, model, rowno );
      rowno                 := rowno + 1;
    }
    sumrowinventory         := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, 'SUM', '库存', rowno, false );
    sumrowinventory         := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '库存' ), sumname, '', rowno );
    
    //行计数
    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 );
      rowname             := row.Name().Format( 'S(Len(10))' );
      showrowproduction   := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总产量' ), row.Name(), '', rownr );
      showrowdlproduction := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '大连产量' ), row.Name(), '', rownr + 1 );
      showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '长春产量' ), row.Name(), '', rownr + 2 );
      showrowdemand       := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总需求' ), row.Name(), '', rownr + 3 );
      rownr               := rownr + 4;
      modelsnr            := rownr + 3;
      models              := construct( Strings );
@@ -50,7 +49,7 @@
      traverse( uniquemodels, Elements, e ){
    
        if( rownr < modelsnr ){
          EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), e.Concat( '需求' ), rownr, false );
          EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( e.Concat( '需求' ) ), row.Name(), e, rownr );
          models.Add( e );
          rownr             := rownr + 1;
        }
@@ -58,9 +57,9 @@
    
      for( rownr := rownr; rownr < modelsnr; rownr ++ ){
    
        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false );
        EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '' ), row.Name(), '', rownr );
      }
      showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '库存', rownr, false );
      showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '库存' ), row.Name(), '', rownr );
    
      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
    
@@ -114,8 +113,8 @@
          sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
          
          traverse( cell, Demand, demand, exists( models, Elements, model, model = demand.Model() ) ){
            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model().Concat( '需求' ) ) );
            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model().Concat( '需求' ) ) );
            demandrow              := selectobject( this, Row, r, r.Product() = row.Name() and r.Demand() = demand.Model() );
            sumdemandrow           := selectobject( this, Row, r, r.Name() = sumname and r.Demand() = demand.Model() );
    
            if( not isnull( demandrow ) ){
              demandcell             := column.CellValue( relnew, Value := [String]demand.Quantity() );
@@ -155,7 +154,7 @@
    }
    traverse( this, Column, column ){
      for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = 'SUM' );
        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = sumname );
    //    info( '------------------14----------------' );
        if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
          demandcell           := column.CellValue( relnew, Value := '' );
_Main/BL/Type_EnginePipelineReport/Method_GenerateNew.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_EnginePipelineRow/Attribute_Demand.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Demand
{
  #keys: '3[415136.0.1188490188][415136.0.1188490187][415136.0.1188490189]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineRow/Attribute_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Product
{
  #keys: '3[415136.0.1188500276][415136.0.1188500275][415136.0.1188500277]'
  ValueType: String
}
_Main/BL/Type_EnginePipelineRow/DefaultValue_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Product
}
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
@@ -2,26 +2,17 @@
#parent: #root
StaticMethod CraeteCellValueForRow (
  EnginePipelineReport table,
  EnginePipelineColumn productcolumn,
  EnginePipelineColumn attricolumn,
  String productname,
  String attriname,
  Number rownr,
  Boolean isfirst
  String name,
  String product,
  String demand,
  Number rownr
) 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 );
    traverse( table, Column, column, column.Index() > 1 ){
    row           := table.Row( relnew, Name := name, RowNr := rownr, Product := product, Demand := demand );
    traverse( table, Column, column ){
      cell        := column.CellValue( relnew, Value := '0' );
      row.CellValue( relinsert, cell );
    }
_Main/BL/Type_Factory/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[415136.0.1188465615][415136.0.1188465614][415136.0.1188465616]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Factory/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.1188465625][415136.0.1188465624][415136.0.1188465626]'
  ValueType: String
}
_Main/BL/Type_Factory/StaticMethod_Initilize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initilize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-12-2024 (created)
    owner.Factory( relflush );
    owner.Factory( relnew, ID :=  "<All>", Name := 'All' );
    owner.Factory( relnew, ID := InventorySummaryReport::GetDefaultCCUnit(), Name := InventorySummaryReport::GetDefaultCCUnit() );
    owner.Factory( relnew, ID := InventorySummaryReport::GetDefaultDLUnit(), Name := InventorySummaryReport::GetDefaultDLUnit() );
  *]
}
_Main/BL/Type_Factory/_ROOT_Type_Factory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Factory
{
  #keys: '5[415136.0.1188465611][415136.0.1188465609][0.0.0][415136.0.1188465610][415136.0.1188465612]'
  BaseType: Object
  Description: '查询工厂'
  StructuredName: 'Factorys'
}
_Main/BL/Type_FinancialProductionCell/Attribute_IsUpdate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute IsUpdate
{
  #keys: '3[415136.0.1188550030][415136.0.1188550029][415136.0.1188550031]'
  Description: '是否被更新'
  ValueType: Boolean
}
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
@@ -6,35 +6,58 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    allunit := FinancialProductionReport::GetDefaultAllUnit();
    table   := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and not table.IsShow() );
    //info( '--------------------------', table.Name() );
    //查询需要导入的报表
    table                   := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and not table.IsShow() );
    cnv2                    := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    traverse( this, FinancialProductionReport, report ){
      productcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' );
      unitcolumn    := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Unit' );
    //  info( '----------------------1-----------------', productcolumn.Name(), unitcolumn.Name() );
      //获取导入的产品列和工厂列
      productcolumn         := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' );
      unitcolumn            := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Unit' );
      //读取每一行
      traverse( report, FinancialProductionRow, row ){
        product := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn );
        unit    := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn );
    //    info( '----------------------2-----------------', product.Value(), unit.Value() );
        //获取产品和工厂
        product             := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn );
        unit                := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn );
        
        //获取被导入报表的工厂行
        unitrow := selectobject( table, FinancialProductionRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
        if( isnull( unitrow ) ){
          unitrow           := table.FinancialProductionRow( relnew, Name := product.Value(), Unit := unit.Value() );
        }
        allrow  := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
    //    info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
        // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
        if( isnull( unitrow ) ){
          allrow            := table.FinancialProductionRow( relnew, Name := product.Value(), Unit := allunit );
        }
        //读取每一行的单元格
        traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn ){
          column   := cell.FinancialProductionColumn();
          unitcell := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn().Name() = column.Name() );
          allcell  := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn().Name() = column.Name() );
    //      info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
          if( not isnull( unitcell ) ){
    //        unitcell.Value( cell.Value() );
            unitcell.Quantity( [Real]cell.Value() );
          //获取被导入报表的日期列
          tablecolumn       := selectobject( table, FinancialProductionColumn, column, not column.IsDay() and column.Name() = cell.FinancialProductionColumn().Name() );
          if( isnull( tablecolumn ) ){
            tablecolumn     := table.FinancialProductionColumn( relnew, Name := cell.FinancialProductionColumn().Name(), Period := cnv2.Convert( cell.FinancialProductionColumn().Name() ) );
          }
          if( not isnull( allcell ) ){
    //        value := [Real]cell.Value() + [Real]allcell.Value();
    //        allcell.Value( [String]value );
            allcell.Quantity( allcell.Quantity() + [Real]allcell.Value() );
          //获取被导入报表的单元格
          unitcell          := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn() = tablecolumn );
          if( isnull( unitcell ) ){
            unitcell        := tablecolumn.FinancialProductionCell( relnew, IsUpdate := true, Quantity := [Real]cell.Value(), Value := cell.Value() );
            unitrow.FinancialProductionCell( relinsert, unitcell );
          }else{
            if( unitcell.Quantity() <> [Real]cell.Value() ){
              unitcell.Quantity( [Real]cell.Value() );
              unitcell.IsUpdate( true );
            }
          }
          allcell           := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn() = tablecolumn );
          if( isnull( unitcell ) ){
            allcell         := tablecolumn.FinancialProductionCell( relnew, Quantity := [Real]cell.Value(), Value := cell.Value() );
            allrow.FinancialProductionCell( relinsert, allcell );
          }else{
            if( allcell.Quantity() <> [Real]cell.Value() ){
              allcell.Quantity( [Real]cell.Value() );
              allcell.IsUpdate( true );
            }
          }
        }
      }
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -11,10 +11,6 @@
    owner.FPImportData( relflush );
    ccunit                    := FinancialProductionReport::GetDefaultCCUnit();
    dlunit                    := FinancialProductionReport::GetDefaultDLUnit();
    //ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
    //dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
    //ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
    //dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
    allunit                   := FinancialProductionReport::GetDefaultAllUnit();
    source                    := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() );
    table                     := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
@@ -26,25 +22,12 @@
    search                    := owner.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    
    products                  := construct( Product_MPs );
    //需要的日期区间, å‘¨å’Œå¤©çš„只需要当前月
    //periods                   := selectset( owner, Period_MP, period, not period.IsHistorical()
    //                                        and period.StartDate() < startofnextmonth
    //                                        and period.TimeUnit() <> Translations::MP_GlobalParameters_Quarter()
    //                                        );
    //获取当前月需要的Period
    //currentperiods            := table.GetCurrentPeriod( startofplanning, periods );
    table.GenerateColumn( owner );
    //取当前版本的product planning里new supply字段,分大连和长春工厂的产线,进行加总
    //traverse( owner, StockingPoint_MP, stockingpoint ){
    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '厂内库' ) or stockingpoint.ID() = '大连外租库' ){
      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' );
      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '大连' );
    //  unit                    := stockingpoint.Unit();
    //  parentunits             := unit.GetAllParent();
      //是否属于长春工厂
    //  iscc                    := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
      //是否属于大连工厂
    //  isdl                    := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() 
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, pispip.Period_MP().StartDate() >= startofyear and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl
@@ -118,11 +118,11 @@
    cumulantcolumn            := table.FinancialWeeklyColumn( relnew, Name := '累计量' );
    proportioncolumn          := table.FinancialWeeklyColumn( relnew, Name := '占比' );
    //SUM
    totalpcellsum           := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluesum );
    totalpcellsum           := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]( [Number]totalpvaluesum ) );
    totalproduction.FinancialWeeklyCell( relinsert, totalpcellsum );
    dlpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluesum );
    dlpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]( [Number]dlpvaluesum ) );
    dlproduction.FinancialWeeklyCell( relinsert, dlpcellsum );
    ccpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluesum );
    ccpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]( [Number]ccpvaluesum ) );
    ccproduction.FinancialWeeklyCell( relinsert, ccpcellsum );
    totalscellsum           := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluesum );
    totalsales.FinancialWeeklyCell( relinsert, totalscellsum );
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_Order.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Order
{
  #keys: '3[413988.0.1635820128][413988.0.1635820127][413988.0.1635820129]'
  Description: '生产顺序(String)'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_OrderNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderNr
{
  #keys: '3[413988.0.1635820138][413988.0.1635820137][413988.0.1635820139]'
  Description: '生产顺序(Number)'
  ValueType: Number
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1635820181][413988.0.1635820180][413988.0.1635820182]'
  Description: '产品ID'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1635820098][413988.0.1635820097][413988.0.1635820099]'
  Description: '产线名'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1635820108][413988.0.1635820107][413988.0.1635820109]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternEnd.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternEnd
{
  #keys: '3[413988.0.1635820171][413988.0.1635820170][413988.0.1635820172]'
  Description: '班次结束时间'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternName
{
  #keys: '3[413988.0.1635820151][413988.0.1635820150][413988.0.1635820152]'
  Description: '班次名'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_ShiftPatternStart.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternStart
{
  #keys: '3[413988.0.1635820161][413988.0.1635820160][413988.0.1635820162]'
  Description: '班次开始时间'
  ValueType: String
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1635820118][413988.0.1635820117][413988.0.1635820119]'
  Description: '开始时间'
  ValueType: Date
}
_Main/BL/Type_InterfaceNewOfflinePlanDetailData/_ROOT_Type_InterfaceNewOfflinePlanDetailData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type InterfaceNewOfflinePlanDetailData
{
  #keys: '5[413988.0.1635820064][413988.0.1635820062][0.0.0][413988.0.1635820063][413988.0.1635820065]'
  BaseType: Object
  Description: '下线计划每个版本详细数据'
  StructuredName: 'InterfaceNewOfflinePlanDetailDatas'
}
_Main/BL/Type_InterfaceOfflinePlanVersion/Attribute_ScenarioName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ScenarioName
{
  #keys: '3[413988.0.1635820050][413988.0.1635820049][413988.0.1635820051]'
  Description: '版本名'
  ValueType: String
}
_Main/BL/Type_InterfaceOfflinePlanVersion/_ROOT_Type_InterfaceNewOfflinePlanVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type InterfaceNewOfflinePlanVersion
{
  #keys: '5[413988.0.1635820030][413988.0.1635820028][0.0.0][413988.0.1635820029][413988.0.1635820031]'
  BaseType: Object
  Description: '下线计划版本存档数据'
  StructuredName: 'InterfaceNewOfflinePlanVersions'
}
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -2,7 +2,8 @@
#parent: #root
Method Generate (
  InventorySummarySearch search,
  Product_MPs products
  Factorys factorys,
  Strings productids
)
{
  TextBody:
@@ -14,41 +15,17 @@
    //查询日期返回需要在计划日期之内
    if( search.StartDate().DateTime() < startofendyear and search.EndDate().DateTime() > startofyear ){
      table                   := selectobject( this, InventorySummarySource.InventorySummaryReport, report, not report.IsShow() );
      allunit                 := '<All>';
      //清空之前存储的显示数据
      this.Clear( search.Category(), search.StartDate().DateTime(), search.EndDate().DateTime() );
      //过滤后的产品id
      productids              := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                                     and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                                     and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
      sumrow                  := this.InventroySummaryRow( relnew, Name := 'SUM', Unit := search.Unit(), RowNr := table.InventroySummaryRow( relsize ) );
      sumrow.InitializeCell( this );
      traverse( table, InventroySummaryRow, row, row.Unit() = search.Unit() ){
        productid             := construct( Strings );
        productid.Add( row.Name() );
        if( productids.ContainsAll( productid ) ){
          showrow             := this.InventroySummaryRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
          traverse( this, InventorySummaryColumn, column ){
            sumcell           := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
            daycells          := selectset( row, InventorySummaryCell, cell, cell.InventorySummaryColumn().TimeUnit() = Translations::MP_GlobalParameters_Day() and
                                            cell.InventorySummaryColumn().StartDate() >= column.StartDate() and
                                            cell.InventorySummaryColumn().StartDate() <= column.EndaDate() );
            endinginventory   := maxobject( daycells, Elements, e, e.InventorySummaryColumn().StartDate() ).EndingInventory();
            minimuminventory  := min( daycells, Elements, e, e.MinimumInventory() );
            maximuminventory  := max( daycells, Elements, e, e.MaximumInventory() );
            averageinventory  := [Number]average( daycells, Elements, e, e.AverageInventory() );
            showcell := column.InventorySummaryCell( relnew, EndingInventory := endinginventory, MinimumInventory := minimuminventory, MaximumInventory := maximuminventory, AverageInventory := averageinventory );
            showrow.InventorySummaryCell( relinsert, showcell );
            sumcell.EndingInventory( sumcell.EndingInventory() + endinginventory );
            sumcell.MinimumInventory( sumcell.MinimumInventory() + minimuminventory );
            sumcell.MaximumInventory( sumcell.MaximumInventory() + maximuminventory);
            sumcell.AverageInventory( sumcell.AverageInventory() + averageinventory );
          }
        }
      traverse( factorys, Elements, factory ){
        this.GenerateShow( table, productids, factory.ID() );
      }
      rows                    := selectsortedset( this, InventroySummaryRow, row, row.Name() );
      i                       := 0;
      traverse( rows, Elements, e ){
        e.RowNr( i );
        i                     := i + 1;
      }
    }
  *]
_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -37,8 +37,8 @@
      }else if( timeunit = Translations::MP_GlobalParameters_Month() ){
        for( start := starttime; start <= endtime; start := start.StartOfNextMonth() ){
          monthend            := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
          this.InventorySummaryColumn( relnew, Name := monthend.Format( "M2/D2/Y" ).Concat( ' ' ).Concat( monthend.Format( "MM" ).Concat( '/').Concat( [String]monthend.Month() ).Concat( '月' ) ), StartDate := start.Date(), EndaDate := monthend, TimeUnit := Translations::MP_GlobalParameters_Month() );
          us_locale := Locale::Construct( 'en_us' );
          this.InventorySummaryColumn( relnew, Name := monthend.Format( "M2/D2/Y" ).Concat( ' ' ).Concat( monthend.Format( "MM", us_locale ).Concat( '/').Concat( [String]monthend.Month() ).Concat( '月' ) ), StartDate := start.Date(), EndaDate := monthend, TimeUnit := Translations::MP_GlobalParameters_Month() );
        }
      }
    }
_Main/BL/Type_InventorySummaryReport/Method_GenerateShow#925.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
#parent: #root
Method GenerateShow (
  InventorySummaryReport table,
  Strings productids,
  String factory
)
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-12-2024 (created)
    sumrow                    := this.InventroySummaryRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( 'SUM' ), Unit := factory );
    sumrow.InitializeCell( this );
    traverse( table, InventroySummaryRow, row, row.Unit() = factory ){
      productid               := construct( Strings );
      productid.Add( row.Name() );
      if( productids.ContainsAll( productid ) ){
        showrow               := this.InventroySummaryRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( row.Name() ), Unit := row.Unit(), RowNr := row.RowNr() );
        traverse( this, InventorySummaryColumn, column ){
          sumcell             := selectobject( column, InventorySummaryCell, c, c.InventroySummaryRow() = sumrow );
          daycells            := selectset( row, InventorySummaryCell, cell, cell.InventorySummaryColumn().TimeUnit() = Translations::MP_GlobalParameters_Day() and
                                            cell.InventorySummaryColumn().StartDate() >= column.StartDate() and
                                            cell.InventorySummaryColumn().StartDate() <= column.EndaDate() );
          endinginventory     := maxobject( daycells, Elements, e, e.InventorySummaryColumn().StartDate() ).EndingInventory();
          minimuminventory    := min( daycells, Elements, e, e.MinimumInventory() );
          maximuminventory    := max( daycells, Elements, e, e.MaximumInventory() );
          averageinventory    := [Number]average( daycells, Elements, e, e.AverageInventory() );
          showcell := column.InventorySummaryCell( relnew, EndingInventory := endinginventory, MinimumInventory := minimuminventory, MaximumInventory := maximuminventory, AverageInventory := averageinventory );
          showrow.InventorySummaryCell( relinsert, showcell );
          sumcell.EndingInventory( sumcell.EndingInventory() + endinginventory );
          sumcell.MinimumInventory( sumcell.MinimumInventory() + minimuminventory );
          sumcell.MaximumInventory( sumcell.MaximumInventory() + maximuminventory);
          sumcell.AverageInventory( sumcell.AverageInventory() + averageinventory );
        }
      }
    }
  *]
}
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -10,7 +10,7 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.InventorySummarySource( relflush );
    products                  := construct( Product_MPs );
    productids                := construct( Strings );
    allunit                   := InventorySummaryReport::GetDefaultAllUnit();
    ccunit                    := InventorySummaryReport::GetDefaultCCUnit();
    dlunit                    := InventorySummaryReport::GetDefaultDLUnit();
@@ -35,6 +35,7 @@
      isdl                    := exists( parentunits, Elements, punit, punit.ID().StartsWith( 'VWED DL' ) );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
          productids.Add( pisp.ProductID() );
          //获取工厂行
          factoryrow          := table.GetRow( ifexpr( iscc, ccunit, dlunit ), pisp.ProductID() );
          //获取合计行
@@ -44,7 +45,6 @@
                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
    
          traverse( pispips, Elements, pispip ){
            products.Add( pisp.Product_MP() );
            period            := pispip.Period_MP();
            periodtime        := period.Start().Date();
    //        periodname        := periodtime.Format( "M2/D2/Y" );
@@ -75,10 +75,11 @@
    }
    //再在库存更新的子界面库存点选择中找到这些库存点所关联的已勾选库位
    selections                := selectset( interface, InventoryPointSelection, selection, allsps.Find( selection.StockpoingPoint() ) >= 0 and selection.IsIncluded() );
    productids                := selectuniquevalues( selections, Elements, selection, selection.ProductID() );
    productidset              := selectuniquevalues( selections, Elements, selection, selection.ProductID() );
    //最后将这些库位中零件号的数量进行加总
    traverse( table, InventorySummaryColumn, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() < startofplanning.Date() ){
      traverse( productids, Elements, productid ){
      traverse( productidset, Elements, productid ){
        productids.Add( productid );
        column.GenerateCell( selections, ccsps, dlsps, table, column.StartDate(), column.EndaDate(), productid, allunit, ccunit, dlunit );
      }
    }
@@ -94,6 +95,8 @@
        e.Delete();
      }
    }
    showtable.Generate( search, products );
    factorys                  := selectset( owner, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() );
    showtable.Generate( search, factorys, productids );
  *]
}
_Main/BL/Type_InventorySummarySource/StaticMethod_InitiateSearch.qbl
@@ -23,8 +23,9 @@
    }
    table                     := selectobject( owner, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
    if( not isnull( table ) ){
      products                := selectset( owner, Product_MP, product, true );
      table.Generate( search, products );
      factorys                := selectset( owner, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() );
      productids              := selectuniquevalues( table, InventroySummaryRow, row, row.Name() );
      table.Generate( search, factorys, productids );
    }
    return table;
  *]
_Main/BL/Type_NewOfflinePlanCell/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[413988.0.1603460249][413988.0.1603460248][413988.0.1603460250]'
  ValueType: Date
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_InventoryWeight.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryWeight
{
  #keys: '3[413988.0.1606610060][413988.0.1606610059][413988.0.1606610061]'
  Description: '剩余库存 - æœ€å°åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_Order.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Order
{
  #keys: '3[413988.0.1603460357][413988.0.1603460356][413988.0.1603460358]'
  Description: '生产顺序(String)'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_OrderNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderNr
{
  #keys: '3[413988.0.1607288352][413988.0.1607288351][413988.0.1607288353]'
  Description: '生产顺序(Number)'
  ValueType: Number
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1603460347][413988.0.1603460346][413988.0.1603460348]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternEnd.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternEnd
{
  #keys: '3[413988.0.1603460415][413988.0.1603460414][413988.0.1603460416]'
  Description: '班次结束时间'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternName
{
  #keys: '3[413988.0.1603460389][413988.0.1603460388][413988.0.1603460390]'
  Description: '班次名'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_ShiftPatternStart.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternStart
{
  #keys: '3[413988.0.1603460402][413988.0.1603460401][413988.0.1603460403]'
  Description: '班次开始时间'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1603460239][413988.0.1603460238][413988.0.1603460240]'
  ValueType: Date
}
_Main/BL/Type_NewOfflinePlanCell/Attribute_TotalQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalQuantity
{
  #keys: '3[413988.0.1603460379][413988.0.1603460378][413988.0.1603460380]'
  Description: '合计'
  ValueType: Real
}
_Main/BL/Type_NewOfflinePlanCell/Function_CalcEndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcEndDate
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := guard( this.NewOfflinePlanColumn().EndDate(), Date::MinDate() );
    this.EndDate( value );
  *]
}
_Main/BL/Type_NewOfflinePlanCell/Function_CalcStartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcStartDate
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := guard( this.NewOfflinePlanColumn().StartDate(), Date::MinDate() );
    this.StartDate( value );
  *]
}
_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalQuantity
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := sum( this, Detailed, tempNOPC, true, tempNOPC.Quantity() );
    this.TotalQuantity( value );
  *]
}
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshOfflinePlan (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    macroPlan.NewOfflinePlanTable( relflush );
    nopt := macroPlan.NewOfflinePlanTable( relnew, SaveDateTime := DateTime::ActualTime() );
    // ç”Ÿæˆä¸‹çº¿è®¡åˆ’表【一条产线在同一天不会产生两次相同产品的周期任务】
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime()
    //           and u.Name() = "eMotor Assy (France)" // æµ‹è¯•本地场景时可以过滤
    //           and u.Name() = "DL-MoMo"              // æµ‹è¯•实际场景时可以过滤
              )
    {
      // å¾ªçŽ¯éåŽ†å‘¨æœŸä»»åŠ¡çš„NewSupply【生成明细下线计划】
      traverse ( u, Operation, o ) {
        traverse ( o, PeriodTaskOperation.NewSupply, ns ) {
          // ProductInStockingPoint_MP
          pisp     := ns.AsProductionSupply().ProductInStockingPoint_MP();
          // ProductInStockingPointInPeriodPlanningLeaf
          pispippl := ns.ProductInStockingPointInPeriodPlanningLeaf();
          // Period_MP
          pmp      := pispippl.Period_MP();
          // ShiftPattern
          sp       := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern();
          // ShiftDayTime
          sdt      := select( sp, ShiftDayTime, tempSDT, tempSDT.Name() = tempSDT.ShiftPattern().Name() );
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’【产线明细】行
          detailedNOPR   := select( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.ProductID() = pisp.ProductID() and tempNOPR.Type() = "1" );
          if ( isnull( detailedNOPR ) ) {
            detailedNOPR := nopt.NewOfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := pisp.ProductID(), Type := "1" );
          }
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’列
          nopc   := select( nopt, NewOfflinePlanColumn, tempNOPC, tempNOPC.StartDate() = pmp.StartDate() and tempNOPC.EndDate() = pmp.EndDate() );
          if ( isnull( nopc ) ) {
            nopc := nopt.NewOfflinePlanColumn( relnew, StartDate := pmp.StartDate(), EndDate := pmp.EndDate() );
          }
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’【产线明细】单元格
          detaileNOPCell := select( detailedNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = nopc );
          if ( isnull ( detaileNOPCell ) ) {
            detaileNOPCell := detailedNOPR.NewOfflinePlanCell( relnew,
                                                               Quantity          := ns.Quantity().Round( 0 ),
                                                               InventoryWeight   := pispippl.InventoryLevelEnd() - pispippl.MinInventoryLevel(),
                                                               ShiftPatternName  := guard( sdt.Name(), "" ),
                                                               ShiftPatternStart := guard( sdt.StartDateTime().Format( "H:m" ), "" ),
                                                               ShiftPatternEnd   := guard( sdt.EndDateTIme().Format( "H:m" ), "" ) );
            detaileNOPCell.NewOfflinePlanColumn( relset, nopc );
          }
        }
      }
      // è®¾ç½®ç”Ÿäº§é¡ºåºã€å¯¹ä¸‹çº¿è®¡åˆ’明细生效】
      // ã€ç”Ÿæˆåˆè®¡ä¸‹çº¿è®¡åˆ’】
      totalNOPR   := nopt.NewOfflinePlanRow( relnew, ProductID := "All", ProductionLine := u.ID(), Type := "2" );
      detailNOPRs := selectset( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.Type() = "1" );
      traverse ( detailNOPRs, Elements, detailNOPR ) {
        traverse ( detailNOPR, NewOfflinePlanCell, detailNOPCell ) {
          // ç”Ÿäº§ä¸‹çº¿è®¡åˆ’【产线合计】单元格
          totalNOPRCell   := select( totalNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = detailNOPCell.NewOfflinePlanColumn() );
          if ( isnull( totalNOPRCell ) ) {
            totalNOPRCell := totalNOPR.NewOfflinePlanCell( relnew );
            totalNOPRCell.NewOfflinePlanColumn( relset, detailNOPCell.NewOfflinePlanColumn() ); // è®¾ç½®åˆ—
            // å°†æ˜Žç»†å•元格关联到合计单元格
            totalNOPRCell.Detailed( relinsert, detailNOPCell );
          } else {
            // å°†æ˜Žç»†å•元格关联到合计单元格
            totalNOPRCell.Detailed( relinsert, detailNOPCell );
          }
        }
      }
      // è¡¥é½ç©ºæ ¼å­
      traverse ( nopt, NewOfflinePlanRow, nopr ) {
        traverse ( nopt, NewOfflinePlanColumn, nopc ) {
          cell   := select( nopr, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = nopc );
          if ( isnull( cell ) ) {
            cell := nopr.NewOfflinePlanCell( relnew );
            cell.NewOfflinePlanColumn( relset, nopc );
          }
        }
      }
    }
  *]
}
_Main/BL/Type_NewOfflinePlanCell/_ROOT_Type_NewOfflinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewOfflinePlanCell
{
  #keys: '5[413988.0.1603460079][413988.0.1603460077][0.0.0][413988.0.1603460078][413988.0.1603460080]'
  BaseType: Object
  Description: '下线计划单元格'
  StructuredName: 'NewOfflinePlanCells'
}
_Main/BL/Type_NewOfflinePlanColumn/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[413988.0.1603460170][413988.0.1603460169][413988.0.1603460171]'
  ValueType: Date
}
_Main/BL/Type_NewOfflinePlanColumn/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1603460160][413988.0.1603460159][413988.0.1603460161]'
  ValueType: Date
}
_Main/BL/Type_NewOfflinePlanColumn/_ROOT_Type_NewOfflinePlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewOfflinePlanColumn
{
  #keys: '5[413988.0.1603460074][413988.0.1603460072][0.0.0][413988.0.1603460073][413988.0.1603460075]'
  BaseType: Object
  Description: '下线计划列'
  StructuredName: 'NewOfflinePlanColumns'
}
_Main/BL/Type_NewOfflinePlanRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.0.1607288491][413988.0.1607288490][413988.0.1607288492]'
  Description: '显示名'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1603460321][413988.0.1603460320][413988.0.1603460322]'
  Description: '产品ID'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanRow/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1603460311][413988.0.1603460310][413988.0.1603460312]'
  Description: '产线名'
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanRow/Attribute_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Attribute Type
{
  #keys: '3[413988.0.1603460334][413988.0.1603460333][413988.0.1603460335]'
  Description:
  [*
    1:明细显示
    2:合计显示
  *]
  ValueType: String
}
_Main/BL/Type_NewOfflinePlanRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Oct-12-2024 (created)
    value := this.ProductionLine() + ifexpr( this.ProductID() = "All", "", "_" + this.ProductID() );
    this.Name( value );
  *]
}
_Main/BL/Type_NewOfflinePlanRow/Method_Filter.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method Filter (
  Entitys entitys
) declarative remote as Boolean
{
  TextBody:
  [*
    flag := false;
    traverse ( entitys, Elements.astype( Unit ), u, not flag ) {
      flag := u.Name() = this.ProductionLine();
    }
    return flag;
  *]
}
_Main/BL/Type_NewOfflinePlanRow/_ROOT_Type_NewOfflinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewOfflinePlanRow
{
  #keys: '5[413988.0.1603460069][413988.0.1603460067][0.0.0][413988.0.1603460068][413988.0.1603460070]'
  BaseType: Object
  Description: '下线计划行'
  StructuredName: 'NewOfflinePlanRows'
}
_Main/BL/Type_NewOfflinePlanTable/Attribute_SaveDateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SaveDateTime
{
  #keys: '3[413988.0.1603460037][413988.0.1603460036][413988.0.1603460038]'
  Description: '保存草稿的时间'
  ValueType: DateTime
}
_Main/BL/Type_NewOfflinePlanTable/_ROOT_Type_NewOfflinePlanTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewOfflinePlanTable
{
  #keys: '5[413988.0.1603460031][413988.0.1603460029][0.0.0][413988.0.1603460030][413988.0.1603460032]'
  BaseType: Object
  StructuredName: 'NewOfflinePlanTables'
}
_Main/BL/Type_ProductGeneration/Attribute_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Generation
{
  #keys: '3[415136.0.1188500025][415136.0.1188500024][415136.0.1188500026]'
  ValueType: String
}
_Main/BL/Type_ProductGeneration/StaticMethod_Initilize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initilize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-12-2024 (created)
    owner.ProductGeneration( relflush );
    generations           := selectuniquevalues( owner, Product_MP, product, product.Generation() );
    traverse( generations, Elements, e, e <> '' ){
      owner.ProductGeneration( relnew, Generation := e );
    }
  *]
}
_Main/BL/Type_ProductGeneration/_ROOT_Type_ProductGeneration.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ProductGeneration
{
  #keys: '5[415136.0.1188500006][415136.0.1188500004][0.0.0][415136.0.1188500005][415136.0.1188500007]'
  BaseType: Object
  Description: '产品Generation'
  StructuredName: 'ProductGenerations'
}
_Main/BL/Type_ProductMLBMQB/Attribute_MLBMQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MLBMQB
{
  #keys: '3[415136.0.1188500042][415136.0.1188500041][415136.0.1188500043]'
  ValueType: String
}
_Main/BL/Type_ProductMLBMQB/StaticMethod_Initilize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initilize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-12-2024 (created)
    owner.ProductMLBMQB( relflush );
    mlbmqbs           := selectuniquevalues( owner, Product_MP, product, product.MQBMLB() );
    traverse( mlbmqbs, Elements, e, e <> ''  ){
      owner.ProductMLBMQB( relnew, MLBMQB := e );
    }
  *]
}
_Main/BL/Type_ProductMLBMQB/_ROOT_Type_ProductMLBMQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ProductMLBMQB
{
  #keys: '5[415136.0.1188500039][415136.0.1188500037][0.0.0][415136.0.1188500038][415136.0.1188500040]'
  BaseType: Object
  Description: '产品MLBMQB'
  StructuredName: 'ProductMLBMQBs'
}
_Main/BL/Type_ProductPower/Attribute_Power.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Power
{
  #keys: '3[415136.0.1188465582][415136.0.1188465581][415136.0.1188465583]'
  ValueType: String
}
_Main/BL/Type_ProductPower/StaticMethod_Initilize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initilize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Oct-12-2024 (created)
    owner.ProductPower( relflush );
    powers           := selectuniquevalues( owner, Product_MP, product, product.Power() );
    traverse( powers, Elements, e, e <> ''  ){
      owner.ProductPower( relnew, Power := e );
    }
  *]
}
_Main/BL/Type_ProductPower/_ROOT_Type_ProductPower.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ProductPower
{
  #keys: '5[415136.0.1188465579][415136.0.1188465577][0.0.0][415136.0.1188465578][415136.0.1188465580]'
  BaseType: Object
  Description: '产品Power'
  StructuredName: 'ProductPowers'
}
_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
@@ -7,9 +7,9 @@
    AttributeKey: '[415136.0.1160240044]'
    Synonym: '总费用'
  }
  AttributeRepresentation Coefficient
  AttributeRepresentation CoefficientValue
  {
    AttributeKey: '[415136.0.986844757]'
    AttributeKey: '[415136.0.1188511346]'
    Synonym: '系数'
  }
  AttributeRepresentation EstimateTotalCost
_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
@@ -32,9 +32,9 @@
    AttributeKey: '[415136.0.1160164779]'
    Synonym: '长春短途运输费用'
  }
  AttributeRepresentation Coefficient
  AttributeRepresentation CoefficientValue
  {
    AttributeKey: '[415136.0.992900035]'
    AttributeKey: '[415136.0.1188511355]'
    Synonym: '系数'
  }
  AttributeRepresentation DLRentInCost
_Main/Sys/Repr/Global/FinancialProductionCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation FinancialProductionCell
{
  AttributeRepresentation Value
  {
    AttributeKey: '[415136.0.834715166]'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF6666'
        ConditionBody: 'object.IsUpdate()'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.834715218]' Visibility: 'Normal' }
}
_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation NewOfflinePlanCell
{
  AttributeRepresentation ShiftPatternEnd
  {
    AttributeKey: '[413988.0.1603460414]'
    Synonym: '班次结束时间'
  }
  AttributeRepresentation ShiftPatternName
  {
    AttributeKey: '[413988.0.1603460388]'
    Synonym: '班次'
  }
  AttributeRepresentation ShiftPatternStart
  {
    AttributeKey: '[413988.0.1603460401]'
    Synonym: '班次开始时间'
  }
  AttributeRepresentation TotalQuantity
  {
    AttributeKey: '[413988.0.1603460378]'
    Synonym: '总量'
  }
  RelationRepresentation AsFirstNOPCell { RelationKey: '[413988.0.1603460270]' Visibility: 'Normal' }
}
_Main/Sys/Repr/Global/ProductInStockingPointInPeriod.qrp
@@ -459,4 +459,5 @@
      InheritFormatting: false
    }
  }
  RelationRepresentation ActualPISPIPAsWithinPeriod { RelationKey: '[137118.0.348745522]' Visibility: 'Normal' }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,7 +22,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 5
        Taborder: 6
      ]
    }
    Component bOfflinePlan
@@ -45,7 +45,7 @@
        Description: 'AssemblyOnlinePlan'
        Image: 'PALM_TREE'
        Label: 'Filing plan'
        Taborder: 2
        Taborder: 3
      ]
    }
    Component bPackagingPlan
@@ -56,7 +56,7 @@
      [
        Image: 'SIXPACK_BEER'
        Label: 'Packaging plan'
        Taborder: 3
        Taborder: 4
      ]
    }
    Component bShippingActualData
@@ -67,7 +67,18 @@
      [
        Image: 'TABLE_CONNECTION'
        Label: 'Shipping data'
        Taborder: 4
        Taborder: 5
      ]
    }
    Component bNewOfflinePlan
    {
      #keys: '[413988.0.1607471411]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'LIGHTBULB'
        Label: 'Output plan'
        Taborder: 2
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewOfflinePlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgSecondDevelopmentPlan/bNewOfflinePlan
Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bNewOfflinePlan_OnClick
{
  #keys: '[413988.0.1607471572]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "NewOfflinePlan", true );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSMS64/Component_pnlLeft#88.def
@@ -44,63 +44,7 @@
      [
        Checked: true
        Label: '是否激活版本'
        Taborder: 8
      ]
    }
    Component ddlOriginMacroPlan
    {
      #keys: '[415136.0.1043064647]'
      BaseType: 'WebDropDownList'
      Databinding: 'ScenarioMP'
      Children:
      [
        Component deMacroPlan id:deMacroPlan_640
        {
          #keys: '[415136.0.1043064648]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            Taborder: 0
            Transformation: 'ScenarioMP'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '从版本'
        Taborder: 4
        Visible: false
      ]
    }
    Component ddlDestinationMacroPlan
    {
      #keys: '[415136.0.1043064790]'
      BaseType: 'WebDropDownList'
      Databinding: 'ScenarioMP'
      Children:
      [
        Component deMacroPlan950
        {
          #keys: '[415136.0.1043064791]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            Taborder: 0
            Transformation: 'ScenarioMP'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '到版本'
        Taborder: 6
        Visible: false
      ]
    }
    Component efVersionFrom
@@ -110,7 +54,7 @@
      Properties:
      [
        Label: '从版本'
        Taborder: 5
        Taborder: 4
      ]
    }
    Component efVersionTo
@@ -120,7 +64,7 @@
      Properties:
      [
        Label: '到版本'
        Taborder: 7
        Taborder: 5
      ]
    }
    Component ddslFactory
@@ -129,6 +73,7 @@
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: 'all;8200;8201'
        Label: '工厂代码'
        Strings: 'All;DL;CC'
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSPIR/Component_pnlLeft.def
@@ -36,44 +36,28 @@
        Taborder: 4
      ]
    }
    Component ddlMacroPlan
    {
      #keys: '[415136.0.1043063334]'
      BaseType: 'WebDropDownList'
      Databinding: 'ScenarioMP'
      Children:
      [
        Component deMacroPlan
        {
          #keys: '[415136.0.1043063336]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            Taborder: 0
            Transformation: 'ScenarioMP'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '版本'
        Taborder: 2
      ]
    }
    Component ddslFactory id:ddslFactory_424
    {
      #keys: '[415136.0.1047641312]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: 'all;8200;8201'
        Label: '工厂代码'
        Strings: 'All;DL;CC'
        Taborder: 1
      ]
    }
    Component efVersion
    {
      #keys: '[415136.0.1184400599]'
      BaseType: 'WebEditField'
      Properties:
      [
        Label: '版本'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSPIR/Method_OnOk.def
@@ -6,11 +6,7 @@
  Body:
  [*
    Form.ApplyChanges();
    componentmds    := ApplicationScope.ComponentMDS();
    mdsinstance     := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = ddlMacroPlan.Data().DatasetMDSID() );
    handle          := mdsinstance.GetMDSHandle()
    macroplan       := handle.AsMacroPlan();
    AOnlineAndMOfflinePlanPIR::GenerateData( InterfaceDataset, ddslFactory.Text(), macroplan, dsStartDate.Date(), dsEndDate.Date(), QuintiqUser::CurrentUser().DisplayName() );
    AOnlineAndMOfflinePlanPIR::GenerateData( InterfaceDataset, ddslFactory.Text(), efVersion.Text(), dsStartDate.Date(), dsEndDate.Date(), QuintiqUser::CurrentUser().DisplayName() );
    WebMessageBox::Success( "推送成功!" );
    Form.Close();
  *]
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def
@@ -26,7 +26,7 @@
      ]
      Properties:
      [
        Attributes: 'RentInCost;RentOutOfCost;WerkToRentTransCost;RentStorCost;EstimateTotalCost;Coefficient;AllCost'
        Attributes: 'RentInCost;RentOutOfCost;WerkToRentTransCost;RentStorCost;EstimateTotalCost;CoefficientValue;AllCost'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
@@ -4,8 +4,8 @@
  CCEngineLogisticsCostRow row,
  CCEngineLogisticsCostColumn column,
  CCEngineLogisticsCostCell cell,
  Number value,
  Number oldvalue
  String value,
  String oldvalue
) id:Response_MatrixEditorTable_358_OnUpdateValue
{
  #keys: '[415136.0.989501207]'
@@ -16,14 +16,14 @@
    Body:
    [*
      table            := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
      cell.Coefficient( value );
      cell.CoefficientValue( value );
      traverse( table, Row, trow, trow.Name() = row.Name() ){
        traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
          tcel.RentInCost( cell.RentInCost() );
          tcel.RentOutOfCost( cell.RentOutOfCost() );
          tcel.WerkToRentTransCost( cell.WerkToRentTransCost() );
          tcel.RentStorCost( cell.RentStorCost() );
          tcel.Coefficient( cell.Coefficient() );
          tcel.CoefficientValue( cell.CoefficientValue() );
        }
      }
    *]
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonSearch_OnClick.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      if( not isnull( DataHolderTable.Data() ) ){
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
@@ -26,7 +26,7 @@
      ]
      Properties:
      [
        Attributes: 'CCRentInCost;CCRentOutOfCost;CCLongTransCost;CCShorTransCost;CCRentStorCost;DLRentInCost;DLRentOutOfCost;WerkToDLRentTransCost;DLRentStorCost;DLRentOtherCost;EstimateTotalCost;Coefficient;AllCost'
        Attributes: 'CCRentInCost;CCRentOutOfCost;CCLongTransCost;CCShorTransCost;CCRentStorCost;DLRentInCost;DLRentOutOfCost;WerkToDLRentTransCost;DLRentStorCost;DLRentOtherCost;EstimateTotalCost;CoefficientValue;AllCost'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
@@ -4,8 +4,8 @@
  DLEngineLogisticsCostRow row,
  DLEngineLogisticsCostColumn column,
  DLEngineLogisticsCostCell cell,
  Number value,
  Number oldvalue
  String value,
  String oldvalue
) id:Response_MatrixEditorTable_OnUpdateValue
{
  #keys: '[415136.0.992750480]'
@@ -16,17 +16,23 @@
    Body:
    [*
      table            := selectobject( MacroPlan, DLEngineLogisticsCostReport, report, not report.IsShow() );
      info( focusedattribute );
      //cell.Coefficient( value );
      //traverse( table, Row, trow, trow.Name() = row.Name() ){
      //  traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
      //    tcel.RentEnterCost( cell.RentEnterCost() );
      //    tcel.RentOutCost( cell.RentOutCost() );
      //    tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
      //    tcel.RentStorageCost( cell.RentStorageCost() );
      //    tcel.Coefficient( cell.Coefficient() );
      //  }
      //}
      //info( focusedattribute );
      cell.CoefficientValue( value );
      traverse( table, Row, trow, trow.Name() = row.Name() ){
        traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
          tcel.CCRentInCost( cell.CCRentInCost() );
          tcel.CCRentOutOfCost( cell.CCRentOutOfCost() );
          tcel.CCLongTransCost( cell.CCLongTransCost() );
          tcel.CCRentStorCost( cell.CCRentStorCost() );
          tcel.CCShorTransCost( cell.CCShorTransCost() );
          tcel.DLRentInCost( cell.DLRentInCost() );
          tcel.DLRentOutOfCost( cell.DLRentOutOfCost() );
          tcel.DLRentOtherCost( cell.DLRentOtherCost() );
          tcel.DLRentStorCost( cell.DLRentStorCost() );
          tcel.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() );
          tcel.CoefficientValue( cell.CoefficientValue() );
        }
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      if( not isnull( DataHolderTable.Data() ) ){
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSearch_OnClick#648.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      if( not isnull( DataHolderTable.Data() ) ){
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonSearch_OnClick#118.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      if( not isnull( DataHolderTable.Data() ) ){
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListFactory.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListFactory
{
  #keys: '[415136.0.1190101823]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorFactory
    {
      #keys: '[415136.0.1190101824]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'Factory'
      ]
    }
    #child: listActionBarPageFactory
    Component DataSetLevelFactory
    {
      #keys: '[415136.0.1190101829]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuFactory
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
        ContextMenu: 'listContextMenuFactory'
        SortCriteria: 'ID'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListGeneration.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListGeneration
{
  #keys: '[415136.0.1191359025]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorGeneration
    {
      #keys: '[415136.0.1191359026]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'ProductGeneration'
      ]
    }
    #child: listActionBarPageGeneration
    Component DataSetLevelGeneration
    {
      #keys: '[415136.0.1191359031]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuGeneration
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Generation","title":"Generation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Generation"}}]'
        ContextMenu: 'listContextMenuGeneration'
        SortCriteria: 'Generation'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListMQBMLB.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListMQBMLB
{
  #keys: '[415136.0.1191359783]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorMQBMLB
    {
      #keys: '[415136.0.1191359784]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'external[MacroPlan]'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'ProductMLBMQB'
      ]
    }
    #child: listActionBarPageMQBMLB
    Component DataSetLevelMQBMLB
    {
      #keys: '[415136.0.1191359789]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuMQBMLB
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MLBMQB","title":"MLBMQB","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MLBMQB"}}]'
        ContextMenu: 'listContextMenuMQBMLB'
        SortCriteria: 'MLBMQB'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_ListPower.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListPower
{
  #keys: '[415136.0.1191390143]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorPower
    {
      #keys: '[415136.0.1191390144]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'external[MacroPlan]'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'ProductPower'
      ]
    }
    #child: listActionBarPagePower
    Component DataSetLevelPower
    {
      #keys: '[415136.0.1191390149]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuPower
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Power","title":"Power","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Power"}}]'
        ContextMenu: 'listContextMenuPower'
        SortCriteria: 'Power'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_MatrixEditorTable.def
@@ -1,19 +1,19 @@
Quintiq file version 2.0
Component MatrixEditorTable
{
  #keys: '[415136.0.864612253]'
  #keys: '[415136.0.1191390605]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellTable
    {
      #keys: '[415136.0.864612254]'
      #keys: '[415136.0.1191390606]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCell
        {
          #keys: '[415136.0.864612255]'
          #keys: '[415136.0.1191390607]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
@@ -34,13 +34,13 @@
    }
    Component MatrixEditorRowsTable
    {
      #keys: '[415136.0.864612256]'
      #keys: '[415136.0.1191390608]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRow
        {
          #keys: '[415136.0.864612257]'
          #keys: '[415136.0.1191390609]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
@@ -60,13 +60,13 @@
    }
    Component MatrixEditorColumnsTable
    {
      #keys: '[415136.0.864612258]'
      #keys: '[415136.0.1191390610]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumn
        {
          #keys: '[415136.0.864612259]'
          #keys: '[415136.0.1191390611]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelCategory.def
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelCategory
{
  #keys: '[415136.0.862221867]'
  #keys: '[415136.0.1191390575]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForPlanning id:RadioButtonGroupUseForPlanning_545
    Component RadioButtonGroupUseForPlanning
    {
      #keys: '[415136.0.862222092]'
      #keys: '[415136.0.1191390576]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelExport
{
  #keys: '[415136.0.862221896]'
  #keys: '[415136.0.1191390571]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonSummaryExport
    {
      #keys: '[415136.0.862221939]'
      #keys: '[415136.0.1191390572]'
      BaseType: 'WebButton'
      Properties:
      [
@@ -16,9 +16,9 @@
        Taborder: 1
      ]
    }
    Component ButtonSearch id:ButtonSearch_612
    Component ButtonSearch
    {
      #keys: '[415136.0.972100788]'
      #keys: '[415136.0.1191390573]'
      BaseType: 'WebButton'
      Properties:
      [
@@ -26,9 +26,9 @@
        Taborder: 0
      ]
    }
    Component bRefresh id:bRefresh_509
    Component bRefresh
    {
      #keys: '[415136.0.1153803172]'
      #keys: '[415136.0.1191390574]'
      BaseType: 'WebButton'
      Properties:
      [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelFactory.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component PanelFactory
{
  #keys: '[415136.0.1189939584]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListFactory
    Component dhFactorys
    {
      #keys: '[415136.0.1190170634]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[Factory]*'
      Properties:
      [
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
    Title: 'Unit'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelGeneration.def
@@ -1,24 +1,25 @@
Quintiq file version 2.0
Component PanelGeneration
{
  #keys: '[415136.0.864612093]'
  #keys: '[415136.0.1189909383]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslGeneration
    #child: ListGeneration
    Component dhGenerations
    {
      #keys: '[415136.0.864612094]'
      BaseType: 'WebDropDownStringList'
      #keys: '[415136.0.1190170676]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ProductGeneration]*'
      Properties:
      [
        Label: 'Generation'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
    Title: 'Generation'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryColumnSearch.def
@@ -1,18 +1,18 @@
Quintiq file version 2.0
Component PanelInventorySummaryColumnSearch
{
  #keys: '[415136.0.864612101]'
  #keys: '[415136.0.1191390567]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelPeriod
    #child: PanelExport
    #child: PanelCategory
    #child: PanelExport
    #child: PanelPeriod
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryHeader.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelInventorySummaryReport
{
  #keys: '[415136.0.1189939411]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: Panelleft_847
    #child: PanelRight
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelMQBMLB.def
@@ -1,24 +1,25 @@
Quintiq file version 2.0
Component PanelMQBMLB
{
  #keys: '[415136.0.864612095]'
  #keys: '[415136.0.1191359549]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslMQBMLB
    #child: ListMQBMLB
    Component dhMQBMLBs
    {
      #keys: '[415136.0.864612096]'
      BaseType: 'WebDropDownStringList'
      #keys: '[415136.0.1191538373]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ProductMLBMQB]*'
      Properties:
      [
        Label: 'MQB/MLB'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
    Title: 'MLB/MQB'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPeriod.def
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelPeriod
{
  #keys: '[415136.0.862221329]'
  #keys: '[415136.0.1191390568]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStart
    {
      #keys: '[415136.0.862221355]'
      #keys: '[415136.0.1191390569]'
      BaseType: 'WebDateSelector'
      Properties:
      [
@@ -17,7 +17,7 @@
    }
    Component DateSelectorEnd
    {
      #keys: '[415136.0.862221609]'
      #keys: '[415136.0.1191390570]'
      BaseType: 'WebDateSelector'
      Properties:
      [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelPower.def
@@ -1,24 +1,25 @@
Quintiq file version 2.0
Component PanelPower
{
  #keys: '[415136.0.864612097]'
  #keys: '[415136.0.1191390095]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslPower
    #child: ListPower
    Component dhPowers
    {
      #keys: '[415136.0.864612098]'
      BaseType: 'WebDropDownStringList'
      #keys: '[415136.0.1191538402]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ProductPower]*'
      Properties:
      [
        Label: 'Power'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 3
    Title: 'Power'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelRight.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelRight
{
  #keys: '[415136.0.1191390495]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelInventorySummaryColumnSearch
    #child: PanelTable
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelTable.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component PanelTable
{
  #keys: '[415136.0.864612252]'
  #keys: '[415136.0.1191390604]'
  BaseType: 'WebPanel'
  Children:
  [
@@ -9,6 +9,6 @@
  ]
  Properties:
  [
    Taborder: 3
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelUnit.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_Panelleft#847.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelInventorySummaryProductSearch.def ÐÞ¸Ä
@@ -1,11 +1,11 @@
Quintiq file version 2.0
Component PanelInventorySummaryProductSearch
Component Panelleft id:Panelleft_847
{
  #keys: '[415136.0.864612090]'
  #keys: '[415136.0.1189939498]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelUnit
    #child: PanelFactory
    #child: PanelGeneration
    #child: PanelMQBMLB
    #child: PanelPower
@@ -13,7 +13,7 @@
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    MinimumColumns: 20
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageFactory.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageFactory
{
  #keys: '[415136.0.1190101826]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageGeneration.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageGeneration
{
  #keys: '[415136.0.1191359028]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPageMQBMLB.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageMQBMLB
{
  #keys: '[415136.0.1191359786]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listActionBarPagePower.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPagePower
{
  #keys: '[415136.0.1191390146]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuFactory.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuFactory
{
  #keys: '[415136.0.1190101831]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuGeneration.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuGeneration
{
  #keys: '[415136.0.1191359033]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuMQBMLB.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuMQBMLB
{
  #keys: '[415136.0.1191359791]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_listContextMenuPower.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuPower
{
  #keys: '[415136.0.1191390151]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixEditorActionBarPageTable.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable
{
  #keys: '[415136.0.864612260]'
  #keys: '[415136.0.1191390612]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_matrixeditorContextMenuTable.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable
{
  #keys: '[415136.0.864612261]'
  #keys: '[415136.0.1191390613]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListFactory_OnCheckedChanged#618.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ListFactory
Response OnCheckedChanged () id:Response_ListFactory_OnCheckedChanged_618
{
  #keys: '[415136.0.1191538923]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections        := selectset( MacroPlan, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() );
      dhFactorys.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListFactory_OnCheckedChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListFactory
Response OnCheckedChanged (
  structured[Factory] checkeditems
) id:Response_ListFactory_OnCheckedChanged
{
  #keys: '[415136.0.1191538454]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections := checkeditems.Copy();
      dhFactorys.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListGeneration_OnCheckedChanged#568.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ListGeneration
Response OnCheckedChanged () id:Response_ListGeneration_OnCheckedChanged_568
{
  #keys: '[415136.0.1190170961]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections     := selectset( MacroPlan, ProductGeneration, generation, true );
      dhGenerations.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListGeneration_OnCheckedChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListGeneration
Response OnCheckedChanged (
  structured[ProductGeneration] checkeditems
) id:Response_ListGeneration_OnCheckedChanged
{
  #keys: '[415136.0.1190170872]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections := checkeditems.Copy();
      dhGenerations.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListMQBMLB_OnCheckedChanged#393.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ListMQBMLB
Response OnCheckedChanged () id:Response_ListMQBMLB_OnCheckedChanged_393
{
  #keys: '[415136.0.1190171384]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections     := selectset( MacroPlan, ProductMLBMQB, generation, true );
      dhMQBMLBs.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListMQBMLB_OnCheckedChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListMQBMLB
Response OnCheckedChanged (
  structured[ProductMLBMQB] checkeditems
) id:Response_ListMQBMLB_OnCheckedChanged
{
  #keys: '[415136.0.1190171046]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections := checkeditems.Copy();
      dhMQBMLBs.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListPower_OnCheckedChanged#925.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ListPower
Response OnCheckedChanged () id:Response_ListPower_OnCheckedChanged_925
{
  #keys: '[415136.0.1190171465]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections     := selectset( MacroPlan, ProductPower, generation, true );
      dhPowers.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_ListPower_OnCheckedChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListPower
Response OnCheckedChanged (
  structured[ProductPower] checkeditems
) id:Response_ListPower_OnCheckedChanged
{
  #keys: '[415136.0.1190171144]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
  QuillAction
  {
    Body:
    [*
      selections := checkeditems.Copy();
      dhPowers.Data( &selections );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -10,6 +10,10 @@
    Body:
    [*
      table := InventorySummarySource::InitiateSearch( MacroPlan );
      Factory::Initilize( MacroPlan );
      ProductGeneration::Initilize( MacroPlan );
      ProductPower::Initilize( MacroPlan );
      ProductMLBMQB::Initilize( MacroPlan );
      //table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelCategory/RadioButtonGroupUseForPlanning_545
Response OnChanged () id:Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged_847
#parent: PanelCategory/RadioButtonGroupUseForPlanning
Response OnChanged () id:Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged
{
  #keys: '[415136.0.862222091]'
  #keys: '[415136.0.1191390561]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated.def
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelCategory/RadioButtonGroupUseForPlanning_545
#parent: PanelCategory/RadioButtonGroupUseForPlanning
Response OnCreated () id:Response_PanelCategory_RadioButtonGroupUseForPlanning_OnCreated
{
  #keys: '[415136.0.875614032]'
  #keys: '[415136.0.1191390560]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick#290.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonSearch
Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick
{
  #keys: '[415136.0.1191390563]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      c := 'VWED CC';
      info( c.Format( 'S(Len(10),AlignRight)' ), c.Format( 'S(Len(10))' ) );
      a := 'All';
      info( a.Format( 'S(Len(10),AlignRight)' ), a.Format( 'S(Len(10))' ) );
      if( not isnull( DataHolderTable.Data() ) ){
        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() )
                                                       and exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() )
                                                       and exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ), product.ID() );
        DataHolderTable.Data().Generate( dhSearch.Data(), dhFactorys.Data(), productids );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
@@ -2,7 +2,7 @@
#parent: PanelExport/ButtonSummaryExport
Response OnClick () id:Response_PanelExport_ButtonSummaryExport_OnClick
{
  #keys: '[415136.0.862221938]'
  #keys: '[415136.0.1191390564]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelExport/bRefresh_509
Response OnClick () id:Response_PanelExport_545_bRefresh_OnClick
#parent: PanelExport/bRefresh
Response OnClick () id:Response_PanelExport_bRefresh_OnClick
{
  #keys: '[415136.0.1153803171]'
  #keys: '[415136.0.1191390562]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -2,7 +2,7 @@
#parent: PanelPeriod/DateSelectorEnd
Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
{
  #keys: '[415136.0.862221640]'
  #keys: '[415136.0.1191390565]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -2,7 +2,7 @@
#parent: PanelPeriod/DateSelectorStart
Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
{
  #keys: '[415136.0.862221461]'
  #keys: '[415136.0.1191390566]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnCreated.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnCreated.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -42,8 +42,7 @@
        Taborder: 1
      ]
    }
    #child: PanelInventorySummaryHeader
    #child: PanelTable
    #child: PanelInventorySummaryReport
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSearch_OnClick.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      if( not isnull( DataHolderTable.Data() ) ){
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor515.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
Quintiq file version 2.0
Component MatrixEditor515
{
  #keys: '[413988.0.1607432871]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell568
    {
      #keys: '[413988.0.1607432872]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor802
        {
          #keys: '[413988.0.1607432873]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewOfflinePlanRow]'
            Source: 'dhSelectedDetailNewOfflinePlanRow'
            Taborder: 0
            Transformation: 'Elements.NewOfflinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Quantity;Order'
        Column: 'NewOfflinePlanColumn'
        Row: 'NewOfflinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows710
    {
      #keys: '[413988.0.1607432876]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor206
        {
          #keys: '[413988.0.1607432877]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewOfflinePlanRow]'
            Source: 'dhSelectedDetailNewOfflinePlanRow'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'ProductionLine;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns748
    {
      #keys: '[413988.0.1607432880]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor675
        {
          #keys: '[413988.0.1607432881]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'NewOfflinePlanTable'
            Source: 'dhNewOfflinePlanTable'
            Taborder: 0
            Transformation: 'NewOfflinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage623
    #child: matrixeditorContextMenu229
  ]
  Properties:
  [
    AllowAttributeConfiguration: true
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns748'
    ContextMenu: 'matrixeditorContextMenu229'
    Rows: 'MatrixEditorRows710'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor583.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditor583
{
  #keys: '[413988.0.1607432902]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell950
    {
      #keys: '[413988.0.1607432903]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor782
        {
          #keys: '[413988.0.1607432904]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewOfflinePlanRow]'
            Source: 'dhSelectedTotalNewOfflinePlanRow'
            Taborder: 0
            Transformation: 'Elements.NewOfflinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'TotalQuantity;ShiftPatternName;ShiftPatternStart;ShiftPatternEnd'
        Column: 'NewOfflinePlanColumn'
        Row: 'NewOfflinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows569
    {
      #keys: '[413988.0.1607432907]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor195
        {
          #keys: '[413988.0.1607432908]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewOfflinePlanRow]'
            Source: 'dhSelectedTotalNewOfflinePlanRow'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'ProductionLine;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns473
    {
      #keys: '[413988.0.1607432911]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor526
        {
          #keys: '[413988.0.1607432912]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'NewOfflinePlanTable'
            Source: 'dhNewOfflinePlanTable'
            Taborder: 0
            Transformation: 'NewOfflinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage338
    #child: matrixeditorContextMenu267
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns473'
    ContextMenu: 'matrixeditorContextMenu267'
    Rows: 'MatrixEditorRows569'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixEditorActionBarPage338.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage338
{
  #keys: '[413988.0.1607432915]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixEditorActionBarPage623.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage623
{
  #keys: '[413988.0.1607432884]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixeditorContextMenu229.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu229
{
  #keys: '[413988.0.1607432887]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_matrixeditorContextMenu267.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu267
{
  #keys: '[413988.0.1607432918]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pDetail.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component pDetail
{
  #keys: '[413988.0.1607470703]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor515
  ]
  Properties:
  [
    Border: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1607470685]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bRefresh
    {
      #keys: '[413988.0.1607470932]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Refresh'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_pTotal.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pTotal
{
  #keys: '[413988.0.1607470720]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor583
  ]
  Properties:
  [
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_dhNewOfflinePlanTable_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: dhNewOfflinePlanTable
Response OnCreated () id:Response_FormNewOfflinePlan_dhNewOfflinePlanTable_OnCreated
{
  #keys: '[413988.0.1612870517]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      nopt := maxselect( MacroPlan, NewOfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
      this.Data( nopt );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
#parent: pHeader/bRefresh
Response OnClick () id:Response_pHeader_bRefresh_OnClick
{
  #keys: '[413988.0.1607471065]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      NewOfflinePlanCell::RefreshOfflinePlan( MacroPlan );
      nopt := maxselect( MacroPlan, NewOfflinePlanTable, tempNOPT, true, tempNOPT.SaveDateTime() );
      dhNewOfflinePlanTable.Data( nopt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/_ROOT_Component_FormNewOfflinePlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormNewOfflinePlan
{
  #keys: '[413988.0.1606778977]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pTotal
    #child: pHeader
    #child: pDetail
    Component dhNewOfflinePlanTable
    {
      #keys: '[413988.0.1607471150]'
      BaseType: 'WebDataHolder'
      Databinding: 'NewOfflinePlanTable'
      Properties:
      [
        Taborder: 3
      ]
    }
    Component dhSelectedDetailNewOfflinePlanRow
    {
      #keys: '[413988.0.1607433222]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[NewOfflinePlanRow]*'
      Children:
      [
        Component deSelectedNewOfflinePlanRow
        {
          #keys: '[413988.0.1608510877]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'NewOfflinePlanTable'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities ) and object.Type() = "1"'
            Source: 'dhNewOfflinePlanTable'
            Taborder: 0
            Transformation: 'NewOfflinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Taborder: 4
      ]
    }
    Component dhSelectedTotalNewOfflinePlanRow
    {
      #keys: '[413988.0.1609979741]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[NewOfflinePlanRow]*'
      Children:
      [
        Component deSelectedNewOfflinePlanRow681
        {
          #keys: '[413988.0.1609979742]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'NewOfflinePlanTable'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities ) and object.Type() = "2"'
            Source: 'dhNewOfflinePlanTable'
            Taborder: 0
            Transformation: 'NewOfflinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
    Description: '新装配下线计划'
    Image: 'WIND_ENGINE_OFFSHORE'
    Title: 'Output plan'
  ]
}
_Main/UI/MacroPlannerWebApp/HighlightRules.hl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
HighlightRules
{
  HighlightRule
  {
    #keys: '1[413988.0.1616240421]'
    Bidirectional: true
    ContinueHighlighting: true
    Description: '下线计划根据细分突出显示合计'
    Groups: Default
    HighlightPathString: 'Total'
    StartTypeString: 'NewOfflinePlanCell'
  }
}
_Main/UI/MacroPlannerWebApp/Views/NewOfflinePlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,215 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormNewOfflinePlan
      {
        title: 'QMacroPlanner::FormNewOfflinePlan'
        shown: true
        componentID: 'QMacroPlanner::FormNewOfflinePlan'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormNewOfflinePlan_pHeader
          {
            sizeRatio: 1
          }
          FormNewOfflinePlan_pDetail
          {
            sizeRatio: 1
          }
          FormNewOfflinePlan_MatrixEditor515
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 511
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormNewOfflinePlan.MatrixEditor515'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_Quantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: 'sum'
                      attribute: 'Quantity'
                    }
                    attribute_Order
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Order'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'StartDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
                  }
                }
              }
            }
          }
          FormNewOfflinePlan_pTotal
          {
            sizeRatio: 1
          }
          FormNewOfflinePlan_MatrixEditor583
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 510
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormNewOfflinePlan.MatrixEditor583'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_TotalQuantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalQuantity'
                    }
                    attribute_ShiftPatternName
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternName'
                    }
                    attribute_ShiftPatternStart
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternStart'
                    }
                    attribute_ShiftPatternEnd
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternEnd'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'StartDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormGeneralSettings
      {
        title: 'General Settings'
        shown: true
        componentID: 'FormGeneralSettings'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormGeneralSettings_PanelContent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelGeneralParameter
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelLeadTimeDependent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelShelfLife
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelSustainability
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelForecastNetting
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelActions
          {
            sizeRatio: 1
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'CHART_DONUT'
    description: ''
  }
  formatversion: 2
  id: 'NewOfflinePlan'
  name: 'NewOfflinePlan'
  isglobal: false
  isroot: true
}