lazhen
2024-09-23 b3805b18b19f773610283444e0a9bd479930109f
报表界面优化处理,换型损失导入导出添加日期
已修改66个文件
已添加18个文件
已删除5个文件
1414 ■■■■ 文件已修改
_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport#670.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick#130.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick#57.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/Data/MP_ChangeoverLossSetting.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
@@ -11,8 +11,10 @@
    {
      TargetType: ChangeLossSettingExcel
      EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
      EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
      EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
      EDIMLColumn Unit { Attribute: Unit ValueType: String }
    }
  }
@@ -23,8 +25,10 @@
      InputTable: ChangeLossSettingExcel
      OutputTable: ChangeoverLossSetting
      EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
      EDIColumnMatch { InputColumn: EndDate OutputColumn: EndDate }
      EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
      EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
      EDIColumnMatch { InputColumn: StartDate OutputColumn: StartDate }
      EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
    }
  }
@@ -38,6 +42,8 @@
        EDIXLSLinkColumn Product1 { ValueType: String }
        EDIXLSLinkColumn Product2 { ValueType: String }
        EDIXLSLinkColumn Unit { ValueType: String }
        EDIXLSLinkColumn StartDate { ValueType: Date }
        EDIXLSLinkColumn EndDate { ValueType: Date }
        EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
      ]
    }
_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
@@ -9,14 +9,18 @@
  {
    EDIMLTable ChangeLossSettingExcel
    {
      PrimaryKeyColumns: EndDate
      PrimaryKeyColumns: Product1
      PrimaryKeyColumns: Product2
      PrimaryKeyColumns: StartDate
      PrimaryKeyColumns: Unit
      TargetType: ChangeLossSettingExcel
      TypeIndex: ChangeLossSettingTypeIndex
      EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
      EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
      EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
      EDIMLColumn Unit { Attribute: Unit ValueType: String }
    }
  }
@@ -27,8 +31,10 @@
      InputTable: ChangeoverLossSetting
      OutputTable: ChangeLossSettingExcel
      EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
      EDIColumnMatch { InputColumn: EndDate OutputColumn: EndDate }
      EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
      EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
      EDIColumnMatch { InputColumn: StartDate OutputColumn: StartDate }
      EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
    }
  }
@@ -43,6 +49,8 @@
        EDIXLSLinkColumn Product2 { ValueType: String }
        EDIXLSLinkColumn Unit { ValueType: String }
        EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
        EDIXLSLinkColumn StartDate { ValueType: Date }
        EDIXLSLinkColumn EndDate { ValueType: Date }
      ]
    }
  }
_Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch
{
  #keys: '1[415136.0.1155410815]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1155410817][415136.0.1155410816][415136.0.1155410818]'
    Cardinality: '0to1'
    ObjectDefinition: EnginePipelineSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide EnginePipelineSearch
  {
    #keys: '3[415136.0.1155410820][415136.0.1155410819][415136.0.1155410821]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSearch
{
  #keys: '1[415136.0.1155603424]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1155603426][415136.0.1155603425][415136.0.1155603427]'
    Cardinality: '0to1'
    ObjectDefinition: FinancialProductionSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide FinancialProductionSearch
  {
    #keys: '3[415136.0.1155603429][415136.0.1155603428][415136.0.1155603430]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch
{
  #keys: '1[415136.0.1155410792]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1155410794][415136.0.1155410793][415136.0.1155410795]'
    Cardinality: '0to1'
    ObjectDefinition: FinancialSalesSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide FinancialSalesSearch
  {
    #keys: '3[415136.0.1155410797][415136.0.1155410796][415136.0.1155410798]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch
{
  #keys: '1[415136.0.1155603461]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1155603463][415136.0.1155603462][415136.0.1155603464]'
    Cardinality: '0to1'
    ObjectDefinition: InventorySummarySearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide InventorySummarySearch
  {
    #keys: '3[415136.0.1155603466][415136.0.1155603465][415136.0.1155603467]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch
{
  #keys: '1[415136.0.1155410837]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.1155410839][415136.0.1155410838][415136.0.1155410840]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachiningPipelineSearch
  {
    #keys: '3[415136.0.1155410842][415136.0.1155410841][415136.0.1155410843]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan owner,
  RecycleBin recycle,
  BinaryValue binaryValue,
  String filePath
)
{
  TextBody:
  [*
    // ç”„兰鸽 Sep-20-2024 (created)
    name                      := CCEngineLogisticsCostReport::GetDefaultName();
    source                    := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
    source.ReadStructure();
    Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
    //清空导入之前的表
    owner.CCEngineLogisticsCostReport( relflush );
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    products                  := construct( Product_MPs );
    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
    attricolumn               := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 1 );
    //生成新表的日期列
    table                     := owner.CCEngineLogisticsCostReport( relnew, ID := name, Name := name );
    showtable                 := owner.CCEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
    table.GenerateColumn( owner );
    traverse( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataRow, excelrow ){
      productcell             := selectobject( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn() = productcolumn );
      //处理未被同步的产品
      if( not exists( products, Elements, product, product.ID() = productcell.Value() ) ){
        product               := selectobject( owner, Product_MP, product, product.ID() = productcell.Value() );
        products.Add( product );
        ccrow                 := table.GetRow( productcell.Value() );
        //获取相同的产品
        sameproductcells      := selectset( productcolumn, GeneralExcelImportAndExportDataCell, excelcell, excelcell.Value() = productcell.Value() );
        //从日期列开始处理
        traverse( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 1 ){
          excelcolumn         := excelcell.GeneralExcelImportAndExportDataColumn();
          column              := selectobject( table, Column, column, column.Name() = excelcolumn.Name() );
          cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
          traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
            attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
            if( not ( attricell.Value() = '预计总费用' or attricell.Value() = '总费用' ) ){
              valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
              if( attricell.Value() = '外租库入库费用' ){
                cell.RentEnterCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '外租库出库费用' ){
                cell.RentOutCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '厂内到外租库运输费用' ){
                cell.FactoryToRentTransCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '外租库仓储费用' ){
                cell.RentStorageCost( [Number]valuecell.Value() );
              }
    //          else if( attricell.Value() = '预计总费用' ){
    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
    //          }
              else if( attricell.Value() = '系数' ){
                cell.Coefficient( [Number]valuecell.Value() );
              }
    //          else if( attricell.Value() = '总费用' ){
    //            cell.TotalCost( [Number]valuecell.Value() );
    //          }
            }
          }
        }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    //
    showtable.Generate( owner.CCEngineLogisticsCostSearch(), products );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -86,7 +86,7 @@
        }
      }
    }
    //厂内到外租库运输费用:,在 trip plan里找到长春装配线边库到长春外租库的运输数量,,,用公式计算得出结果,月度进行汇总
    //厂内到外租库运输费用:,在 trip plan里找到长春装配线边库到长春外租库的运输数量,,,用公式计算得出结果,月度进行汇总CC-MOMO到长春外租库
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是长春装配线边库
      originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan owner,
  RecycleBin recycle,
  BinaryValue binaryValue,
  String filePath
)
{
  TextBody:
  [*
    // ç”„兰鸽 Sep-20-2024 (created)
    name                      := CCEngineLogisticsCostReport::GetDefaultName();
    source                    := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
    source.ReadStructure();
    Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
    //清空导入之前的表
    owner.DLEngineLogisticsCostReport( relflush );
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    products                  := construct( Product_MPs );
    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
    attricolumn               := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 1 );
    //生成新表的日期列
    table                     := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
    showtable                 := owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
    table.GenerateColumn( owner );
    traverse( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataRow, excelrow ){
      productcell             := selectobject( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn() = productcolumn );
      //处理未被同步的产品
      if( not exists( products, Elements, product, product.ID() = productcell.Value() ) ){
        product               := selectobject( owner, Product_MP, product, product.ID() = productcell.Value() );
        products.Add( product );
        ccrow                 := table.GetRow( productcell.Value() );
        //获取相同的产品
        sameproductcells      := selectset( productcolumn, GeneralExcelImportAndExportDataCell, excelcell, excelcell.Value() = productcell.Value() );
        //从日期列开始处理
        traverse( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 1 ){
          excelcolumn         := excelcell.GeneralExcelImportAndExportDataColumn();
          column              := selectobject( table, Column, column, column.Name() = excelcolumn.Name() );
          cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
          traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
            attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
            if( not ( attricell.Value() = '预计总费用' or attricell.Value() = '总费用' ) ){
              valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
              if( attricell.Value() = '长春外租库入库费用' ){
                cell.CCRentEnterCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '长春外租库出库费用' ){
                cell.CCRentOutCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '长春长途运输费用' ){
                cell.CCLongTransCoat( [Number]valuecell.Value() );
              }else if( attricell.Value() = '长春短途运输费用' ){
                cell.CCShortTransCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '长春外租库仓储费用' ){
                cell.CCRentStorageCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '大连外租库入库费用' ){
                cell.DLRentEnterCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '大连外租库出库费用' ){
                cell.DLRentOutCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '厂内到外租库运输费用' ){
                cell.FactoryToDLRentTransCost( [Number]valuecell.Value() );
              }else if( attricell.Value() = '大连外租库仓储费用' ){
                cell.DLRentStorageCost( [Number]valuecell.Value() );
              }
    //          else if( attricell.Value() = '预计总费用' ){
    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
    //          }
              else if( attricell.Value() = '系数' ){
                cell.Coefficient( [Number]valuecell.Value() );
              }
    //          else if( attricell.Value() = '总费用' ){
    //            cell.TotalCost( [Number]valuecell.Value() );
    //          }
            }
          }
        }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    //
    showtable.Generate( owner.DLEngineLogisticsCostSearch(), products );
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -29,7 +29,7 @@
    
    table.GenerateColumn( owner );
    //发往长春的销量需要在trip plan里面找到起始库存点为大连装配线边库,目的地为长春外租库的产品 ç®—出发往长春的销量后,在发动机成本参数表里找到对应的包装容量和长春入库单价,用公式计算,月度进行汇总
    //在 trip plan里找到大连装配线边库到大连外租库的运输数量
    //在 trip plan里找到大连装配线边库到大连外租库的运输数量//大连厂内库到外租库
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是大连装配线边库
      originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
@@ -93,7 +93,7 @@
        }
      }
    }
    //大连外租库入库费用:入库量/包装容量*入库单价,入库量等于大连工厂该产品产量减去发往长春的数量
    //大连外租库入库费用:入库量/包装容量*入库单价,入库量等于大连工厂该产品产量减去发往长春的数量-newSupply
    traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//财务产量报表非导入
      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//财务产量报表不显示
        traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ) ){//财务产量报表里的大连产量, ä¸ä¸º0
@@ -121,7 +121,7 @@
        }
      }
    }
    //大连外租库出库费用:出库量/包装容量*出库单价,出库量等于大连工厂该产品销量减去发往长春的数量
    //大连外租库出库费用:出库量/包装容量*出库单价,出库量等于大连工厂该产品销量减去发往长春的数量-newSupply, å¤§è¿žåŽ‚å†…åº“ï¼Œå¤§è¿žå¤–ç§Ÿåº“
    traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//财务销量报表非导入
      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//财务销量报表不显示
        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ) ){//财务销量报表里的大连产量, ä¸ä¸º0
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,280 @@
Quintiq file version 2.0
#parent: #root
StaticMethod InitializeNew (
  MacroPlan owner
)
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    owner.DLEngineLogisticsCostReport( relflush );
    produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
    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里找到大连装配线边库到大连外租库的运输数量//大连厂内库到外租库
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      //起始库存点是否是大连装配线边库
    //  originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
      isdlspline             := laneleg.OriginStockingPointID().EndsWith( '厂内库' ) and ( laneleg.OriginStockingPointID().StartsWith( '大连' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );//table.IsInUnit( originsp, dlline );
      //目的地是否是大连外租库
    //  destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
      isdlrent               := laneleg.DestinationStockingPointID().EndsWith( '外租库' ) and ( laneleg.DestinationStockingPointID().StartsWith( '大连' ) or laneleg.DestinationStockingPointID().StartsWith( 'DL' ) );//table.IsInUnit( destisp, dlrent );
      if( isdlspline and isdlrent ){
        traverse( laneleg, Trip, trip, trip.Departure().Date() < startofnextyear ){//由于需要考虑产品运输lead time,每个月的汇总数据需要推迟两天进行计算
          periodtime         := trip.Departure().StartOfMonth().Date();
          periodname         := periodtime.Format( "M2/D2/Y" );
          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.StartDate() <= trip.Departure().Date() and engine.EndDate() >= trip.Departure().Date() );
          transcosts         := selectset( owner, LogisticsCostTransport, trans, trans.StartDate() <= trip.Departure().Date() and trans.EndDate() >= trip.Departure().Date() );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 and not isnull( column ) and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
              quantity       := [Number]pit.Quantity();
              row            := table.GetRow( pit.ProductID() );
              product        := pit.Product_MP();
              productparents := product.GetAllParent();
              //在发动机成本参数表找到对应的包装容量
              enginecost     := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                   and engine.MLB_MQB() = product.MQBMLB()
                                                   and engine.Factory() = dlunit  );
              //在运输成本参数表里找到发动机对应运输单价和装载容量
              transcost      := selectobject( transcosts, Elements, trans, trans.Origin() = laneleg.OriginStockingPointID()
                                                  and trans.Destination() = laneleg.DestinationStockingPointID()
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                products.Add( product );
                cell         := selectobject( row, Cell, cell, cell.Column() = column );
                //运输数量/包装容量/装载容量*运输单价
                cost         := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//四舍五入
                cell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + cost );
              }
    //          if( isccrent ){//目的地是长春外租库
    //            //在发动机成本参数表找到对应的包装容量
    //            enginecost   := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
    //                                               and engine.MLB_MQB() = product.MQBMLB()
    //                                               and engine.Factory() = ccunit );
    //            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 );
    //            }
    //          }
            }
          }
        }
      }
    }
    //大连外租库入库费用:入库量/包装容量*入库单价,入库量等于大连工厂该产品产量减去发往长春的数量-newSupply
    traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//财务产量报表非导入
      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//财务产量报表不显示
        traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ) ){//财务产量报表里的大连产量, ä¸ä¸º0
          product            := row.Product_MP();
          productparents     := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlunit );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( product );
              ccrow          := table.GetRow( row.Name() );
              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ){
                cellcolumn   := cell.FinancialProductionColumn();
                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
                if( not isnull( enginecost ) ){
                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
                  //大连外租库入库费用
                  ccrow.SetDLRentEnterCost( column, enginecost, cell );
                }
              }
            }
          }
        }
      }
    }
    //大连外租库出库费用:出库量/包装容量*出库单价,出库量等于大连工厂该产品销量减去发往长春的数量-newSupply, å¤§è¿žåŽ‚å†…åº“ï¼Œå¤§è¿žå¤–ç§Ÿåº“
    traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//财务销量报表非导入
      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//财务销量报表不显示
        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ) ){//财务销量报表里的大连产量, ä¸ä¸º0
          product            := row.Product_MP();
          productparents     := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = dlunit );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( product );
              ccrow          := table.GetRow( row.Name() );
              traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ){
                cellcolumn   := cell.FinancialSalesColumn();
                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
                if(  not isnull( enginecost ) ){
                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
                  //大连外租库出库费用
                  ccrow.SetDLRentOutCost( column, enginecost, cell );
                }
              }
            }
          }
        }
      }
    }
    //长春长途运输费用:调拨数量/包装容量/装载容量*运输单价,调拨计划里找到该产品从DL到CC的调拨数量,即起始地大连装配线边库,目的地为长春外租库对应的运输数量,在发动机成本参数表找到对应的包装容量,在运输成本参数表里找到发动机对应运输单价和装载容量,用公式计算得出结果,月度进行汇总
    traverse( owner, TransferPlanRow, tprow ){
      product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
      productparents          := product.GetAllParent();
      if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
        //起始库存点是否是大连
        originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.SourceStockpoingPointID() );
        isdl                   := table.IsInUnit( originsp, dlunit );
        //目的地库存点是否是长春
        destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.TargetStockpoingPointID() );
        iscc                   := table.IsInUnit( destisp, ccunit );
        if( isdl and iscc ){
          //查询对应的发动机成本
          enginecosts          := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit );
          //在运输成本参数表里找到发动机对应运输单价和装载容量
          transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.Origin() = tprow.SourceStockpoingPointID()
                                                  and trans.Destination() = tprow.TargetStockpoingPointID()
                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '发动机', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
            row                := table.GetRow( product.ID() );
            products.Add( product );
            traverse( tprow,TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() <> Date::MinDate() and [Number]tpcell.Value() > 0){
              tpcolumndate     := tpcell.TransferPlanColumn().ColumnDate();
              enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= tpcolumndate and engine.EndDate() >= tpcolumndate );
              transcost        := selectobject( transcosts, Elements, trans, trans.StartDate() <= tpcolumndate and trans.EndDate() >= tpcolumndate );
              if( not isnull( enginecost ) and not isnull( transcost ) ){
                periodtime     := tpcolumndate.StartOfMonth();
                periodname     := periodtime.Format( "M2/D2/Y" );
                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
                cost           := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
                cell           := selectobject( row, Cell, cell, cell.Column() = column );
                cell.CCLongTransCoat( cell.CCLongTransCoat() + cost );
              }
            }
          }
        }
      }
    }
    //长春短途运输费用:客户需求数量/包装容量/装载容量*运输单价,客户需求数量取自forecast里sales segment为长春的数量汇总,再用公式计算,月度进行汇总(取客户需求数量换算成车次)
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.Quantity() > 0 and not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < startofnextyear ){
      salessegment            := forecast.SalesSegment_MP();
      parentsalessegments     := salessegment.GetAllParent();
      //是否属于长春
      iscc                    := salessegment.Name() = 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() = produtparent ) ){//查询产品类型是发动机
          //查询对应的发动机成本
          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower()
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit );
          if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
            products.Add( forecast.Product_MP() );
            row               := table.GetRow( forecast.ProductID() );
            traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() > 0 ){
              enginecost      := selectobject( enginecosts, Elements, engine, engine.StartDate() <= psdip.StartDate() and engine.EndDate() >= psdip.StartDate() );
              if( not isnull( enginecost ) ){
                periodtime    := psdip.StartDate().StartOfMonth();
                periodname    := periodtime.Format( "M2/D2/Y" );
          //      info( '-------------------------', periodname, periodtime );
                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          //      info( '-------------------------', column.Name() );
                cost           := ceil( [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()
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
          //获取行
          product             := pisp.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            row               := table.GetRow( pisp.ProductID() );
            enginecosts       := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB() );
            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
              products.Add( pisp.Product_MP() );
              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0  ){
                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( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
                                                     and engine.Factory() = ccunit );
                   if( not isnull( enginecost ) ){
                     cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//四舍五入
                     cell.CCRentStorageCost( cell.CCRentStorageCost() + cost );
                   }
                } else {
                  //在发动机成本参数表找到对应的包装容量
                  enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
                                                     and engine.Factory() = dlunit  );
                   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_ChangeLossSettingExcel/Attribute_EndDate.qbl
@@ -3,5 +3,6 @@
Attribute EndDate
{
  #keys: '3[415136.0.1132074698][415136.0.1132074697][415136.0.1132074699]'
  IsReadOnly: true
  ValueType: Date
}
_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl
@@ -3,5 +3,6 @@
Attribute StartDate
{
  #keys: '3[415136.0.1132074695][415136.0.1132074694][415136.0.1132074696]'
  IsReadOnly: true
  ValueType: Date
}
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
@@ -9,7 +9,7 @@
  [*
    // ç”„兰鸽 Aug-22-2024 (created)
    traverse( macroplan, ChangeLossSetting, cls ){
      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNumber := [String]cls.ChangeLossNr() );
      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNumber := [String]cls.ChangeLossNr(), StartDate := cls.StartDate(), EndDate := cls.EndDate() );
    }
    value := macroplan.MP_ExportChangeLossSettingsBroker().ExecuteToXLS( isxlsxformat ).AsBinaryValue();
    macroplan.ChangeLossSettingExcel( relflush );
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
@@ -20,19 +20,32 @@
      macroplan.ChangeLossSettingExcel( relflush );
      error( e.GeneralInformation() );
    }
    clsset              := construct( ChangeLossSettings );
    //遍历处理导入的数据
    traverse( macroplan, ChangeLossSettingExcel, excel ){
      cls               := selectobject(  macroplan, ChangeLossSetting, cls, cls.ProductFirst().ID() = excel.Product1()
                                          and cls.ProductSecond().ID() = excel.Product2()
                                          and cls.Unit().ID() = excel.Unit() );
                                          and cls.Unit().ID() = excel.Unit()
                                          and cls.StartDate() = excel.StartDate()
                                          and cls.EndDate() = excel.EndDate() );
      if( isnull( cls ) ){
        cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := [Number]excel.ChangeLossNumber() );
        product1        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product1() );
        product2        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product2() );
        unit            := selectobject( macroplan, Unit, unit, unit.ID() = excel.Unit() );
        cls.ProductFirst( relset, product1 );
        cls.ProductSecond( relset, product2 );
        cls.Unit( relset, unit );
        feedback        := '';
        if( ChangeLossSetting::ValidateInput( feedback, macroplan, null( ChangeLossSetting ), unit, product1, product2, excel.StartDate(), excel.EndDate(), [Number]excel.ChangeLossNumber() ) ){
          cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := [Number]excel.ChangeLossNumber() );
          cls.ProductFirst( relset, product1 );
          cls.ProductSecond( relset, product2 );
          cls.Unit( relset, unit );
          clsset.Add( cls );
        }else{
          traverse( clsset, Elements, e ){
            e.Delete();
          }
          error( feedback );
        }
      }else {
        cls.ChangeLossNr( [Number]excel.ChangeLossNumber() );
      }
