库存汇总报表查询条件格式修改,发动机物流成本报表系数,汇总添加
已重命名2个文件
已添加49个文件
已修改49个文件
已删除14个文件
1895 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_Factory_MacroPlan_MacroPlan_Factory.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_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_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_InitializeNew.qbl 175 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | 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 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 43 ●●●● 补丁 | 查看 | 原始文档 | 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_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/ProductInStockingPointInPeriod.qrp 1 ●●●● 补丁 | 查看 | 原始文档 | 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 2 ●●●●● 补丁 | 查看 | 原始文档 | 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 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSearch_OnClick#648.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_ButtonSearch_OnClick#118.def 2 ●●●●● 补丁 | 查看 | 原始文档 | 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 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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_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_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_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_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,15 +27,8 @@
    //外租库仓储费用:仓储数量/包装容量*仓储单价,在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                := not isdltoccrent and stockingpoint.ID().StartsWith( '大连' ) or stockingpoint.ID().StartsWith( 'DL' );
    //  info( '--------------', isccrent, isdltoccrent, isdlrent );
      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 ) ) ){
@@ -51,9 +38,7 @@
          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 trans.Origin() = '大连厂内库'
                                                  and trans.Destination() = '大连外租库'
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
            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 
@@ -76,6 +61,11 @@
                       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()
@@ -83,9 +73,8 @@
                   if( not isnull( enginecost ) ){
                     cost        := ceil( pispip.PlannedInventoryLevelEnd() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                     cell.DLRentStorCost( cell.DLRentStorCost() + cost );//大连外租库仓储费用
    //                 info( '**********************', pispip.NewSupplyQuantity() );
                     row.SetDLRentEnterCost( column, enginecost, pispip.NewSupplyQuantity() );//大连外租库入库费用
                     transcost        := selectobject( transcosts, Elements, trans, trans.StartDate() <= pispip.Start().Date() and trans.EndDate() >= pispip.Start().Date() );
                    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 );
@@ -98,103 +87,20 @@
        }
      }
    }
    //在 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( '大连外租库' );
    //  if( isdlspline and isdlrent ){
    //    traverse( table, Column, column ){
    //      alltrips          := selectset( laneleg, Trip, trip, trip.Arrival().Date() < column.StartDate().StartOfNextMonth() and trip.Arrival().Date() >= column.StartDate() );
    ////      info( '--------------------', alltrips.Size(), 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 ){
    //        producttrips      := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
    ////        info( '--------------2---------------', producttrips.Size() );
    //        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() = 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() ) ) );
    ////            info( '-------------------', not isnull( enginecost ) and not isnull( transcost ), isnull( transcost ), product.ID() );
    //            if( not isnull( enginecost ) and not isnull( transcost ) ){
    ////              info( '-------------------', product.ID(), transcost.LoadingCapacity() );
    //              cost := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
    //              info( quantity, ceil( quantity / enginecost.PackagingCapacity() ), ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) );
    //              row.SetFactoryToRentTransCost( column, cost );
    //            }
    //        }
    //      }
    //    }
    //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 );
    //          }
    //        }
    //      }
    //    }
    //  }
    //}
    
    //长春长途运输费用:调拨数量/包装容量/装载容量*运输单价,调拨计划里找到该产品从DL到CC的调拨数量,即起始地大连装配线边库,目的地为长春外租库对应的运输数量,在发动机成本参数表找到对应的包装容量,在运输成本参数表里找到发动机对应运输单价和装载容量,用公式计算得出结果,月度进行汇总
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
    //  isdlspline             := laneleg.OriginStockingPointID().EndsWith( '厂内库' ) and ( laneleg.OriginStockingPointID().StartsWith( '大连' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );
    //  //目的地是否是大连外租库
    //  isdlrent               := laneleg.DestinationStockingPointID().EndsWith( '大连外租库' );
      //起始库存点是否是大连(大连厂内库)
      isdl                   := laneleg.OriginStockingPointID().EndsWith( '厂内库' ) and ( laneleg.OriginStockingPointID().StartsWith( '大连' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );
      //目的地库存点是否是长春(长春外租库)
      iscc                   := laneleg.DestinationStockingPointID() = '大连发动机的长春外租库';
        if( isdl and iscc ){
    //  if( isdlspline and isdlrent ){
        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() );
    //      info( '--------------------', alltrips.Size(), 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 ){
            producttrips      := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
    //        info( '--------------2---------------', producttrips.Size() );
            traverse( producttrips, Elements, producttrip ){//, producttrip = '6912'
        
              row          := table.GetRow( producttrip );
@@ -208,12 +114,9 @@
                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() ) ) );
    //            info( '-------------------', not isnull( enginecost ) and not isnull( transcost ), isnull( transcost ), product.ID() );
                if( not isnull( enginecost ) and not isnull( transcost ) ){
    //              info( '-------------------', product.ID(), transcost.LoadingCapacity() );
                  cost := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
    //              info( quantity, ceil( quantity / enginecost.PackagingCapacity() ), ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) );
    //              row.SetFactoryToRentTransCost( column, cost );
    cell           := selectobject( row, Cell, cell, cell.Column() = column );
                  cell.CCLongTransCost( cell.CCLongTransCost() + cost )
                }
