lazhen
2024-08-07 59e208f515c361caffcdfe35543f1b917d449d44
管线报表数据bug
已修改22个文件
已添加8个文件
已删除1个文件
829 ■■■■■ 文件已修改
_Main/BL/Type_EnginePipelineReport/Method_GenerateColumn.qbl 17 ●●●● 补丁 | 查看 | 原始文档 | 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 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GenerateColumn.qbl 17 ●●●● 补丁 | 查看 | 原始文档 | 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 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 19 ●●●●● 补丁 | 查看 | 原始文档 | 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_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_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/Machining_pipeline_report_view.vw 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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 ) ){
    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 := period.TimeUnit() );
        this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
      }
      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( column, pispip.PlannedInventoryLevelEnd() );
          //库存需要取最后一天
          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 );
          }
        }
      }
    }
    
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
    traverse( owner, SalesDemand.astype( Forecast ), forecast ){
      row := table.GetRow( forecast.ProductID() );
      weekdate   := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
      periodtime := forecast.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      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 );
      
      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( 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_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 ) ){
    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 := period.TimeUnit() );
        this.Column( relnew, Name := periodname, Period := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
      }
      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();
      //初始化行
    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() );
      
      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() );
          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( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
          row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() );
            if( isccassemnly or isdlassemnly ){
              row.SetCellAssemblyValue( daycolumn, isccassemnly, supplyquantity );
              row.SetCellAssemblyValue( weekcolumn, isccassemnly, supplyquantity );
        }
        //机加线
        if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
            if( isccproduction or isdlproduction ){
              row.SetCellProductionValue( daycolumn, isccproduction, supplyquantity );
              row.SetCellProductionValue( weekcolumn, isccproduction, supplyquantity );
        }
        if( unit = ccunit or unit = dlunit ){
          row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() );
            //库存
            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/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
      ]
    }
@@ -80,17 +84,6 @@
        Image: 'DOCUMENT_INFO'
        Label: '产量对比报表'
        Taborder: 6
      ]
    }
    Component ButtonScenarioComparisonDemandComparison id:ButtonScenarioComparisonDemandComparison_256
    {
      #keys: '[412672.1.90201789]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EQUALS'
        Label: '需求对比'
        Taborder: 7
      ]
    }
  ]
_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_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_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/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
}