_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl
@@ -16,5 +16,13 @@
    {
      ModelElement: Unit
    }
    TypeIndexAttribute
    {
      ModelElement: StartDate
    }
    TypeIndexAttribute
    {
      ModelElement: EndDate
    }
  ]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -11,16 +11,16 @@
    //ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
    //dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
    productparent             := EnginePipelineReport::GetDefaultProductParent();
    ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
    dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
    ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
    dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
    //ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
    //dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
    //ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
    //dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
    source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    
    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    search                    := owner.EnginePipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    
    products                  := construct( Product_MPs );
    //初始化列
@@ -28,13 +28,16 @@
    endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
    
    //生成生产和库存数据
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
    //traverse( owner, StockingPoint_MP, stockingpoint ){
    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '厂内库' ) ){
    //  unit                    := stockingpoint.Unit();
    //  parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc         := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
    //  iscc                    := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
      iscc                    := stockingpoint.ID().StartsWith( 'CC' );
      //是否属于大连工厂
      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
    //  isdl                    := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
      isdl                    := stockingpoint.ID().StartsWith( '大连' );
      
      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
                and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -23,7 +23,7 @@
    //startofnextmonth          := startofplanning.StartOfNextMonth();
    startofnextyear           := startofplanning.StartOfNextYear();
    
    search                    := source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    search                    := owner.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    
    products                  := construct( Product_MPs );
    //需要的日期区间, å‘¨å’Œå¤©çš„只需要当前月
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -27,7 +27,7 @@
    //startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    
    search                    := source.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    search                    := owner.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    
    table.GenerateColumn( owner );
    
_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -8,7 +8,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    startofplanning           := search.InventorySummarySource().MacroPlan().StartOfPlanning();
    startofplanning           := search.MacroPlan().StartOfPlanning();
    startofyear               := startofplanning.StartOfYear();
    startofendyear            := startofplanning.StartOfNextYear() - Duration::Days( 1 );
    //查询日期返回需要在计划日期之内
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -14,10 +14,10 @@
    allunit                   := InventorySummaryReport::GetDefaultAllUnit();
    ccunit                    := InventorySummaryReport::GetDefaultCCUnit();
    dlunit                    := InventorySummaryReport::GetDefaultDLUnit();
    ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
    dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
    ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
    dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
    //ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
    //dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
    //ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
    //dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
    
    source                    := owner.InventorySummarySource( relnew, ID := InventorySummaryReport::GetDefaultName(), Name := InventorySummaryReport::GetDefaultName() );
    table                     := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
@@ -26,18 +26,21 @@
    startofyear               := startofplanning.StartOfYear();
    startofnextyear           := startofplanning.StartOfNextYear();
    
    search                    := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
    search                    := owner.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
    
    table.GenerateColumn( owner, 'All', startofyear, startofnextyear );
    //info( '-----------------------------------', table.InventorySummaryColumn( relsize ) );
    //库存数量为Actual inventories里面的点Planned inventories字段库存量加总
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
    //traverse( owner, StockingPoint_MP, stockingpoint ){
    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '厂内库' ) ){
    //  unit                    := stockingpoint.Unit();
    //  parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc         := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
      iscc                    := stockingpoint.ID().StartsWith( 'CC' );//unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
    //  iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );
      //是否属于大连工厂
      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
      isdl                    := stockingpoint.ID().StartsWith( '大连' );//unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
    //  isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
          //获取工厂行
@@ -144,8 +147,12 @@
    rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
      if( exists( e, InventorySummaryCell, cell, cell.AverageInventory() <> 0 or cell.EndingInventory() <> 0 or cell.MaximumInventory() <> 0 or cell.MinimumInventory() <> 0 ) ){
        e.RowNr( i );
        i := i + 1;
      }{
        e.Delete();
      }
    }
    showtable.Generate( search, products );
  *]
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -16,29 +16,29 @@
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    
    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    search                    := owner.MachiningPipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    
    products                  := construct( Product_MPs );
    //初始化列
    table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
    endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
    
    //生成装配、生产和库存数据
    //生成装配(长内库)、生产(的DL和库存数据
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc                    := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );//unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
      //是否属于大连工厂
      isdl                    := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
      //是否属于长春装配线
      isccassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
      //是否属于大连装配线
      isdlassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );//unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
      //是否属于长春装配线CC厂内库
      isccassemnly            := stockingpoint.ID().EndsWith( '厂内库' ) and ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' ) );//unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
      //是否属于大连装配线DL厂内库
      isdlassemnly            := stockingpoint.ID().EndsWith( '厂内库' ) and ( stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '大连' ) );//unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
      //是否属于长春机加产线
      isccproduction          := unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
      isccproduction          := stockingpoint.ID().EndsWith( '线边库' ) and ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' ) );//unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
      //是否属于大连机加产线
      isdlproduction          := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
      isdlproduction          := unit.ID().EndsWith( 'MoMo' ) and unit.ID().StartsWith( 'DL' );//unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
    //              and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport#670.def