@@ -260,41 +163,41 @@
    }
    //长春短途运输费用:客户需求数量/包装容量/装载容量*运输单价,客户需求数量取自forecast里sales segment为长春的数量汇总,再用公式计算,月度进行汇总(取客户需求数量换算成车次)
    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' )
    //                                         ( 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() );
    //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 );
           }
        }
      }
    }
    //info( '***********1********', dlforecasts.Size() );
    //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 )
@@ -311,8 +214,6 @@
            quantity        := sum( allpsdips, Elements, psdip, psdip.Quantity() );
            
            cost           := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
    //        info( '******************', quantity, cost );
    //         cell           := selectobject( row, Cell, cell, cell.Column() = column );
             row.SetDLRentOutCost( column, cost );
           }
        }
_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method Initialize (
  CCEngineLogisticsCostColumn column
)
) as CCEngineLogisticsCostCell
{
  TextBody:
  [*
@@ -10,8 +10,10 @@
    cell := this.Cell( relnew, RentInCost              := 0
                         , RentOutOfCost               := 0 
                         , WerkToRentTransCost         := 0
                         , RentStorCost                := 0 );
                       , RentStorCost                  := 0
                       , CoefficientValue              := '1.05' );
    
    column.Cell( relinsert, cell );
    return cell;
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method Initialize (
  DLEngineLogisticsCostColumn column
)
) as DLEngineLogisticsCostCell
{
  TextBody:
  [*
@@ -15,8 +15,10 @@
                         , DLRentInCost                  := 0
                         , DLRentOutOfCost               := 0
                         , WerkToDLRentTransCost         := 0
                         , DLRentStorCost                := 0 );
                       , DLRentStorCost                  := 0
                       , CoefficientValue                := '1.05');
    
    column.Cell( relinsert, cell );
    return cell;
  *]
}
_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() );
    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() );
      //读取每一行
      traverse( report, FinancialProductionRow, row ){
        //获取产品和工厂
        product := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn );
        unit    := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn );
    //    info( '----------------------2-----------------', product.Value(), unit.Value() );
        
        //获取被导入报表的工厂行
        unitrow := selectobject( table, FinancialProductionRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
        allrow  := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
    //    info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
        // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
        traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn ){
          column   := cell.FinancialProductionColumn();
          unitcell := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn().Name() = column.Name() );
          allcell  := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn().Name() = column.Name() );
    //      info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
          if( not isnull( unitcell ) ){
    //        unitcell.Value( cell.Value() );
            unitcell.Quantity( [Real]cell.Value() );
        if( isnull( unitrow ) ){
          unitrow           := table.FinancialProductionRow( relnew, Name := product.Value(), Unit := unit.Value() );
          }
          if( not isnull( allcell ) ){
    //        value := [Real]cell.Value() + [Real]allcell.Value();
    //        allcell.Value( [String]value );
            allcell.Quantity( allcell.Quantity() + [Real]allcell.Value() );
        allrow  := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
        if( isnull( unitrow ) ){
          allrow            := table.FinancialProductionRow( relnew, Name := product.Value(), Unit := allunit );
        }
        //读取每一行的单元格
        traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn ){
          //获取被导入报表的日期列
          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() ) );
          }
          //获取被导入报表的单元格
          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_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_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_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/ProductInStockingPointInPeriod.qrp
@@ -459,4 +459,5 @@
      InheritFormatting: false
    }
  }
  RelationRepresentation ActualPISPIPAsWithinPeriod { RelationKey: '[137118.0.348745522]' Visibility: 'Normal' }
}
_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:
    [*
      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:
    [*
      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:
    [*
      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:
    [*
      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:
    [*
      if( not isnull( DataHolderTable.Data() ) ){
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }