lazhen
2024-08-13 f6a108e67cf221fe34a2338a44c9cb7894c9e07e
大连发动机物流成本报表
已添加90个文件
已修改8个文件
2207 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost#0.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost#0.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell#0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn#0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport#0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow#0.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnCreated.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostColumn_Cell_DLEngineLogisticsCostCell_Column
{
  #keys: '1[415136.0.992900190]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Cell
  {
    #keys: '3[415136.0.992900192][415136.0.992900191][415136.0.992900193]'
    Cardinality: '1toN'
    ObjectDefinition: DLEngineLogisticsCostColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Column
  {
    #keys: '3[415136.0.992900195][415136.0.992900194][415136.0.992900196]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Repo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostReport_Column_DLEngineLogisticsCostColumn_Report
{
  #keys: '1[415136.0.992900157]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.992900176][415136.0.992900170][415136.0.992900177][415136.0.992900171][415136.0.992900178][415136.0.992900172][415136.0.992900179][415136.0.992900173][415136.0.992900180][415136.0.992900174][415136.0.992900181][415136.0.992900175]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.992900159][415136.0.992900158][415136.0.992900160]'
    Cardinality: '1toN'
    ObjectDefinition: DLEngineLogisticsCostReport
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.992900162][415136.0.992900161][415136.0.992900163]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostReport_MacroPlan_MacroPlan_DLEngineLogisticsCostReport
{
  #keys: '1[415136.0.992900125]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.992900127][415136.0.992900126][415136.0.992900128]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostReport
    OwningSide: 'Reference'
  }
  RelationSide.RightSide DLEngineLogisticsCostReport
  {
    #keys: '3[415136.0.992900130][415136.0.992900129][415136.0.992900131]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostReport_Row_DLEngineLogisticsCostRow_Report
{
  #keys: '1[415136.0.992900141]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Row
  {
    #keys: '3[415136.0.992900143][415136.0.992900142][415136.0.992900144]'
    Cardinality: '1toN'
    ObjectDefinition: DLEngineLogisticsCostReport
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.992900146][415136.0.992900145][415136.0.992900147]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostRow_Cell_DLEngineLogisticsCostCell_Row
{
  #keys: '1[415136.0.992900203]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Cell
  {
    #keys: '3[415136.0.992900205][415136.0.992900204][415136.0.992900206]'
    Cardinality: '1toN'
    ObjectDefinition: DLEngineLogisticsCostRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide Row
  {
    #keys: '3[415136.0.992900208][415136.0.992900207][415136.0.992900209]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation DLEngineLogisticsCostSearch_MacroPlan_MacroPlan_DLEngineLogisticsCostSearch
{
  #keys: '1[415136.0.992900109]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.992900111][415136.0.992900110][415136.0.992900112]'
    Cardinality: '0to1'
    ObjectDefinition: DLEngineLogisticsCostSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide DLEngineLogisticsCostSearch
  {
    #keys: '3[415136.0.992900114][415136.0.992900113][415136.0.992900115]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation FinancialProductionRow_Product_MP_Product_MP_FinancialProductionRow
{
  #keys: '1[415136.0.992900294]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Product_MP
  {
    #keys: '3[415136.0.992900296][415136.0.992900295][415136.0.992900297]'
    Cardinality: '0to1'
    ObjectDefinition: FinancialProductionRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide FinancialProductionRow
  {
    #keys: '3[415136.0.992900299][415136.0.992900298][415136.0.992900300]'
    Cardinality: '0to1'
    ObjectDefinition: Product_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation FinancialSalesRow_Product_MP_Product_MP_FinancialSalesRow
{
  #keys: '1[415136.0.993115876]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Product_MP
  {
    #keys: '3[415136.0.993115878][415136.0.993115877][415136.0.993115879]'
    Cardinality: '0to1'
    ObjectDefinition: FinancialSalesRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide FinancialSalesRow
  {
    #keys: '3[415136.0.993115881][415136.0.993115880][415136.0.993115882]'
    Cardinality: '0to1'
    ObjectDefinition: Product_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCLongTransCoat
{
  #keys: '3[415136.0.992900332][415136.0.992900331][415136.0.992900333]'
  Description: '长春长途运输费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCRentEnterCost
{
  #keys: '3[415136.0.992900045][415136.0.992900044][415136.0.992900046]'
  Description: '长春外租库入库费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCRentOutCost
{
  #keys: '3[415136.0.992900048][415136.0.992900047][415136.0.992900049]'
  Description: '长春外租库出库费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCRentQuantity
{
  #keys: '3[415136.0.993115853][415136.0.993115852][415136.0.993115854]'
  Description: '长春外租库数量'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCRentStorageCost
{
  #keys: '3[415136.0.992900051][415136.0.992900050][415136.0.992900052]'
  Description: '长春外租库仓储费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCShortTransCost
{
  #keys: '3[415136.0.992900342][415136.0.992900341][415136.0.992900343]'
  Description: '长春短途运输费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_Coefficient.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Coefficient
{
  #keys: '3[415136.0.992900036][415136.0.992900035][415136.0.992900037]'
  Description: '系数'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLRentEnterCost
{
  #keys: '3[415136.0.992900242][415136.0.992900241][415136.0.992900243]'
  Description: '大连外租库入库费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLRentOutCost
{
  #keys: '3[415136.0.992900249][415136.0.992900248][415136.0.992900250]'
  Description: '大连外租库出库费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLRentStorageCost
{
  #keys: '3[415136.0.992900262][415136.0.992900261][415136.0.992900263]'
  Description: '大连外租库仓储费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EstimatedTotalCost
{
  #keys: '3[415136.0.992900039][415136.0.992900038][415136.0.992900040]'
  Description: '预计总费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute FactoryToDLRentTransCost
{
  #keys: '3[415136.0.992900042][415136.0.992900041][415136.0.992900043]'
  Description: '厂内到大连外租库运输费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalCost
{
  #keys: '3[415136.0.992900054][415136.0.992900053][415136.0.992900055]'
  Description: '总费用'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Function CalcEstimatedTotalCost
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    value := this.CCRentEnterCost() + this.CCRentOutCost() + this.CCLongTransCoat() + this.CCShortTransCost() + this.CCRentStorageCost()
    + this.DLRentEnterCost() + this.DLRentOutCost() + this.FactoryToDLRentTransCost() + this.DLRentStorageCost();
    this.EstimatedTotalCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalCost
{
  Description: '计算总费用'
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    value := this.EstimatedTotalCost() * this.Coefficient();
    this.TotalCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostCell0/_ROOT_Type_DLEngineLogisticsCostCell#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type DLEngineLogisticsCostCell
{
  #keys: '5[415136.0.992900033][415136.0.992900031][0.0.0][415136.0.992900032][415136.0.992900034]'
  BaseType: Object
  Description: '大连发动机物流成本报表单元格'
  StructuredName: 'DLEngineLogisticsCostCells'
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[415136.0.992900061][415136.0.992900060][415136.0.992900062]'
  Description: '列号'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.992900064][415136.0.992900063][415136.0.992900065]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[415136.0.992900067][415136.0.992900066][415136.0.992900068]'
  Description: '开始日期'
  ValueType: Date
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/Function_CalcIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIndex
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-13-2024 (created)
    value := ifexpr( isnull( this.PreviousColumn() ), 0, this.PreviousColumn().Index() + 1 );
    this.Index( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostColumn0/_ROOT_Type_DLEngineLogisticsCostColumn#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type DLEngineLogisticsCostColumn
{
  #keys: '5[415136.0.992900058][415136.0.992900056][0.0.0][415136.0.992900057][415136.0.992900059]'
  BaseType: Object
  Description: '大连发动机物流成本报表列'
  StructuredName: 'DLEngineLogisticsCostColumns'
}
_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
@@ -29,7 +29,7 @@
          
          sumcell    := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell  := showrow.Cell( relnew, RentEnterCost         := 0
            sumcell  := sumrow.Cell( relnew, RentEnterCost         := 0
                                     , RentOutCost                 := 0 
                                     , FactoryToRentTransCost      := 0
                                     , RentStorageCost             := 0 );
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
@@ -89,13 +89,13 @@
          factorytorenttranscostcellElement.SetAttribute( "value", 'FactoryToRentTransCost' );
          attricolumnelement.AppendChild( factorytorenttranscostcellElement );
          //外租库仓储费用
          estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
          estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
          attricolumnelement.AppendChild( estimatedtotalcostcellElement );
          //预计总费用
          rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          rentstoragecostcellElement.SetAttribute( "value", 'RentStorageCost' );
          attricolumnelement.AppendChild( rentstoragecostcellElement );
          //预计总费用
          estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
          estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
          attricolumnelement.AppendChild( estimatedtotalcostcellElement );
          //系数
          coefficientcellElement := xmlDOM.CreateElement( "cell" );
          coefficientcellElement.SetAttribute( "value", 'Coefficient' );
@@ -118,13 +118,13 @@
        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToRentTransCost() );
        columnelement.AppendChild( factorytorenttranscostcellElement );
        //外租库仓储费用
        rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        rentstoragecostcellElement.SetAttribute( "value", [String]c.RentStorageCost() );
        columnelement.AppendChild( rentstoragecostcellElement );
        //预计总费用
        estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //预计总费用
        rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        rentstoragecostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
        columnelement.AppendChild( rentstoragecostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", [String]c.Coefficient() );
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -30,14 +30,25 @@
      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//财务产量报表不显示
        traverse( report, FinancialProductionRow, row, row.Unit() = ccunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//财务产量报表里的长春产量, ä¸ä¸º0
          ccrow               := table.GetRow( row.Name() );
          //查询对应的发动机成本
          enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Product() = row.Name() );
          traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
            //入库量/包装容量*入库单价,入库量等于长春产量
            quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
            column            := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
            //外租库入库费用
            ccrow.SetRentEnterCost( column, quantity );
          product             := row.Product_MP();
          products.Add( product );
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              product             := row.Product_MP();
              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
                //入库量/包装容量*入库单价,入库量等于长春产量
                quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                column            := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                //外租库入库费用
                ccrow.SetRentEnterCost( column, quantity );
              }
            }
          }
        }
      }
@@ -47,14 +58,24 @@
      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//财务销量报表不显示
        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' ) ){//财务销量报表里的长春产量, ä¸ä¸º0
          ccrow               := table.GetRow( row.Name() );
          //查询对应的发动机成本
          enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Product() = row.Name() );
          traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' ){
            //出库量/包装容量*出库单价,入库量等于长春销量
            quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
            column            := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
            //外租库出库费用
            ccrow.SetRentOutCost( column, quantity );
          product             := row.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              products.Add( product );
              traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' ){
                //出库量/包装容量*出库单价,入库量等于长春销量
                quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                column            := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
                //外租库出库费用
                ccrow.SetRentOutCost( column, quantity );
              }
            }
          }
        }
      }
@@ -75,14 +96,26 @@
          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 ){
            row              := table.GetRow( pit.ProductID() );
            //在发动机成本参数表找到对应的包装容量
            enginecost       := selectobject( owner, LogisticsCostEngine, engine, engine.Product() = row.Name() );
            //在运输成本参数表里找到发动机对应运输单价和装载容量
            transcost        := selectobject( owner, LogisticsCostTransport, trans, trans.Product() = row.Name() );
            //运输数量/包装容量/装载容量*运输单价
            quantity         := ceil( ceil( [Number]pit.Quantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
            row.SetFactoryToRentTransCost( column, quantity );
            product          := pit.Product_MP();
            productparents   := product.GetAllParent();
            if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){////查询产品类型是发动机
              //在发动机成本参数表找到对应的包装容量
              enginecost       := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
              //在运输成本参数表里找到发动机对应运输单价和装载容量
              transcost        := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = ccline
                                                and trans.Destination() = ccrent
                                                and exists( productparents, Elements, e, e.ID() = trans.Product() ) );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                products.Add( product );
                //运输数量/包装容量/装载容量*运输单价
                quantity       := ceil( ceil( [Number]pit.Quantity() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                row.SetFactoryToRentTransCost( column, quantity );
              }
            }
          }
        }
      }
@@ -94,21 +127,30 @@
      if( isccrent ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
          //获取行
          product            := pisp.Product_MP();
          productparents     := product.GetAllParent();
          row                := table.GetRow( pisp.ProductID() );
          //查询对应的发动机成本
          enginecost         := selectobject( owner, LogisticsCostEngine, engine, engine.Product() = row.Name() );
          products.Add( pisp.Product_MP() );
          //当product planning的日期区间在需要的日期区间内
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
                    ){
            periodtime := pispip.Start().StartOfMonth().Date();
            periodname := periodtime.Format( "M2/D2/Y" );
            quantity   := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
            column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
            row.SetRentStorageCost( column, quantity );
          }
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){////查询产品类型是发动机
            //查询对应的发动机成本
            enginecost         := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              products.Add( product );
              //当product planning的日期区间在需要的日期区间内
              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
                        ){
                periodtime := pispip.Start().StartOfMonth().Date();
                periodname := periodtime.Format( "M2/D2/Y" );
                quantity   := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                column := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
                row.SetRentStorageCost( column, quantity );
              }
            }
          }
        }
      }
    }
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[415136.0.992900074][415136.0.992900073][415136.0.992900075]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[415136.0.992900077][415136.0.992900076][415136.0.992900078]'
  ValueType: Boolean
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.992900080][415136.0.992900079][415136.0.992900081]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ID
}
_Main/BL/Type_CCEngineLogisticsCostReport0/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Clear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Method Clear
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-13-2024 (created)
    this.Column( relflush );
    this.Row( relflush );
    this.GenerateColumn( this.MacroPlan() );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  DLEngineLogisticsCostSearch search,
  Product_MPs products
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    table            := selectobject( this, MacroPlan.DLEngineLogisticsCostReport, report, not report.IsShow() );
    allunit          := '<All>';
    //清空之前存储的显示数据
    this.Clear();
    //过滤后的产品id
    productids       := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() )
                                      and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() )
                                      and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() );
    sumrow           := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
    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() );
        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, CCRentEnterCost         := 0
                                     , CCRentOutCost                 := 0
                                     , CCLongTransCoat               := 0
                                     , CCShortTransCost              := 0
                                     , CCRentStorageCost             := 0
                                     , DLRentEnterCost               := 0
                                     , DLRentOutCost                 := 0
                                     , FactoryToDLRentTransCost      := 0
                                     , DLRentStorageCost             := 0 );
            column.Cell( relinsert, sumcell );
          }
          showcell   := showrow.Cell( relnew, CCRentEnterCost        := cell.CCRentEnterCost()
                                      , CCRentOutCost                := cell.CCRentOutCost()
                                      , CCLongTransCoat              := cell.CCLongTransCoat()
                                      , CCShortTransCost             := cell.CCShortTransCost()
                                      , CCRentStorageCost            := cell.CCRentStorageCost()
                                      , DLRentEnterCost              := cell.DLRentEnterCost()
                                      , DLRentOutCost                := cell.DLRentOutCost()
                                      , FactoryToDLRentTransCost     := cell.FactoryToDLRentTransCost()
                                      , DLRentStorageCost            := cell.DLRentStorageCost() );
          column.Cell( relinsert, showcell );
          sumcell.CCRentEnterCost( cell.CCRentEnterCost() + sumcell.CCRentEnterCost() );
          sumcell.CCRentOutCost( cell.CCRentOutCost() + sumcell.CCRentOutCost() );
          sumcell.CCLongTransCoat( cell.CCLongTransCoat() + sumcell.CCLongTransCoat() );
          sumcell.CCShortTransCost( cell.CCShortTransCost() + sumcell.CCShortTransCost() );
          sumcell.CCRentStorageCost( cell.CCRentStorageCost() + sumcell.CCRentStorageCost() );
          sumcell.DLRentEnterCost( cell.DLRentEnterCost() + sumcell.DLRentEnterCost() );
          sumcell.DLRentOutCost( cell.DLRentOutCost() + sumcell.DLRentOutCost() );
          sumcell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + sumcell.FactoryToDLRentTransCost() );
          sumcell.DLRentStorageCost( cell.DLRentStorageCost() + sumcell.DLRentStorageCost() );
        }
      }
    }
    info( '-------------------------g------------end---------------------------------' );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GenerateColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method GenerateColumn (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-13-2024 (created)
    startofplanning           := owner.StartOfPlanning();
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){
      periodtime := start.Date();
      periodname := periodtime.Format( "M2/D2/Y" );
      this.Column( relnew, Name := periodname, StartDate := periodtime );
    }
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_GetRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
Method GetRow (
  String product
) as DLEngineLogisticsCostRow
{
  Description: '根据工厂获取行'
  TextBody:
  [*
    // ç”„兰鸽 Aug-13-2024 (created)
    row := selectobject( this, Row, row, row.Name() = product );
    if( isnull( row ) ){
      //初始化单元格
      row := this.Row( relnew, Name := product );
      traverse( this, Column, column ){
        row.Initialize( column );
      }
    }
    return row;
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/Method_IsInUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method IsInUnit (
  StockingPoint_MP sp,
  String unitname
) as Boolean
{
  Description: '是否属于某个线'
  TextBody:
  [*
    // ç”„兰鸽 Aug-5-2024 (created)
    unit                  := sp.Unit();
    parentunits           := unit.GetAllParent();
    return sp.ID() = unitname or unit.ID() = unitname or exists( parentunits, Elements, punit, punit.ID() = unitname );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,212 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载财务报表数据'
  TextBody:
  [*
    table := selectobject( macroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    //Product
    productcolumnelement := xmlDOM.CreateElement( "column" );
    productnameelement   := xmlDOM.CreateElement( "name" );
    producttypeelement   := xmlDOM.CreateElement( "type" );
    productnameelement.TextContent( 'Product' );
    producttypeelement.TextContent( "String" );
    productcolumnelement.AppendChild( productnameelement );
    productcolumnelement.AppendChild( producttypeelement );
    //Attribute
    attricolumnelement := xmlDOM.CreateElement( "column" );
    attrinameelement   := xmlDOM.CreateElement( "name" );
    attritypeelement   := xmlDOM.CreateElement( "type" );
    attrinameelement.TextContent( 'Attribute' );
    attritypeelement.TextContent( "String" );
    attricolumnelement.AppendChild( attrinameelement );
    attricolumnelement.AppendChild( attritypeelement );
    tableElement.AppendChild( productcolumnelement );
    tableElement.AppendChild( attricolumnelement );
    traverse ( table, Column, column ) {
      columnelement := xmlDOM.CreateElement( "column" );
      nameelement   := xmlDOM.CreateElement( "name" );
      typeelement   := xmlDOM.CreateElement( "type" );
      nameelement.TextContent( column.Name() );
      typeelement.TextContent( "String" );
      columnelement.AppendChild( nameelement );
      columnelement.AppendChild( typeelement );
      cells := selectsortedset( column, Cell, cell, cell.Row().RowNr() );
      traverse ( cells, Elements, c ) {
        if( column.Index() = 0 ){
          row := c.Row();
          //Product
          product1cellElement := xmlDOM.CreateElement( "cell" );
          product1cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product1cellElement );
          product2cellElement := xmlDOM.CreateElement( "cell" );
          product2cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product2cellElement );
          product3cellElement := xmlDOM.CreateElement( "cell" );
          product3cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product3cellElement );
          product4cellElement := xmlDOM.CreateElement( "cell" );
          product4cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product4cellElement );
          product5cellElement := xmlDOM.CreateElement( "cell" );
          product5cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product5cellElement );
          product6cellElement := xmlDOM.CreateElement( "cell" );
          product6cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product6cellElement );
          product7cellElement := xmlDOM.CreateElement( "cell" );
          product7cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product7cellElement );
          product8cellElement := xmlDOM.CreateElement( "cell" );
          product8cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product8cellElement );
          product9cellElement := xmlDOM.CreateElement( "cell" );
          product9cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product9cellElement );
          product10cellElement := xmlDOM.CreateElement( "cell" );
          product10cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product10cellElement );
          product11cellElement := xmlDOM.CreateElement( "cell" );
          product11cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product11cellElement );
          product12cellElement := xmlDOM.CreateElement( "cell" );
          product12cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product12cellElement );
          //Attribute
          //长春外租库入库费用
          ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
          ccrententercostcellElement.SetAttribute( "value", 'CCRentEnterCost' );
          attricolumnelement.AppendChild( ccrententercostcellElement );
          //长春外租库出库费用
          ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
          ccrentoutcostcellElement.SetAttribute( "value", 'CCRentOutCost' );
          attricolumnelement.AppendChild( ccrentoutcostcellElement );
          //长春长途运输费用
          cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
          cclongtranscostcellElement.SetAttribute( "value", 'CCLongTransCost' );
          attricolumnelement.AppendChild( cclongtranscostcellElement );
          //长春短途运输费用
          ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
          ccshorttranscostcellElement.SetAttribute( "value", 'CCShortTransCost' );
          attricolumnelement.AppendChild( ccshorttranscostcellElement );
          //长春外租库仓储费用
          ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          ccrentstoragecostcellElement.SetAttribute( "value", 'CCRentStorageCost' );
          attricolumnelement.AppendChild( ccrentstoragecostcellElement );
          //大连外租库入库费用
          dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
          dlrententercostcellElement.SetAttribute( "value", 'DLRentEnterCost' );
          attricolumnelement.AppendChild( dlrententercostcellElement );
          //大连外租库出库费用
          dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
          dlrentoutcostcellElement.SetAttribute( "value", 'DLRentOutCost' );
          attricolumnelement.AppendChild( dlrentoutcostcellElement );
          //厂内到外租库运输费用
          factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
          factorytorenttranscostcellElement.SetAttribute( "value", 'FactoryToRentTransCost' );
          attricolumnelement.AppendChild( factorytorenttranscostcellElement );
          //大连外租库仓储费用
          dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          dlrentstoragecostcellElement.SetAttribute( "value", 'DLRentStorageCost' );
          attricolumnelement.AppendChild( dlrentstoragecostcellElement );
          //预计总费用
          estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
          estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
          attricolumnelement.AppendChild( estimatedtotalcostcellElement );
          //系数
          coefficientcellElement := xmlDOM.CreateElement( "cell" );
          coefficientcellElement.SetAttribute( "value", 'Coefficient' );
          attricolumnelement.AppendChild( coefficientcellElement );
          //总费用
          totalcostcellElement := xmlDOM.CreateElement( "cell" );
          totalcostcellElement.SetAttribute( "value", 'TotalCost' );
          attricolumnelement.AppendChild( totalcostcellElement );
        }
        //长春外租库入库费用
        ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
        ccrententercostcellElement.SetAttribute( "value", [String]c.CCRentEnterCost() );
        columnelement.AppendChild( ccrententercostcellElement );
        //长春外租库出库费用
        ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
        ccrentoutcostcellElement.SetAttribute( "value", [String]c.CCRentOutCost() );
        columnelement.AppendChild( ccrentoutcostcellElement );
        //长春长途运输费用
        cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
        cclongtranscostcellElement.SetAttribute( "value", [String]c.CCLongTransCoat() );
        columnelement.AppendChild( cclongtranscostcellElement );
        //长春短途运输费用
        ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
        ccshorttranscostcellElement.SetAttribute( "value", [String]c.CCShortTransCost() );
        columnelement.AppendChild( ccshorttranscostcellElement );
        //长春外租库仓储费用
        ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        ccrentstoragecostcellElement.SetAttribute( "value", [String]c.CCRentStorageCost() );
        columnelement.AppendChild( ccrentstoragecostcellElement );
        //大连外租库入库费用
        dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
        dlrententercostcellElement.SetAttribute( "value", [String]c.DLRentEnterCost() );
        columnelement.AppendChild( dlrententercostcellElement );
        //大连外租库出库费用
        dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
        dlrentoutcostcellElement.SetAttribute( "value", [String]c.DLRentOutCost() );
        columnelement.AppendChild( dlrentoutcostcellElement );
        //厂内到外租库运输费用
        factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToDLRentTransCost() );
        columnelement.AppendChild( factorytorenttranscostcellElement );
        //大连外租库仓储费用
        dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        dlrentstoragecostcellElement.SetAttribute( "value", [String]c.DLRentStorageCost() );
        columnelement.AppendChild( dlrentstoragecostcellElement );
        //预计总费用
        estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", [String]c.Coefficient() );
        columnelement.AppendChild( coefficientcellElement );
        //总费用
        totalcostcellElement := xmlDOM.CreateElement( "cell" );
        totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
        columnelement.AppendChild( totalcostcellElement );
      }
      tableElement.AppendChild( columnelement );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
    //info( xmlString );
    tableGroupHandle := TableGroupHandle::Create( DLEngineLogisticsCostReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultAllUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultAllUnit () const declarative as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '<All>';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春工厂';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连工厂';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultName () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'CC engine logistics cost reports';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointCCRent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetStockingPointCCRent () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    return '长春外租库';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetStockingPointDLLine () as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    //return '长春装配线边库';
    return '大连装配线';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetStockingPointDLRent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetStockingPointDLRent () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    return '大连外租库';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,263 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    owner.DLEngineLogisticsCostReport( relflush );
    name                      := DLEngineLogisticsCostReport::GetDefaultName();
    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
    ccunit                    := DLEngineLogisticsCostReport::GetDefaultCCUnit();
    dlunit                    := DLEngineLogisticsCostReport::GetDefaultDLUnit();
    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 );
    showtable                 := owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
    search                    := owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
    products                  := construct( Product_MPs );
    table.GenerateColumn( owner );
    //发往长春的销量需要在trip plan里面找到起始库存点为大连装配线边库,目的地为长春外租库的产品 ç®—出发往长春的销量后,在发动机成本参数表里找到对应的包装容量和长春入库单价,用公式计算,月度进行汇总
    //在 trip plan里找到大连装配线边库到大连外租库的运输数量
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是大连装配线边库
      originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
      isdlspline             := table.IsInUnit( originsp, dlline );
      //目的地是否是长春外租库
      destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
      isccrent               := table.IsInUnit( destisp, ccrent );
      //目的地是否是大连外租库
      destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
      isdlrent               := table.IsInUnit( destisp, dlrent );
      if( isdlspline and ( isccrent or 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 );
          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            quantity         := [Number]pit.Quantity();
            row              := table.GetRow( pit.ProductID() );
            product          := pit.Product_MP();
            productparents   := product.GetAllParent();
            if( isccrent ){//目的地是长春外租库
              //在发动机成本参数表找到对应的包装容量
              enginecost     := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
              if( not isnull( enginecost ) ){
                products.Add( product );
                cell         := selectobject( row, Cell, cell, cell.Column() = column );
                cell.CCRentQuantity( cell.CCRentQuantity() + quantity );
                //长春外租库入库费用:入库量/包装容量*入库单价
                entercost    := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                //长春外租库出库费用: å‡ºåº“量/包装容量*出库单价
                outcost      := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                cell.CCRentEnterCost( cell.CCRentEnterCost() + entercost );
                cell.CCRentOutCost( cell.CCRentOutCost() + outcost );
              }
            }
            if( isdlrent ){//目的地是大连外租库
              //在发动机成本参数表找到对应的包装容量
              enginecost     := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
              //在运输成本参数表里找到发动机对应运输单价和装载容量
              transcost      := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = dlline
                                                and trans.Destination() = dlrent
                                                and exists( productparents, Elements, e, 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.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + cost );
              }
            }
          }
        }
      }
    }
    //大连外租库入库费用:入库量/包装容量*入库单价,入库量等于大连工厂该产品产量减去发往长春的数量
    traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//财务产量报表非导入
      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//财务产量报表不显示
        traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//财务产量报表里的大连产量, ä¸ä¸º0
          ccrow               := table.GetRow( row.Name() );
          product             := row.Product_MP();
          products.Add( product );
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
                column        := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                //大连外租库入库费用
                ccrow.SetDLRentEnterCost( column, enginecost, cell );
              }
            }
          }
        }
      }
    }
    //大连外租库出库费用:出库量/包装容量*出库单价,出库量等于大连工厂该产品销量减去发往长春的数量
    traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//财务销量报表非导入
      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//财务销量报表不显示
        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' ) ){//财务销量报表里的大连产量, ä¸ä¸º0
          ccrow               := table.GetRow( row.Name() );
          product             := row.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            products.Add( product );
            //查询对应的发动机成本
            enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' ){
                column        := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
                //大连外租库出库费用
                ccrow.SetDLRentOutCost( column, enginecost, cell );
              }
            }
          }
        }
      }
    }
    //长春长途运输费用:调拨数量/包装容量/装载容量*运输单价,调拨计划里找到该产品从DL到CC的调拨数量,即起始地大连装配线边库,目的地为长春外租库对应的运输数量,在发动机成本参数表找到对应的包装容量,在运输成本参数表里找到发动机对应运输单价和装载容量,用公式计算得出结果,月度进行汇总
    traverse( owner, TransferPlanRow, tprow, tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
      product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
      productparents          := product.GetAllParent();
      if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
        //查询对应的发动机成本
         enginecost           := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                               and engine.MLB_MQB() = product.MQBMLB()
                                               and engine.Factory() = ccunit
                                               and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
         //在运输成本参数表里找到发动机对应运输单价和装载容量
         transcost            := selectobject( owner, LogisticsCostTransport, trans, trans.Origin() = dlline
                                                and trans.Destination() = dlrent
                                                and exists( productparents, Elements, e, e.ID() = trans.Product() ) );
         if( not isnull( enginecost ) and not isnull( transcost ) ){
           row                := table.GetRow( product.ID() );
           products.Add( product );
           traverse( tprow,TransferPlanCell, tpcell ){
             periodtime       := tpcell.TransferPlanColumn().ColumnDate().StartOfMonth();
             periodname       := periodtime.Format( "M2/D2/Y" );
             column           := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
             cost             := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
             cell             := selectobject( row, Cell, cell, cell.Column() = column );
             cell.CCLongTransCoat( cell.CCLongTransCoat() + cost );
           }
         }
      }
    }
    //长春短途运输费用:客户需求数量/包装容量/装载容量*运输单价,客户需求数量取自forecast里sales segment为长春的数量汇总,再用公式计算,月度进行汇总(取客户需求数量换算成车次)
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear ){
      salessegment            := forecast.SalesSegment_MP();
      parentsalessegments     := salessegment.GetAllParent();
      //是否属于长春
      iscc                    := salessegment.Name() = ccunit or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = ccunit );
      if( iscc ){
        product               := forecast.Product_MP();
        productparents        := product.GetAllParent();
        if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          row                 := table.GetRow( forecast.ProductID() );
          products.Add( forecast.Product_MP() );
          //查询对应的发动机成本
          enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
          if( not isnull( enginecost ) ){
            traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
              periodtime       := psdip.StartDate().StartOfMonth();
              periodname       := periodtime.Format( "M2/D2/Y" );
        //      info( '-------------------------', periodname, periodtime );
              column           := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
        //      info( '-------------------------', column.Name() );
              cost             := ceil( [Number]psdip.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
              cell             := selectobject( row, Cell, cell, cell.Column() = column );
              cell.CCShortTransCost( cell.CCShortTransCost() + cost );
            }
          }
        }
      }
    }
    //外租库仓储费用:仓储数量/包装容量*仓储单价,在Actual inventories里取到长春外租库/大连外租库该发动机的仓储量,根据发动机号找到对应的Generation å’Œæ¨ªçºµåˆ¶ï¼Œåœ¨å‘动机成本参数表里找到对应的仓储单价和包装容量,用公式计算,月度进行汇总
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
      //是否属于长春外租库
      isccrent                := stockingpoint.ID() = ccrent or unit.ID() = ccrent or exists( parentunits, Elements, punit, punit.ID() = ccrent );
      //是否属于大连外租库
      isdlrent                := stockingpoint.ID() = dlrent or unit.ID() = dlrent or exists( parentunits, Elements, punit, punit.ID() = dlrent );
      if( isccrent or isdlrent ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
          //获取行
          product             := pisp.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
            row               := table.GetRow( pisp.ProductID() );
            products.Add( pisp.Product_MP() );
            traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
              periodtime      := pispip.Start().StartOfMonth().Date();
              periodname      := periodtime.Format( "M2/D2/Y" );
              column          := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
              cell            := selectobject( row, Cell, cell, cell.Column() = column );
              if( isccrent ){
                //在发动机成本参数表找到对应的包装容量
                enginecost     := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = ccunit
                                                   and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
                 if( not isnull( enginecost ) ){
                   cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                   cell.CCRentStorageCost( cell.CCRentStorageCost() + cost );
                 }
              } else {
                //在发动机成本参数表找到对应的包装容量
                enginecost     := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = dlunit
                                                   and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
                 if( not isnull( enginecost ) ){
                   cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                   cell.DLRentStorageCost( cell.DLRentStorageCost() + cost );;
                 }
              }
            }
          }
        }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    info( '-------------------------------------end---------------------------------' );
    //
    showtable.Generate( search, products );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/_ROOT_Type_DLEngineLogisticsCostReport#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type DLEngineLogisticsCostReport
{
  #keys: '5[415136.0.992900071][415136.0.992900069][0.0.0][415136.0.992900070][415136.0.992900072]'
  BaseType: Object
  Description: '大连发动机物流成本报表'
  StructuredName: 'DLEngineLogisticsCostReports'
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[415136.0.992900087][415136.0.992900086][415136.0.992900088]'
  Description: '名称'
  ValueType: String
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[415136.0.992900090][415136.0.992900089][415136.0.992900091]'
  Description: '行号'
  ValueType: Number
}
_Main/BL/Type_CCEngineLogisticsCostRow0/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  DLEngineLogisticsCostColumn column
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := this.Cell( relnew, CCRentEnterCost           := 0
                         , CCRentOutCost                 := 0
                         , CCLongTransCoat               := 0
                         , CCShortTransCost              := 0
                         , CCRentStorageCost             := 0
                         , DLRentEnterCost               := 0
                         , DLRentOutCost                 := 0
                         , FactoryToDLRentTransCost      := 0
                         , DLRentStorageCost             := 0 );
    column.Cell( relinsert, cell );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetDLRentEnterCost (
  DLEngineLogisticsCostColumn column,
  LogisticsCostEngine enginecost,
  FinancialProductionCell fpcell
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    quantity      := [Number]fpcell.Value() - cell.CCRentQuantity();
    //入库量/包装容量*入库单价,入库量等于长春产量
    cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
    value := cell.DLRentEnterCost() + cost;
    cell.DLRentEnterCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetDLRentOutCost (
  DLEngineLogisticsCostColumn column,
  LogisticsCostEngine enginecost,
  FinancialSalesCell fscell
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    quantity      := [Number]fscell.Value() - cell.CCRentQuantity();
    //入库量/包装容量*入库单价,入库量等于长春产量
    cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
    value := cell.DLRentOutCost() + cost;
    cell.DLRentOutCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method SetFactoryToRentTransCost (
  DLEngineLogisticsCostColumn column,
  Number quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    value := cell.FactoryToDLRentTransCost() + quantity;
    cell.FactoryToDLRentTransCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method SetRentOutCost (
  DLEngineLogisticsCostColumn column,
  Number quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    value := cell.CCRentOutCost() + quantity;
    cell.CCRentOutCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method SetRentStorageCost (
  DLEngineLogisticsCostColumn column,
  Number quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    value := cell.CCRentStorageCost() + quantity;
    cell.CCRentStorageCost( value );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostRow0/_ROOT_Type_DLEngineLogisticsCostRow#0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type DLEngineLogisticsCostRow
{
  #keys: '5[415136.0.992900084][415136.0.992900082][0.0.0][415136.0.992900083][415136.0.992900085]'
  BaseType: Object
  Description: '大连发动机物流成本报表行'
  StructuredName: 'DLEngineLogisticsCostRows'
}
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Generation
{
  #keys: '3[415136.0.992900097][415136.0.992900096][415136.0.992900098]'
  ValueType: String
}
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_MqbMlb.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MqbMlb
{
  #keys: '3[415136.0.992900100][415136.0.992900099][415136.0.992900101]'
  ValueType: String
}
_Main/BL/Type_DLEngineLogisticsCostSearch/Attribute_Power.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Power
{
  #keys: '3[415136.0.992900103][415136.0.992900102][415136.0.992900104]'
  ValueType: String
}
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_MqbMlb.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MqbMlb
}
_Main/BL/Type_DLEngineLogisticsCostSearch/DefaultValue_Power.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Power
}
_Main/BL/Type_DLEngineLogisticsCostSearch/_ROOT_Type_DLEngineLogisticsCostSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type DLEngineLogisticsCostSearch
{
  #keys: '5[415136.0.992900094][415136.0.992900092][0.0.0][415136.0.992900093][415136.0.992900095]'
  BaseType: Object
  Description: '大连发动机物流成本报表查询类'
  StructuredName: 'DLEngineLogisticsCostSearchs'
}
_Main/BL/Type_FinancialProductionReport/Method_GetRowByUnit.qbl
@@ -13,6 +13,7 @@
    if( isnull( row ) ){
      //初始化单元格
      row := this.FinancialProductionRow( relnew, Name := product.ID(), Unit := unit );
      row.Product_MP( relset, product );
      traverse( this, FinancialProductionColumn, column ){
        row.Initialize( column, product, unit );
      }
_Main/BL/Type_FinancialSalesReport/Method_GetRow.qbl
@@ -12,6 +12,7 @@
    
    if( isnull( row ) ){
      row := this.FinancialSalesRow( relnew, Name := product.ID(), Unit := salessegment );
      row.Product_MP( relset, product );
      //初始化单元格
      row.InitializeCell( this, product );
    }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -16,6 +16,17 @@
        Title: 'CC engine logistics cost report'
      ]
    }
    Component MenuDLEngineLogisticsCostReport
    {
      #keys: '[415136.0.991620623]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'MONEY2'
        Taborder: 1
        Title: 'DL engine logistics cost report'
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogis.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ContextMenuEngineLogisticsCostReport/MenuDLEngineLogisticsCostReport
Response OnClick () id:Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_MenuDLEngineLogisticsCostReport_OnClick
{
  #keys: '[415136.0.993328236]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "DL_engine_logistics_cost_report_view", true);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def
@@ -26,9 +26,9 @@
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'FinancialProductionColumn'
        Row: 'FinancialProductionRow'
        Attributes: 'RentEnterCost;RentOutCost;FactoryToRentTransCost;RentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
@@ -16,6 +16,7 @@
    Body:
    [*
      table            := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
      cell.Coefficient( value );
      traverse( table, Row, trow, trow.Name() = row.Name() ){
        traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
          tcel.RentEnterCost( cell.RentEnterCost() );
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditorTable
{
  #keys: '[415136.0.992750484]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellTable
    {
      #keys: '[415136.0.992750485]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCell
        {
          #keys: '[415136.0.992750486]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'DLEngineLogisticsCostReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Row.Cell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'CCRentEnterCost;CCRentOutCost;CCLongTransCoat;CCShortTransCost;CCRentStorageCost;DLRentEnterCost;DLRentOutCost;FactoryToDLRentTransCost;DLRentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsTable
    {
      #keys: '[415136.0.992750487]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRow
        {
          #keys: '[415136.0.992750488]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'DLEngineLogisticsCostReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Row'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsTable
    {
      #keys: '[415136.0.992750489]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumn
        {
          #keys: '[415136.0.992750490]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'DLEngineLogisticsCostReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageTable
    #child: matrixeditorContextMenuTable
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsTable'
    ContextMenu: 'matrixeditorContextMenuTable'
    Rows: 'MatrixEditorRowsTable'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelDLEngineLogisticsCostReportHeader
{
  #keys: '[415136.0.992750421]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelDLEngineLogisticsCostReportSearch
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelDLEngineLogisticsCostReportSearch.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
Component PanelDLEngineLogisticsCostReportSearch
{
  #keys: '[415136.0.992750422]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelExport
    #child: PanelPower
    #child: PanelMQBMLB
    #child: PanelGeneration
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
Component PanelExport
{
  #keys: '[415136.0.992750423]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonExport
    {
      #keys: '[415136.0.992750424]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 1
      ]
    }
    Component ButtonSearch
    {
      #keys: '[415136.0.992750425]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'VIEW'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelGeneration.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelGeneration
{
  #keys: '[415136.0.992750430]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslGeneration
    {
      #keys: '[415136.0.992750431]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: 'Generation'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelMQBMLB.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelMQBMLB
{
  #keys: '[415136.0.992750428]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslMQBMLB
    {
      #keys: '[415136.0.992750429]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: 'MQB/MLB'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelPower.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelPower
{
  #keys: '[415136.0.992750426]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslPower
    {
      #keys: '[415136.0.992750427]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Label: 'Power'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelTable
{
  #keys: '[415136.0.992750483]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorTable
  ]
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixEditorActionBarPageTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable
{
  #keys: '[415136.0.992750491]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_matrixeditorContextMenuTable.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable
{
  #keys: '[415136.0.992750492]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
Quintiq file version 2.0
#parent: MatrixEditorTable
Response OnUpdateValue (
  CCEngineLogisticsCostRow row,
  CCEngineLogisticsCostColumn column,
  CCEngineLogisticsCostCell cell,
  Number value,
  Number oldvalue
) id:Response_MatrixEditorTable_OnUpdateValue
{
  #keys: '[415136.0.992750480]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnUpdateValue'
  QuillAction
  {
    Body:
    [*
      table            := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
      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() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Response OnClose () id:Response_FormDLEngineLogisticsCostReport_OnClose
{
  #keys: '[415136.0.992750704]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebForm_OnClose'
  QuillAction
  {
    Body:
    [*
      //初始化
      //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
        DLEngineLogisticsCostReport::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
      //info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
      info( '------------------2----------------', isnull( dhSearch.Data() ) );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonExport
Response OnClick () id:Response_PanelExport_ButtonExport_OnClick
{
  #keys: '[415136.0.992750420]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := DLEngineLogisticsCostReport::Download( MacroPlan );
      Application.Download( DLEngineLogisticsCostReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonSearch_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonSearch
Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick
{
  #keys: '[415136.0.992750419]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: PanelGeneration/ddslGeneration
Response OnCreated () id:Response_PanelGeneration_ddslGeneration_OnCreated
{
  #keys: '[415136.0.992750414]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Generation() );
      valueString := values.Concatenate( ";" );
      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
      this.Strings( valueString );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelGeneration/ddslGeneration
Response OnSelectionChanged () id:Response_PanelGeneration_ddslGeneration_OnSelectionChanged
{
  #keys: '[415136.0.992750413]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
  QuillAction
  {
    Body:
    [*
      if( dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: PanelMQBMLB/ddslMQBMLB
Response OnCreated () id:Response_PanelMQBMLB_ddslMQBMLB_OnCreated
{
  #keys: '[415136.0.992750416]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.MQBMLB() );
      valueString := values.Concatenate( ";" );
      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
      this.Strings( valueString );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelMQBMLB/ddslMQBMLB
Response OnSelectionChanged () id:Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged
{
  #keys: '[415136.0.992750415]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
  QuillAction
  {
    Body:
    [*
      if( dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: PanelPower/ddslPower
Response OnCreated () id:Response_PanelPower_ddslPower_OnCreated
{
  #keys: '[415136.0.992750418]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      values := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.Power() );
      valueString := values.Concatenate( ";" );
      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
      this.Strings( valueString );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelPower/ddslPower
Response OnSelectionChanged () id:Response_PanelPower_ddslPower_OnSelectionChanged
{
  #keys: '[415136.0.992750417]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
  QuillAction
  {
    Body:
    [*
      if( dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormDLEngineLogisticsCostReport
{
  #keys: '[415136.0.992750301]'
  BaseType: 'WebForm'
  Children:
  [
    Component DataHolderTable
    {
      #keys: '[415136.0.992750351]'
      BaseType: 'WebDataHolder'
      Databinding: 'DLEngineLogisticsCostReport'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component dhSearch
    {
      #keys: '[415136.0.992750376]'
      BaseType: 'WebDataHolder'
      Databinding: 'DLEngineLogisticsCostSearch'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: PanelDLEngineLogisticsCostReportHeader
    #child: PanelTable
  ]
  Properties:
  [
    Image: 'MONEY2'
    Title: 'DL engine logistics cost report'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/DL_engine_logistics_cost_report_view.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,200 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormDLEngineLogisticsCostReport
      {
        title: 'QMacroPlanner::FormDLEngineLogisticsCostReport'
        shown: true
        componentID: 'QMacroPlanner::FormDLEngineLogisticsCostReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 15
          columnPosition: 1
          columnSpan: 13
        }
        components
        {
          FormDLEngineLogisticsCostReport_PanelDLEngineLogisticsCostReportHeader
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelDLEngineLogisticsCostReportSearch
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelGeneration
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelMQBMLB
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelPower
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelExport
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_PanelTable
          {
            sizeRatio: 1
          }
          FormDLEngineLogisticsCostReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormDLEngineLogisticsCostReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_CCRentEnterCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCRentEnterCost'
                    }
                    attribute_CCRentOutCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCRentOutCost'
                    }
                    attribute_CCLongTransCoat
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCLongTransCoat'
                    }
                    attribute_CCShortTransCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCShortTransCost'
                    }
                    attribute_CCRentStorageCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 4
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCRentStorageCost'
                    }
                    attribute_DLRentEnterCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 5
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLRentEnterCost'
                    }
                    attribute_DLRentOutCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 6
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLRentOutCost'
                    }
                    attribute_FactoryToDLRentTransCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 7
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'FactoryToDLRentTransCost'
                    }
                    attribute_DLRentStorageCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 8
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLRentStorageCost'
                    }
                    attribute_EstimatedTotalCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 9
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'EstimatedTotalCost'
                    }
                    attribute_Coefficient
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 10
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Coefficient'
                    }
                    attribute_TotalCost
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 11
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalCost'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'RowNr'"
                  }
                }
              }
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 28
    image: 'MONEY2'
    description: ''
  }
  formatversion: 2
  id: 'DL_engine_logistics_cost_report_view'
  name: 'DL engine logistics cost report view'
  isglobal: false
  isroot: true
}