rislai
2024-08-07 3cf4ce0c94be1a8928ffe280429d6297583b3b8d
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已添加44个文件
已修改26个文件
已删除1个文件
1559 ■■■■ 文件已修改
_Main/BL/Relations/Relation_MachineLogisticsCostReportColumn_MachineLogisticsCostReportCell_Mac.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachineLogisticsCostReportColumn_MacroPlan_MacroPlan_MachineLogisti.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachineLogisticsCostReportRow_MachineLogisticsCostReportCell_Machin.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachineLogisticsCostReportRow_MacroPlan_MacroPlan_MachineLogisticsC.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_GetColumnByUnit.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_BufferPaperCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_Coefficient.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_EstimatedTotalCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_ExternalRentalWarehouseTransportationCosts.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_OutboundExpensesForRentedWarehouses.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_PackingCharges.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_QuantityOfWoodenCrates.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_RentalWarehouseStorageFees.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_StorageFeesForRentedWarehouses.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_TotalCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_TransferCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_UnitPriceOfWoodenCrate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_UnpackingCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_WoodenCrateCost.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/Function_CalcWoodenCrateCost.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportCell/_ROOT_Type_MachineLogisticsCostReportCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportColumn/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportColumn/_ROOT_Type_MachineLogisticsCostReportColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportRow/Attribute_Category.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportRow/Attribute_Factory.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineLogisticsCostReportRow/_ROOT_Type_MachineLogisticsCostReportRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GetColumnByUnit.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_Category.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_bMachineLogisticsCostReport_OnCli.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuPipelineReport_MenuEnginePipelineReport_OnC.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuPipelineReport_MenuMachiningPipelineReport_.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSearch_OnClick#648.def 16 ●●●●● 补丁 | 查看 | 原始文档 | 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_FormMachineLogisticsCostReport/Component_MatrixEditor912.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_matrixEditorActionBarPage703.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_matrixeditorContextMenu253.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pContent.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Response_pHeader_bRefresh_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/_ROOT_Component_FormMachineLogisticsCostReport.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSearch_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | 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/Views/Engine_pipleline_report.vw 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/MachineLogisticsCostReport.vw 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Machining_pipeline_report_view.vw 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/EditorTC/Views/班次时间分析_[413988.0.1367211460].vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachineLogisticsCostReportColumn_MachineLogisticsCostReportCell_Mac.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachineLogisticsCostReportColumn_MachineLogisticsCostReportCell_MachineLogisticsCostReportCell_MachineLogisticsCostReportColumn
{
  #keys: '1[413988.0.1462991379]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MachineLogisticsCostReportCell
  {
    #keys: '3[413988.0.1462991381][413988.0.1462991380][413988.0.1462991382]'
    Cardinality: '1toN'
    ObjectDefinition: MachineLogisticsCostReportColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachineLogisticsCostReportColumn
  {
    #keys: '3[413988.0.1462991384][413988.0.1462991383][413988.0.1462991385]'
    Cardinality: '0to1'
    ObjectDefinition: MachineLogisticsCostReportCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MachineLogisticsCostReportColumn_MacroPlan_MacroPlan_MachineLogisti.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachineLogisticsCostReportColumn_MacroPlan_MacroPlan_MachineLogisticsCostReportColumn
{
  #keys: '1[413988.0.1462991394]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1462991396][413988.0.1462991395][413988.0.1462991397]'
    Cardinality: '0to1'
    ObjectDefinition: MachineLogisticsCostReportColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachineLogisticsCostReportColumn
  {
    #keys: '3[413988.0.1462991399][413988.0.1462991398][413988.0.1462991400]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachineLogisticsCostReportRow_MachineLogisticsCostReportCell_Machin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachineLogisticsCostReportRow_MachineLogisticsCostReportCell_MachineLogisticsCostReportCell_MachineLogisticsCostReportRow
{
  #keys: '1[413988.0.1462991364]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MachineLogisticsCostReportCell
  {
    #keys: '3[413988.0.1462991366][413988.0.1462991365][413988.0.1462991367]'
    Cardinality: '1toN'
    ObjectDefinition: MachineLogisticsCostReportRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MachineLogisticsCostReportRow
  {
    #keys: '3[413988.0.1462991369][413988.0.1462991368][413988.0.1462991370]'
    Cardinality: '0to1'
    ObjectDefinition: MachineLogisticsCostReportCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MachineLogisticsCostReportRow_MacroPlan_MacroPlan_MachineLogisticsC.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachineLogisticsCostReportRow_MacroPlan_MacroPlan_MachineLogisticsCostReportRow
{
  #keys: '1[413988.0.1462991349]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1462991351][413988.0.1462991350][413988.0.1462991352]'
    Cardinality: '0to1'
    ObjectDefinition: MachineLogisticsCostReportRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachineLogisticsCostReportRow
  {
    #keys: '3[413988.0.1462991354][413988.0.1462991353][413988.0.1462991355]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl
@@ -11,13 +11,22 @@
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //查询日期返回需要在计划日期之内
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
              and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
                    or period.TimeUnit() = timeunit ) ){
      periodtime := period.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
    weekstart             := owner.StartOfPlanning().Date();
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
      if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Day() ){
        periodtime          := period.StartDate();
        periodname          := periodtime.Format( "M2/D2/Y" );
        this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
      }
      
      this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
      if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Week() ){
        if( period.StartDate() = weekstart ){
          weekperiodname    := weekstart.Format( "M2/D2/Y" );
          this.Column( relnew, Name := weekperiodname, Period := weekstart, TimeUnit := Translations::MP_GlobalParameters_Week() );
          weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
        }
      }
    }
  *]
}
_Main/BL/Type_EnginePipelineReport/Method_GetColumnByUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method GetColumnByUnit (
  String unit,
  Date period
) as EnginePipelineColumn
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-7-2024 (created)
    periodname := period.Format( "M2/D2/Y" );
    column := selectobject( this, Column, column, column.Name() = periodname and column.Period() = period and column.TimeUnit() = unit );
    return column;
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春';
    return '长春工厂';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连';
    return '大连工厂';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_EnginePipelineRow/Method_SetCellProductionValue.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method SetCellProductionValue (
  EnginePipelineColumn column,
  String unit,
  Boolean isccunit,
  Real quantity
)
{
@@ -17,9 +17,9 @@
      production := cell.Production( relnew, EngineType := cell.Row().Name(), Period := column.Period(), DLProduction := 0, CCProduction := 0 );
    }
    
    if( unit = EnginePipelineReport::GetDefaultCCUnit() ){
    if( isccunit ){
      production.CCProduction( production.CCProduction() + quantity );
    }else if( unit = EnginePipelineReport::GetDefaultDLUnit() ){
    } else {
      production.DLProduction( production.DLProduction() + quantity );
    }
  *]
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -20,48 +20,65 @@
    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() );
    
    //生成生产和库存数据
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
      unit := pisp.StockingPoint_MP().UnitID();
    //  info( unit, pisp.ProductID() );
      //初始化行
      row := table.GetRow( pisp.ProductID() );
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc                    := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
      //是否属于大连工厂
      isdl                    := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
      
      traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
        periodtime := pispip.Period_MP().StartDate();
        periodname := periodtime.Format( "M2/D2/Y" );
    //    info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() );
        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
    //    info( '---------------------------------', isnull( column ), isnull( row ) );
    //    info( '---------------------------------', column.Name(), row.Name() );
        if( unit = ccunit or unit = dlunit ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
        weekstart             := owner.StartOfPlanning().Date();
        pispips               := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
        row := table.GetRow( pisp.ProductID() );
        traverse( pispips, Elements, pispip ){
          //天
          daycolumn           := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
          //周
          weekcolumn          := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
          supplyquantity      := [Real]ceil( pispip.NewSupplyQuantity() );//向上取整
          inventoryquantity   := [Real]ceil( pispip.PlannedInventoryLevelEnd() );//向上取整
          //产量是加总
          if( iscc or isdl ){
            row.SetCellProductionValue( daycolumn, iscc, supplyquantity );
            row.SetCellProductionValue( weekcolumn, iscc, supplyquantity );
          }
          //库存需要取最后一天
          row.SetCellInventoryValue( daycolumn, pispip.PlannedInventoryLevelEnd() );
          if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
            weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
            row.SetCellInventoryValue( weekcolumn, inventoryquantity );
          }
        }
        row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() );
      }
    }
    
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
      row := table.GetRow( forecast.ProductID() );
      weekdate   := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
      periodtime := forecast.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
      weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() );
      if( not isnull( column ) ){
        row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() );
      }
      if( not isnull( weekcolumn ) ){
        row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
    traverse( owner, SalesDemand.astype( Forecast ), forecast ){
      row                   := table.GetRow( forecast.ProductID() );
      weekstart             := owner.StartOfPlanning().Date();
      traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
        //天
        daycolumn           := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
        //周
        weekcolumn          := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
        if( not isnull( daycolumn ) ){
          row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
        }
        if( not isnull( weekcolumn ) ){
          row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
        }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    return '长春';
    return '长春工厂';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_FinancialWeeklyReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-28-2024 (created)
    return '大连';
    return '大连工厂';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_BufferPaperCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BufferPaperCost
{
  #keys: '3[413988.0.1462991460][413988.0.1462991459][413988.0.1462991461]'
  Description: '缓冲纸费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_Coefficient.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Coefficient
{
  #keys: '3[413988.0.1462991560][413988.0.1462991559][413988.0.1462991561]'
  Description: '系数'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_EstimatedTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EstimatedTotalCost
{
  #keys: '3[413988.0.1462991540][413988.0.1462991539][413988.0.1462991541]'
  Description: '预计总费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_ExternalRentalWarehouseTransportationCosts.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ExternalRentalWarehouseTransportationCosts
{
  #keys: '3[413988.0.1462991520][413988.0.1462991519][413988.0.1462991521]'
  Description: '外租库运输费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_OutboundExpensesForRentedWarehouses.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OutboundExpensesForRentedWarehouses
{
  #keys: '3[413988.0.1462991510][413988.0.1462991509][413988.0.1462991511]'
  Description: '外租库出库费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_PackingCharges.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PackingCharges
{
  #keys: '3[413988.0.1462991440][413988.0.1462991439][413988.0.1462991441]'
  Description: '包装费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_QuantityOfWoodenCrates.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute QuantityOfWoodenCrates
{
  #keys: '3[413988.0.1462991470][413988.0.1462991469][413988.0.1462991471]'
  Description: '木箱数量'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_RentalWarehouseStorageFees.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute RentalWarehouseStorageFees
{
  #keys: '3[413988.0.1462991530][413988.0.1462991529][413988.0.1462991531]'
  Description: '外租库仓储费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_StorageFeesForRentedWarehouses.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StorageFeesForRentedWarehouses
{
  #keys: '3[413988.0.1462991500][413988.0.1462991499][413988.0.1462991501]'
  Description: '外租库入库费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_TotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalCost
{
  #keys: '3[413988.0.1462991550][413988.0.1462991549][413988.0.1462991551]'
  Description: '总费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_TransferCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TransferCost
{
  #keys: '3[413988.0.1462991490][413988.0.1462991489][413988.0.1462991491]'
  Description: '调拨费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_UnitPriceOfWoodenCrate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UnitPriceOfWoodenCrate
{
  #keys: '3[413988.0.1467610005][413988.0.1467610004][413988.0.1467610006]'
  Description: '木箱单价'
  ValueType: Number
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_UnpackingCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UnpackingCost
{
  #keys: '3[413988.0.1462991450][413988.0.1462991449][413988.0.1462991451]'
  Description: '拆包费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Attribute_WoodenCrateCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute WoodenCrateCost
{
  #keys: '3[413988.0.1462991480][413988.0.1462991479][413988.0.1462991481]'
  Description: '木箱费用'
  ValueType: Real
}
_Main/BL/Type_MachineLogisticsCostReportCell/Function_CalcWoodenCrateCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcWoodenCrateCost
{
  TextBody:
  [*
    // lihongji Aug-7-2024 (created)
    value := guard( this.QuantityOfWoodenCrates() * this.UnitPriceOfWoodenCrate(), 0.0 );
    this.WoodenCrateCost( value );
  *]
}
_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateData (
  MacroPlan macroPlan,
  String factory
)
{
  TextBody:
  [*
    macroPlan.MachineLogisticsCostReportRow( relflush );
    macroPlan.MachineLogisticsCostReportColumn( relflush );
    // åˆå§‹åŒ–一年数据列
    indexDate := macroPlan.StartOfPlanning().Date().StartOfMonth();
    for ( i := 0; i < 12; i++ ) {
      macroPlan.MachineLogisticsCostReportColumn( relnew, StartDate := indexDate );
      indexDate := indexDate.StartOfNextMonth();
    }
    // æ‰¾å‡ºæ‰€æœ‰å¤§ç±»ï¼Œåˆ›å»ºæ•°æ®
    categories := selectuniquevalues( macroPlan, PackagingPlanRow, tempPPR, true, tempPPR.Category() );
    traverse ( categories, Elements, c ) {
      // æœºåŠ æˆæœ¬å‚æ•°
      lcm := select( macroPlan, LogisticsCostMachining, tempLCM, tempLCM.Factory() = factory and tempLCM.Product() = c );
      // è¿è¾“成本参数
      lct := select( macroPlan, LogisticsCostTransport, tempLCT, tempLCT.Origin()      = ifexpr( factory = "大连工厂", "CC", "DL" ) and
                                                                 tempLCT.Destination() = ifexpr( factory = "大连工厂", "DL", "CC" ) and
                                                                 tempLCT.Product()     = c );
      // åˆå§‹åŒ–机加成本参数报表行
      mlcrr := macroPlan.MachineLogisticsCostReportRow( relnew, Category := c, Factory := factory );
      // å¾ªçŽ¯æ‰€æœ‰æ—¶é—´åˆ—åˆ›å»ºæ•°æ®
      traverse ( macroPlan, MachineLogisticsCostReportColumn, mlcrc ) {
        cell := mlcrr.MachineLogisticsCostReportCell( relnew );
        // è®¾ç½®åŒ…装费用(包装量 * åŒ…装单价)
        packageQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC,
                                tempPPC.PackagingPlanRow().Category()             = c                         and
                                tempPPC.PackagingPlanRow().Factory()              = factory                   and
                                tempPPC.PackagingPlanColumn().StartDate().Year()  = mlcrc.StartDate().Year()  and
                                tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(),
                                tempPPC.Package() );
        cell.PackingCharges( packageQuantity * guard( lcm.PackagePrice(), 1 ) );
        // è®¾ç½®æ‹†åŒ…费用(拆包量 * æ‹†åŒ…单价)
        unpackingQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC,
                                  tempPPC.PackagingPlanRow().Category()             = c                         and
                                  tempPPC.PackagingPlanRow().Factory()              = factory                   and
                                  tempPPC.PackagingPlanColumn().StartDate().Year()  = mlcrc.StartDate().Year()  and
                                  tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(),
                                  tempPPC.Unpacking() );
        cell.UnpackingCost( unpackingQuantity * guard( lcm.UnpackingPrice(), 1 ) );
        // è®¾ç½®ç¼“冲纸费用(包装类 * ç¼“冲纸单价)
        cell.BufferPaperCost( packageQuantity * guard( lcm.BufferPaperPrice(), 1 ) );
        // è®¾ç½®æœ¨ç®±å•ä»·
        cell.UnitPriceOfWoodenCrate( guard( lcm.WoodenCratePrice(), 1 ) );
        // è®¾ç½®è°ƒæ‹¨è´¹ç”¨ï¼ˆè°ƒæ‹¨æ•°é‡ / åŒ…装容量 / è£…载容量 * è¿è¾“单价)
        transferQuantity := sum( macroPlan, TransferPlanRow.TransferPlanCell, tempTPC,
                                 tempTPC.TransferPlanRow().Category()              = c                                                      and
                                 tempTPC.TransferPlanRow().Name()                  = ifexpr( factory = "大连工厂", "CC to DL", "DL to CC" ) and
                                 tempTPC.TransferPlanColumn().ColumnDate().Year()  = mlcrc.StartDate().Year()                               and
                                 tempTPC.TransferPlanColumn().ColumnDate().Month() = mlcrc.StartDate().Month(),
                                 [Number]tempTPC.Value() );
        cell.TransferCost( transferQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) );
        // å¤–租库入库费用(入库量[包装量] / åŒ…装容量 * å…¥åº“单价)
        cell.StorageFeesForRentedWarehouses( packageQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.WarehousingPrice(), 1 ) );
        // å¤–租库出库费用(出库量[拆包量] / åŒ…装容量 * å‡ºåº“单价)
        cell.OutboundExpensesForRentedWarehouses( unpackingQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.OutboundPrice(), 1 ) );
        // å¤–租库运输费用(运输数量 / åŒ…装容量 / è£…载容量 * è¿è¾“单价)
        cell.MachineLogisticsCostReportColumn( relset, mlcrc );
      }
    }
  *]
}
_Main/BL/Type_MachineLogisticsCostReportCell/_ROOT_Type_MachineLogisticsCostReportCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachineLogisticsCostReportCell
{
  #keys: '5[413988.0.1462991346][413988.0.1462991344][0.0.0][413988.0.1462991345][413988.0.1462991347]'
  BaseType: Object
  StructuredName: 'MachineLogisticsCostReportCells'
}
_Main/BL/Type_MachineLogisticsCostReportColumn/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1462991430][413988.0.1462991429][413988.0.1462991431]'
  ValueType: Date
}
_Main/BL/Type_MachineLogisticsCostReportColumn/_ROOT_Type_MachineLogisticsCostReportColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachineLogisticsCostReportColumn
{
  #keys: '5[413988.0.1462991341][413988.0.1462991339][0.0.0][413988.0.1462991340][413988.0.1462991342]'
  BaseType: Object
  StructuredName: 'MachineLogisticsCostReportColumns'
}
_Main/BL/Type_MachineLogisticsCostReportRow/Attribute_Category.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Category
{
  #keys: '3[413988.0.1462991420][413988.0.1462991419][413988.0.1462991421]'
  ValueType: String
}
_Main/BL/Type_MachineLogisticsCostReportRow/Attribute_Factory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Factory
{
  #keys: '3[413988.0.1462991410][413988.0.1462991409][413988.0.1462991411]'
  ValueType: String
}
_Main/BL/Type_MachineLogisticsCostReportRow/_ROOT_Type_MachineLogisticsCostReportRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MachineLogisticsCostReportRow
{
  #keys: '5[413988.0.1462991336][413988.0.1462991334][0.0.0][413988.0.1462991335][413988.0.1462991337]'
  BaseType: Object
  StructuredName: 'MachineLogisticsCostReportRows'
}
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl
@@ -11,13 +11,22 @@
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //查询日期返回需要在计划日期之内
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.StartDate() >= startdate and period.EndDate() <= enddate
              and ( ( timeunit = 'All' and ( period.TimeUnit() = Translations::MP_GlobalParameters_Day() or period.TimeUnit() = Translations::MP_GlobalParameters_Week() ) )
                    or period.TimeUnit() = timeunit ) ){
      periodtime := period.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
    weekstart             := owner.StartOfPlanning().Date();
    traverse( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
      if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Day() ){
        periodtime          := period.StartDate();
        periodname          := periodtime.Format( "M2/D2/Y" );
        this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
      }
      
      this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := period.TimeUnit() );
      if( timeunit = 'All' or timeunit = Translations::MP_GlobalParameters_Week() ){
        if( period.StartDate() = weekstart ){
          weekperiodname    := weekstart.Format( "M2/D2/Y" );
          this.Column( relnew, Name := weekperiodname, Period := weekstart, TimeUnit := Translations::MP_GlobalParameters_Week() );
          weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
        }
      }
    }
  *]
}
_Main/BL/Type_MachiningPipelineReport/Method_GetColumnByUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method GetColumnByUnit (
  String unit,
  Date period
) as MachiningPipelineColumn
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-7-2024 (created)
    periodname := period.Format( "M2/D2/Y" );
    column := selectobject( this, Column, column, column.Name() = periodname and column.Period() = period and column.TimeUnit() = unit );
    return column;
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春';
    return '长春工厂';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连';
    return '大连工厂';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method SetCellAssemblyValue (
  MachiningPipelineColumn column,
  String unit,
  Boolean iscc,
  Real quantity
)
{
@@ -11,9 +11,9 @@
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    
    if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() ){
    if( iscc ){
      cell.CCAssemblyPlanQty( cell.CCAssemblyPlanQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
    } else {
      cell.DLAssemblyPlanQty( cell.DLAssemblyPlanQty() + quantity );
    }
  *]
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method SetCellInventoryValue (
  MachiningPipelineColumn column,
  String unit,
  Boolean iscc,
  Real quantity
)
{
@@ -11,9 +11,9 @@
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    
    if( unit = MachiningPipelineReport::GetDefaultCCUnit() ){
    if( iscc ){
      cell.CCInventoryQty( cell.CCInventoryQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLUnit() ){
    } else {
      cell.DLInventoryQty( cell.DLInventoryQty() + quantity );
    }
  *]
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method SetCellProductionValue (
  MachiningPipelineColumn column,
  String unit,
  Boolean iscc,
  Real quantity
)
{
@@ -11,9 +11,9 @@
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    
    if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() ){
    if( iscc ){
      cell.CCProductionQty( cell.CCProductionQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
    } else {
      cell.DLProductionQty( cell.DLProductionQty() + quantity );
    }
  *]
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -20,30 +20,61 @@
    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() );
    
    //生成装配、生产和库存数据
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
      unit := pisp.StockingPoint_MP().UnitID();
      //初始化行
      row := table.GetRow( pisp.ProductID() );
      traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()
                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
        periodtime := pispip.Period_MP().StartDate();
        periodname := periodtime.Format( "M2/D2/Y" );
        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
        //装配线
        if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
          row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        //机加线
        if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        if( unit = ccunit or unit = dlunit ){
          row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() );
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc                    := 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() );
      //是否属于长春机加产线
      isccproduction          := 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() );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
          row := table.GetRow( pisp.ProductID() );
          weekstart             := owner.StartOfPlanning().Date();
          pispips               := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
          traverse( pispips, Elements, pispip ){
            //天
            daycolumn           := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
            //周
            weekcolumn          := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
            supplyquantity      := [Real]ceil( pispip.NewSupplyQuantity() );//向上取整
            inventoryquantity   := [Real]ceil( pispip.PlannedInventoryLevelEnd() );//向上取整
            //装配线
            if( isccassemnly or isdlassemnly ){
              row.SetCellAssemblyValue( daycolumn, isccassemnly, supplyquantity );
              row.SetCellAssemblyValue( weekcolumn, isccassemnly, supplyquantity );
            }
            //机加线
            if( isccproduction or isdlproduction ){
              row.SetCellProductionValue( daycolumn, isccproduction, supplyquantity );
              row.SetCellProductionValue( weekcolumn, isccproduction, supplyquantity );
            }
            //库存
            if( iscc or isdl ){
              row.SetCellInventoryValue( daycolumn, iscc, inventoryquantity );
              if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
                weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
                row.SetCellInventoryValue( weekcolumn, iscc, inventoryquantity );
              }
            }
          }
        }
      }
    }
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -66,7 +66,7 @@
    Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
    
    // è®¾ç½®åŒ…装&拆包-数量
    traverse ( macroPlan, PackagingPlanRow, ppr, ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) {
    traverse ( macroPlan, PackagingPlanRow, ppr, ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) or ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Components (Spain)" ) ) {
      traverse ( ppr, PackagingPlanCell, ppc/*, ppc.StartDate() = Date::Construct( 2020, 4, 1 )*/ ) {
        // è®¾ç½®åŒ…装数量
        if ( ppc.PackagingInventory() < ppc.Out() ) { // åŒ…装库存是否小于调出
@@ -94,6 +94,16 @@
            prePPC := prePPC.Previous();
          }
        }
        // è®¾ç½®æ‹†åŒ…数量
        if ( ppc.TransferIn() > 0.0 ) { // æœ‰è°ƒå…¥æ•°é‡
          // èŽ·å–åŒ…è£…lotsize
          ppls                 := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() =  ppc.PackagingPlanRow().Factory()    and
                                                                                     tempPPLS.ProductID() = ppc.PackagingPlanRow().ProductID() );
          // è®¾ç½®æ‹†åŒ…值
          ppc.Unpacking( ppc.TransferIn() );
        }
      }
    }
  *]