@@ -25,6 +25,26 @@
        Taborder: 0
      ]
    }
    Component ButtonImport
    {
      #keys: '[415136.0.1153801819]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 2
      ]
    }
    Component bRefresh
    {
      #keys: '[415136.0.1153802554]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
@@ -11,14 +11,14 @@
    [*
      //初始化
      //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
        CCEngineLogisticsCostReport::Initialize( MacroPlan );
      //  CCEngineLogisticsCostReport::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
      //table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
      //info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
      //dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: PanelExport_670/ButtonImport
Response OnClick () id:Response_PanelExport_670_ButtonImport_OnClick
{
  #keys: '[415136.0.1153801818]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          CCEngineLogisticsCostReport::Import( MacroPlan, RecycleBin, webFileBinaryData, fileName );
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport_670/bRefresh
Response OnClick () id:Response_PanelExport_bRefresh_OnClick
{
  #keys: '[415136.0.1153802553]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      CCEngineLogisticsCostReport::Initialize( MacroPlan );
      table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
      DataHolderTable.Data( table );
      //dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Generation() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().MqbMlb() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Power() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.989500384]'
      BaseType: 'WebDataHolder'
      Databinding: 'CCEngineLogisticsCostSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1155813573]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'CCEngineLogisticsCostSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
@@ -25,6 +25,26 @@
        Taborder: 0
      ]
    }
    Component ButtonImport id:ButtonImport_85
    {
      #keys: '[415136.0.1153802162]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 2
      ]
    }
    Component bRefresh id:bRefresh_427
    {
      #keys: '[415136.0.1153802325]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
@@ -11,15 +11,15 @@
    [*
      //初始化
      //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
        DLEngineLogisticsCostReport::Initialize( MacroPlan );
      //  DLEngineLogisticsCostReport::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
      //table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
      //info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
      info( '------------------2----------------', isnull( dhSearch.Data() ) );
      //dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
      //info( '------------------2----------------', isnull( dhSearch.Data() ) );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick#130.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonImport_85
Response OnClick () id:Response_PanelExport_670_ButtonImport_OnClick_130
{
  #keys: '[415136.0.1153802161]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          DLEngineLogisticsCostReport::Import( MacroPlan, RecycleBin, webFileBinaryData, fileName );
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick#57.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport/bRefresh_427
Response OnClick () id:Response_pHeader_bRefresh_OnClick_57
{
  #keys: '[415136.0.1153802324]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      DLEngineLogisticsCostReport::Initialize( MacroPlan );
      table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
      DataHolderTable.Data( table );
      //dhSearch.Data( MacroPlan.DLEngineLogisticsCostSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Generation() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().MqbMlb() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Power() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.992750376]'
      BaseType: 'WebDataHolder'
      Databinding: 'DLEngineLogisticsCostSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1155813898]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'DLEngineLogisticsCostSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def
@@ -25,6 +25,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh id:bRefresh_765
    {
      #keys: '[415136.0.1153803836]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
    Body:
    [*
      //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
        EnginePipelineSource::Initialize( MacroPlan );
      //  EnginePipelineSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
      //table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.Source().Search() );
      //dhSearch.Data( table.Source().Search() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport_570/bRefresh_765
Response OnClick () id:Response_PanelExport_bRefresh_OnClick
{
  #keys: '[415136.0.1153803835]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      EnginePipelineSource::Initialize( MacroPlan );
      table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( MacroPlan.EnginePipelineSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.884990864]'
      BaseType: 'WebDataHolder'
      Databinding: 'EnginePipelineSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1155812008]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'EnginePipelineSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh id:bRefresh_859
    {
      #keys: '[415136.0.1153802738]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
@@ -11,14 +11,14 @@
    [*
      //初始化
      //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
        FinancialProductionSource::Initialize( MacroPlan );
      //  FinancialProductionSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
      //table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
      //info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.FinancialProductionSource().FinancialProductionSearch() );
      //dhSearch.Data( MacroPlan.FinancialProductionSearch() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport/bRefresh_859
Response OnClick () id:Response_PanelExport_670_bRefresh_OnClick
{
  #keys: '[415136.0.1153802737]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      FinancialProductionSource::Initialize( MacroPlan );
      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
      DataHolderTable.Data( table );
      //dhSearch.Data( MacroPlan.FinancialProductionSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Generation() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().MqbMlb() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Power() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      if( dhSearch.Data().Unit() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
        dhSearch.Data().Unit( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
@@ -24,6 +24,21 @@
      #keys: '[415136.0.849431513]'
      BaseType: 'WebDataHolder'
      Databinding: 'FinancialProductionSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1153870614]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'FinancialProductionSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.def
@@ -25,6 +25,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh
    {
      #keys: '[415136.0.1153802934]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
    Body:
    [*
      //if( not exists( MacroPlan, FinancialSalesSource, source, not source.IsImport() ) ){
        FinancialSalesSource::Initialize( MacroPlan );
      //  FinancialSalesSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
      //table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
      //info( '------------------2----------------', table.IsImport(), table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.FinancialSalesSource().FinancialSalesSearch() );
      //dhSearch.Data( MacroPlan.FinancialSalesSearch() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport_545/bRefresh
Response OnClick () id:Response_PanelExport_bRefresh_OnClick
{
  #keys: '[415136.0.1153802933]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      FinancialSalesSource::Initialize( MacroPlan );
      table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
      DataHolderTable.Data( table );
      //dhSearch.Data( MacroPlan.FinancialSalesSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //代数改变后刷新显示
      if( dhSearch.Data().Generation() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //横纵制改变后刷新显示
      if( dhSearch.Data().MqbMlb() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //功率改变后刷新显示
      if( dhSearch.Data().Power() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //Unit更新后生成新的显示
      if( dhSearch.Data().Unit() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
        dhSearch.Data().Unit( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.857870874]'
      BaseType: 'WebDataHolder'
      Databinding: 'FinancialSalesSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1155080551]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'FinancialSalesSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
@@ -15,6 +15,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh id:bRefresh_561
    {
      #keys: '[415136.0.1153803361]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
@@ -9,7 +9,7 @@
  {
    Body:
    [*
      FinancialWeeklyReport::Initialize( MacroPlan );
      //FinancialWeeklyReport::Initialize( MacroPlan );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelHeader/bRefresh_561
Response OnClick () id:Response_PanelExport_545_bRefresh_OnClick
{
  #keys: '[415136.0.1153803360]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      FinancialWeeklyReport::Initialize( MacroPlan );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh id:bRefresh_509
    {
      #keys: '[415136.0.1153803172]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
    Body:
    [*
      //if( not isnull( MacroPlan.InventorySummarySource() ) ){
        InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
      //  InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
      //table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
      //dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().Category() <> this.BoundValue() ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Category() <> this.BoundValue() ){
        dhSearch.Data().Category( this.BoundValue() );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport/bRefresh_509
Response OnClick () id:Response_PanelExport_545_bRefresh_OnClick
{
  #keys: '[415136.0.1153803171]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
      table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
      DataHolderTable.Data( table );
      //dhSearch.Data( MacroPlan.InventorySummarySearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //代数改变后刷新显示
      if( dhSearch.Data().Generation() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
        dhSearch.Data().Generation( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //横纵制改变后刷新显示
      if( dhSearch.Data().MqbMlb() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
        dhSearch.Data().MqbMlb( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //功率改变后刷新显示
      if( dhSearch.Data().Power() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
        dhSearch.Data().Power( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //Unit更新后生成新的显示
      if( dhSearch.Data().Unit() <> selection ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
        dhSearch.Data().Unit( selection );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.864612034]'
      BaseType: 'WebDataHolder'
      Databinding: 'InventorySummarySearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1153810823]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'InventorySummarySearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
        Taborder: 0
      ]
    }
    Component bRefresh
    {
      #keys: '[415136.0.1153803668]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
    Body:
    [*
      //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
        MachiningPipelineSource::Initialize( MacroPlan );
      //  MachiningPipelineSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
      //table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      //DataHolderTable.Data( table );
      
      dhSearch.Data( table.Source().Search() );
      //dhSearch.Data( table.Source().Search() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: PanelExport/bRefresh
Response OnClick () id:Response_PanelHeader_bRefresh_OnClick
{
  #keys: '[415136.0.1153803667]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      MachiningPipelineSource::Initialize( MacroPlan );
      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( MacroPlan.MachiningPipelineSearch() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -10,7 +10,7 @@
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
      if( not isnull( dhSearch.Data() ) and dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
@@ -22,6 +22,21 @@
      #keys: '[415136.0.893820823]'
      BaseType: 'WebDataHolder'
      Databinding: 'MachiningPipelineSearch'
      Children:
      [
        Component deSearch
        {
          #keys: '[415136.0.1155813174]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MachiningPipelineSearch'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
Binary files differ