_Main/BL/Type_TransferPlanRow/Attribute_Category.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Category
{
  #keys: '3[413988.0.1467614281][413988.0.1467614280][413988.0.1467614282]'
  Description: '大类'
  ValueType: String
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -60,14 +60,18 @@
        Taborder: 4
      ]
    }
    Component ButtonEnginePipelineReport
    Component ButtonPipelineReport
    {
      #keys: '[415136.0.884991586]'
      BaseType: 'WebButton'
      Children:
      [
        #child: ContextMenuPipelineReport
      ]
      Properties:
      [
        Image: 'DOCUMENT_CONNECTION'
        Label: 'Engine pipeline report'
        Label: 'Pipeline report'
        Taborder: 5
      ]
    }
@@ -82,6 +86,17 @@
        Taborder: 6
      ]
    }
    Component bMachineLogisticsCostReport
    {
      #keys: '[413988.0.1467117990]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'LOCATION_PIN'
        Label: 'Machine logistics cost report'
        Taborder: 7
      ]
    }
    Component ButtonScenarioComparisonDemandComparison id:ButtonScenarioComparisonDemandComparison_256
    {
      #keys: '[412672.1.90201789]'
@@ -90,7 +105,7 @@
      [
        Image: 'EQUALS'
        Label: '需求对比'
        Taborder: 7
        Taborder: 8
      ]
    }
    Component ButtonScheduleSummaryReport
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
Component ContextMenuPipelineReport
{
  #keys: '[415136.0.973375806]'
  BaseType: 'WebContextMenu'
  Children:
  [
    Component MenuEnginePipelineReport
    {
      #keys: '[415136.0.973375807]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DOCUMENT_CONNECTION'
        Taborder: 0
        Title: 'Engine pipeline report'
      ]
    }
    Component MenuMachiningPipelineReport
    {
      #keys: '[415136.0.972180572]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DOCUMENT_CONNECTION'
        Taborder: 1
        Title: 'Machining pipeline report'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonEnginePipelineReport_OnClic.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_bMachineLogisticsCostReport_OnCli.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ActionBarGroupReport/bMachineLogisticsCostReport
Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_bMachineLogisticsCostReport_OnClick
{
  #keys: '[413988.0.1467020680]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "MachineLogisticsCostReport", true);
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuPipelineReport_MenuEnginePipelineReport_OnC.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ContextMenuPipelineReport/MenuEnginePipelineReport
Response OnClick () id:Response_MacroPlanner_ContextMenuPipelineReport_MenuEnginePipelineReport_OnClick
{
  #keys: '[415136.0.972180722]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "Engine_pipleline_report", true);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuPipelineReport_MenuMachiningPipelineReport_.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ContextMenuPipelineReport/MenuMachiningPipelineReport
Response OnClick () id:Response_MacroPlanner_ContextMenuPipelineReport_MenuMachiningPipelineReport_OnClick
{
  #keys: '[415136.0.972180898]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "Machining_pipeline_report_view", true);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def
@@ -12,6 +12,16 @@
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 1
      ]
    }
    Component ButtonSearch id:ButtonSearch_88
    {
      #keys: '[415136.0.972181163]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'VIEW'
        Taborder: 0
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_ButtonSearch_OnClick#648.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelExport_570/ButtonSearch_88
Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick_648
{
  #keys: '[415136.0.972181162]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
@@ -15,7 +15,7 @@
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
@@ -15,7 +15,7 @@
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -12,7 +12,7 @@
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_MatrixEditor912.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditor912
{
  #keys: '[413988.0.1465931073]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell727
    {
      #keys: '[413988.0.1465931074]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor189
        {
          #keys: '[413988.0.1465931075]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MachineLogisticsCostReportRow.MachineLogisticsCostReportCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'PackingCharges;UnpackingCost;BufferPaperCost;QuantityOfWoodenCrates;WoodenCrateCost;TransferCost;StorageFeesForRentedWarehouses;OutboundExpensesForRentedWarehouses;ExternalRentalWarehouseTransportationCosts;RentalWarehouseStorageFees;EstimatedTotalCost;Coefficient;TotalCost'
        Column: 'MachineLogisticsCostReportColumn'
        Row: 'MachineLogisticsCostReportRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows154
    {
      #keys: '[413988.0.1465931078]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor972
        {
          #keys: '[413988.0.1465931079]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MachineLogisticsCostReportRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Category'
        SortCriteria: 'Category'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns700
    {
      #keys: '[413988.0.1465931082]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor687
        {
          #keys: '[413988.0.1465931083]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MachineLogisticsCostReportColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage703
    #child: matrixeditorContextMenu253
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns700'
    ContextMenu: 'matrixeditorContextMenu253'
    Rows: 'MatrixEditorRows154'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_matrixEditorActionBarPage703.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage703
{
  #keys: '[413988.0.1465931086]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_matrixeditorContextMenu253.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu253
{
  #keys: '[413988.0.1465931089]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.0.1467187130]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor912
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1467187119]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslFactory
    {
      #keys: '[413988.0.1467011004]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Sorting: 'none'
        Strings: '大连工厂;长春工厂'
        Taborder: 0
      ]
    }
    Component bRefresh
    {
      #keys: '[413988.0.1467011018]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 1
      ]
    }
    Component Button655
    {
      #keys: '[413988.0.1467011030]'
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Response_pHeader_bRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: pHeader/bRefresh
Response OnClick () id:Response_pHeader_bRefresh_OnClick
{
  #keys: '[413988.0.1467314360]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      MachineLogisticsCostReportCell::CreateData( MacroPlan, ddslFactory.Text() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/_ROOT_Component_FormMachineLogisticsCostReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMachineLogisticsCostReport
{
  #keys: '[413988.0.1467187084]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pHeader
    #child: pContent
  ]
  Properties:
  [
    Title: 'MachineLogisticsCostReport'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
@@ -12,6 +12,16 @@
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 1
      ]
    }
    Component ButtonSearch
    {
      #keys: '[415136.0.972181477]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'VIEW'
        Taborder: 0
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSearch_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonSearch
Response OnClick () id:Response_PanelExport_570_ButtonSearch_OnClick
{
  #keys: '[415136.0.972181476]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -15,7 +15,7 @@
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -15,7 +15,7 @@
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -12,7 +12,7 @@
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw
@@ -90,156 +90,6 @@
          }
        }
      }
      form_FormMachiningPipelineReport
      {
        title: 'QMacroPlanner::FormMachiningPipelineReport'
        shown: true
        componentID: 'QMacroPlanner::FormMachiningPipelineReport'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 19
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMachiningPipelineReport_PanelHeader
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelSearch
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelPeriod
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTimeUnit
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelExport
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTable
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormMachiningPipelineReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_CCAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCAssemblyPlanQty'
                    }
                    attribute_CCProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCProductionQty'
                    }
                    attribute_CCTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCTransferQty'
                    }
                    attribute_CCInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCInventoryQty'
                    }
                    attribute_DLAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 4
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLAssemblyPlanQty'
                    }
                    attribute_DLProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 5
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLProductionQty'
                    }
                    attribute_DLTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 6
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLTransferQty'
                    }
                    attribute_DLInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 7
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLInventoryQty'
                    }
                    attribute_TotalInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 8
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalInventoryQty'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'RowNr'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
_Main/UI/MacroPlannerWebApp/Views/MachineLogisticsCostReport.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormMachineLogisticsCostReport
      {
        title: 'QMacroPlanner::FormMachineLogisticsCostReport'
        shown: true
        componentID: 'QMacroPlanner::FormMachineLogisticsCostReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMachineLogisticsCostReport_pHeader
          {
            sizeRatio: 1
          }
          FormMachineLogisticsCostReport_pContent
          {
            sizeRatio: 1
          }
        }
      }
      form_FormGeneralSettings
      {
        title: 'General Settings'
        shown: true
        componentID: 'FormGeneralSettings'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormGeneralSettings_PanelContent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelGeneralParameter
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelLeadTimeDependent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelShelfLife
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelSustainability
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelForecastNetting
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelActions
          {
            sizeRatio: 1
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'BEAR'
    description: ''
  }
  formatversion: 2
  id: 'MachineLogisticsCostReport'
  name: 'MachineLogisticsCostReport'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/Machining_pipeline_report_view.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,281 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormMachiningPipelineReport
      {
        title: 'QMacroPlanner::FormMachiningPipelineReport'
        shown: true
        componentID: 'QMacroPlanner::FormMachiningPipelineReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMachiningPipelineReport_PanelHeader
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelSearch
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelPeriod
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTimeUnit
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelExport
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTable
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormMachiningPipelineReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_CCAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCAssemblyPlanQty'
                    }
                    attribute_CCProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCProductionQty'
                    }
                    attribute_CCTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCTransferQty'
                    }
                    attribute_CCInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCInventoryQty'
                    }
                    attribute_DLAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 4
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLAssemblyPlanQty'
                    }
                    attribute_DLProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 5
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLProductionQty'
                    }
                    attribute_DLTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 6
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLTransferQty'
                    }
                    attribute_DLInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 7
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLInventoryQty'
                    }
                    attribute_TotalInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 8
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalInventoryQty'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'RowNr'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 25
    image: 'DOCUMENT_CONNECTION'
    description: ''
  }
  formatversion: 2
  id: 'Machining_pipeline_report_view'
  name: 'Machining pipeline report view'
  isglobal: false
  isroot: true
}
_var/_Main/ProjSettings/EditorTC/Views/°à´Îʱ¼ä·ÖÎö_[413988.0.1367211460].vw
@@ -17,7 +17,7 @@
  CREATIONUSER 'quintiq/lihongji'
  UPDATEDATETIME '2024-07-16T11:47:37'
  UPDATEUSER 'quintiq/lihongji'
  LASTACCESSDATE '2024-08-04'
  LASTACCESSDATE '2024-08-07'
  VIEWSCOPE 0
}
AUTHORIZATIONS