lazhen
2024-08-14 94ab2bd0381925ecf01a2f1a812b114d0f82d5bb
报表页面中文
已重命名1个文件
已添加7个文件
已修改19个文件
497 ■■■■■ 文件已修改
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/InventorySummaryCell.qrp 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultProductParent () as String
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-14-2024 (created)
    return '产成品';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    owner.CCEngineLogisticsCostReport( relflush );
    produtparent              := CCEngineLogisticsCostReport::GetDefaultProductParent();
    name                      := CCEngineLogisticsCostReport::GetDefaultName();
    allunit                   := CCEngineLogisticsCostReport::GetDefaultAllUnit();
    ccunit                    := CCEngineLogisticsCostReport::GetDefaultCCUnit();
@@ -31,16 +32,15 @@
        traverse( report, FinancialProductionRow, row, row.Unit() = ccunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//财务产量报表里的长春产量, ä¸ä¸º0
          ccrow               := table.GetRow( row.Name() );
          product             := row.Product_MP();
          products.Add( product );
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
                                                 and engine.Factory() = ccunit
                                                 and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
            if( not isnull( enginecost ) ){
              product             := row.Product_MP();
              products.Add( product );
              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
                //入库量/包装容量*入库单价,入库量等于长春产量
                quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
@@ -60,7 +60,7 @@
          ccrow               := table.GetRow( row.Name() );
          product             := row.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
@@ -98,7 +98,7 @@
            row              := table.GetRow( pit.ProductID() );
            product          := pit.Product_MP();
            productparents   := product.GetAllParent();
            if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){////查询产品类型是发动机
            if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////查询产品类型是发动机
              //在发动机成本参数表找到对应的包装容量
              enginecost       := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
@@ -130,7 +130,7 @@
          product            := pisp.Product_MP();
          productparents     := product.GetAllParent();
          row                := table.GetRow( pisp.ProductID() );
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){////查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////查询产品类型是发动机
            //查询对应的发动机成本
            enginecost         := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultProductParent () as String
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-14-2024 (created)
    return '产成品';
  *]
}
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
  [*
    // ç”„兰鸽 Aug-12-2024 (created)
    owner.DLEngineLogisticsCostReport( relflush );
    produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
    name                      := DLEngineLogisticsCostReport::GetDefaultName();
    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
    ccunit                    := DLEngineLogisticsCostReport::GetDefaultCCUnit();
@@ -45,7 +46,7 @@
          periodname         := periodtime.Format( "M2/D2/Y" );
          
          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            quantity         := [Number]pit.Quantity();
            row              := table.GetRow( pit.ProductID() );
            product          := pit.Product_MP();
@@ -98,7 +99,7 @@
          product             := row.Product_MP();
          products.Add( product );
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            //查询对应的发动机成本
            enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                 and engine.MLB_MQB() = product.MQBMLB()
@@ -122,7 +123,7 @@
          ccrow               := table.GetRow( row.Name() );
          product             := row.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            products.Add( product );
            //查询对应的发动机成本
            enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
@@ -144,7 +145,7 @@
    traverse( owner, TransferPlanRow, tprow, tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
      product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
      productparents          := product.GetAllParent();
      if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
      if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
        //查询对应的发动机成本
         enginecost           := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                               and engine.MLB_MQB() = product.MQBMLB()
@@ -178,7 +179,7 @@
      if( iscc ){
        product               := forecast.Product_MP();
        productparents        := product.GetAllParent();
        if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
        if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
          row                 := table.GetRow( forecast.ProductID() );
          products.Add( forecast.Product_MP() );
          
@@ -215,7 +216,7 @@
          //获取行
          product             := pisp.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//查询产品类型是发动机
            row               := table.GetRow( pisp.ProductID() );
            products.Add( pisp.Product_MP() );
            traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -59,7 +59,6 @@
      for( rownr := rownr; rownr < modelsnr; rownr ++ ){
    
        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false ); 
        rownr             := rownr + 1;
      }
      showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '库存', rownr, false );
    
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultProductParent () as String
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-14-2024 (created)
    return '产成品';
  *]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -10,10 +10,11 @@
    owner.EnginePipelineSource( relflush );
    //ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
    //dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
    ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
    dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
    ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
    dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
    productparent             := EnginePipelineReport::GetDefaultProductParent();
    ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
    dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
    ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
    dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
    source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
@@ -35,62 +36,58 @@
      //是否属于大连工厂
      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
      
      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
        product               := pisp.Product_MP();
        productparents        := product.GetAllParent();
        if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
          weekstart           := owner.StartOfPlanning().Date();
          pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem()
                and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
                and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
        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    := [Number]pispip.NewSupplyQuantity();//四舍五入
            inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
            //产量是加总
            if( iscc or isdl ){
              row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
              row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity );
            }
            //库存需要取最后一天
            row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
            if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
              weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
              row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
            }
        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    := [Number]pispip.NewSupplyQuantity();//四舍五入
          inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
          //产量是加总
          if( iscc or isdl ){
            row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
            row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity );
          }
          //库存需要取最后一天
          row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
          if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
            weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
            row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
          }
        }
      }
    }
    
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast ){
      product               := forecast.Product_MP();
      productparents        := product.GetAllParent();
      if( exists( productparents, Elements, e, e.ID() = '发动机' ) ){//查询产品类型是发动机
        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 );
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < endperiod.StartDate() and forecast.Quantity() <> 0
              and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
              and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
      row                 := table.GetRow( forecast.ProductID() );
      weekstart           := owner.StartOfPlanning().Date();
      traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
        //天
        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() );
          }
          if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){
            weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
          }
        if( not isnull( daycolumn ) ){
          row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
        }
        if( not isnull( weekcolumn ) ){
          row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
        }
        if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){
          weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
        }
      }
    }
    
_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -43,17 +43,15 @@
      //是否属于大连工厂
      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf()
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
          //获取工厂行
          factoryrow := table.GetRowByUnit( pisp.Product_MP(), ifexpr( iscc, ccunit, dlunit ) );
          //获取合计行
          allrow     := table.GetRowByUnit( pisp.Product_MP(), allunit );
          products.Add( pisp.Product_MP() );
          //当product planning的日期区间在需要的日期区间内 
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
    //                and ( ( pispip.Period_MP().StartDate().StartOfMonth() = startofplanning.StartOfMonth() and currentperiods.Find( pispip.Period_MP() ) >= 0 )
    //                 or ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() and pispip.Period_MP().StartDate() < startofnextyear ) )
                    ){
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ){
            periodtime := pispip.Start().StartOfMonth().Date();
            periodname := periodtime.Format( "M2/D2/Y" );
            quantity   := [Number]pispip.NewSupplyQuantity();//四舍五入
_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -32,7 +32,8 @@
    table.GenerateColumn( owner );
    
    //首先在forecast界面查找sales segment为长春的所有需求,识别出MLB的所有产品,每个产品按月汇总需求数量
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear ){
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear and forecast.Quantity() <> 0
              and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
      salessegment            := forecast.SalesSegment_MP();
      parentsalessegments     := salessegment.GetAllParent();
      //是否属于长春
@@ -50,10 +51,8 @@
        //获取工厂行
        factoryrow           := table.GetRow( ifexpr( iscc and forecast.Product_MP().MQBMLB() = 'MLB', ccunit, dlunit ), product );
      
        if( products.Find( product ) < 0 ){
          products.Add( product );
        }
        traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
        products.Add( product );
        traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
          periodtime         := psdip.StartDate().StartOfMonth();
          periodname         := periodtime.Format( "M2/D2/Y" );
    //      info( '-------------------------', periodname, periodtime );
@@ -73,10 +72,13 @@
      //是否属于长春装配线
    //  iscc                  := unit.ID() = ccspline or exists( parentunits, Elements, punit, punit.ID() = ccspline );
      if( table.IsInUnit( stockingpoint, ccspline ) ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB' ){//产品为MQB
          allrow            := table.GetRow( allunit, pisp.Product_MP() );
          ccrow             := table.GetRow( ccunit, pisp.Product_MP() );
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB'
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ) ){//产品为MQB
          product           := pisp.Product_MP();
          allrow            := table.GetRow( allunit, product );
          ccrow             := table.GetRow( ccunit, product );
          products.Add( product );
          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ){
            periodtime      := pispip.Start().StartOfMonth().Date();
            periodname      := periodtime.Format( "M2/D2/Y" );
            column          := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
@@ -98,19 +100,21 @@
      destisp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
      isccrent              := table.IsInUnit( destisp, ccrent );
      if( isdlspline and isccrent ){
        traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){
        traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead and exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 ) ){
    //      periodtime        := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
          periodtime        := trip.Departure().StartOfMonth().Date();
          periodname        := periodtime.Format( "M2/D2/Y" );
          
          column            := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
          if( not isnull( column ) ){
            traverse( trip, ProductInTrip, pit ){
              quantity        := [Number]pit.Quantity();//四舍五入
              dlrow           := table.GetRow( dlunit, pit.Product_MP() );
            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
              product       := pit.Product_MP();
              products.Add( product );
              quantity      := [Number]pit.Quantity();//四舍五入
              dlrow         := table.GetRow( dlunit, pit.Product_MP() );
              dlrow.Initialize( column, quantity );//汇总数量
              
              allrow          := table.GetRow( allunit, pit.Product_MP() );
              allrow        := table.GetRow( allunit, pit.Product_MP() );
              allrow.Initialize( column, quantity );
            }
          }
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultProductParent () as String
{
  TextBody:
  [*
    // ç”„兰鸽 Aug-14-2024 (created)
    return '机加件';
  *]
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.FinancialProductionSource( relflush );
    productparent             := MachiningPipelineReport::GetDefaultProductParent();
    ccunit                    := MachiningPipelineReport::GetDefaultCCUnit();
    dlunit                    := MachiningPipelineReport::GetDefaultDLUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
@@ -39,39 +40,45 @@
      //是否属于大连机加产线
      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 );
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem()
                  and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
          product             := pisp.Product_MP();
          productparents      := product.GetAllParent();
          if( exists( productparents, Elements, e, e.ID() = productparent ) ){//查询产品类型是发动机
            row               := table.GetRow( pisp.ProductID() );
            products.Add( pisp.Product_MP() );
            weekstart         := owner.StartOfPlanning().Date();
            pispips           := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
                                                    and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ), pispip.Start() );
            
            supplyquantity      := [Number]pispip.NewSupplyQuantity();//四舍五入
            inventoryquantity   := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
            //装配线
            if( isccassemnly or isdlassemnly ){
              row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
              row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
            }
            //机加线
            if( isccproduction or isdlproduction ){
              row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
              row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
            }
            //库存
            if( iscc or isdl ){
              row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
              if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
                weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
                row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
            traverse( pispips, Elements, pispip ){
              //天
              daycolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
              //周
              weekcolumn       := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
              supplyquantity   := [Number]pispip.NewSupplyQuantity();//四舍五入
              inventoryquantity:= [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
              //装配线
              if( isccassemnly or isdlassemnly ){
                row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
                row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
              }
              //机加线
              if( isccproduction or isdlproduction ){
                row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
                row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
              }
              //库存
              if( iscc or isdl ){
                row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
                if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
                  weekstart      := ( weekstart + Duration::Days( 7 ) ).Date();
                  row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
                }
              }
            }
          }
_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation CCEngineLogisticsCostCell
{
  AttributeRepresentation Coefficient
  {
    AttributeKey: '[415136.0.986844757]'
    Synonym: '系数'
  }
  AttributeRepresentation EstimatedTotalCost
  {
    AttributeKey: '[415136.0.986844738]'
    Synonym: '预计总费用'
  }
  AttributeRepresentation FactoryToRentTransCost
  {
    AttributeKey: '[415136.0.986844780]'
    Synonym: '厂内到外租库运输费用'
  }
  AttributeRepresentation RentEnterCost
  {
    AttributeKey: '[415136.0.986881422]'
    Synonym: '外租库入库费用'
  }
  AttributeRepresentation RentOutCost
  {
    AttributeKey: '[415136.0.986881432]'
    Synonym: '外租库出库费用'
  }
  AttributeRepresentation RentStorageCost
  {
    AttributeKey: '[415136.0.986881445]'
    Synonym: '外租库仓储费用'
  }
  AttributeRepresentation TotalCost
  {
    AttributeKey: '[415136.0.986844770]'
    Synonym: '总费用'
  }
  RelationRepresentation Column { RelationKey: '[415136.0.986881392]' Visibility: 'Normal' }
}
_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation DLEngineLogisticsCostCell
{
  AttributeRepresentation CCLongTransCoat
  {
    AttributeKey: '[415136.0.992900331]'
    Synonym: '长春长途运输费用'
  }
  AttributeRepresentation CCRentEnterCost
  {
    AttributeKey: '[415136.0.992900044]'
    Synonym: '长春外租库入库费用'
  }
  AttributeRepresentation CCRentOutCost
  {
    AttributeKey: '[415136.0.992900047]'
    Synonym: '长春外租库出库费用'
  }
  AttributeRepresentation CCRentStorageCost
  {
    AttributeKey: '[415136.0.992900050]'
    Synonym: '长春外租库仓储费用'
  }
  AttributeRepresentation CCShortTransCost
  {
    AttributeKey: '[415136.0.992900341]'
    Synonym: '长春短途运输费用'
  }
  AttributeRepresentation Coefficient
  {
    AttributeKey: '[415136.0.992900035]'
    Synonym: '系数'
  }
  AttributeRepresentation DLRentEnterCost
  {
    AttributeKey: '[415136.0.992900241]'
    Synonym: '大连外租库入库费用'
  }
  AttributeRepresentation DLRentOutCost
  {
    AttributeKey: '[415136.0.992900248]'
    Synonym: '大连外租库出库费用'
  }
  AttributeRepresentation DLRentStorageCost
  {
    AttributeKey: '[415136.0.992900261]'
    Synonym: '大连外租库仓储费用'
  }
  AttributeRepresentation EstimatedTotalCost
  {
    AttributeKey: '[415136.0.992900038]'
    Synonym: '预计总费用'
  }
  AttributeRepresentation FactoryToDLRentTransCost
  {
    AttributeKey: '[415136.0.992900041]'
    Synonym: '厂内到大连外租库运输费用'
  }
  AttributeRepresentation TotalCost
  {
    AttributeKey: '[415136.0.992900053]'
    Synonym: '总费用'
  }
  RelationRepresentation Column { RelationKey: '[415136.0.992900194]' Visibility: 'Normal' }
}
_Main/Sys/Repr/Global/InventorySummaryCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation InventorySummaryCell
{
  AttributeRepresentation AverageInventory
  {
    AttributeKey: '[415136.0.865305023]'
    Synonym: '平均库存'
  }
  AttributeRepresentation EndingInventory
  {
    AttributeKey: '[415136.0.865304923]'
    Synonym: '期末库存'
  }
  AttributeRepresentation MaximumInventory
  {
    AttributeKey: '[415136.0.865304943]'
    Synonym: '最大库存'
  }
  AttributeRepresentation MinimumInventory
  {
    AttributeKey: '[415136.0.865304933]'
    Synonym: '最小库存'
  }
  RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.865304766]' Visibility: 'Normal' }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -11,8 +11,9 @@
      BaseType: 'WebButton'
      Properties:
      [
        Description: 'Financial production report'
        Image: 'DOCUMENT_REFRESH'
        Label: 'Financial production report'
        Label: '财务产量报表'
        Taborder: 0
      ]
    }
@@ -22,8 +23,9 @@
      BaseType: 'WebButton'
      Properties:
      [
        Description: 'Financial sales report'
        Image: 'MONEY_COINS2'
        Label: 'Financial sales report'
        Label: '财务销量报表'
        Taborder: 1
      ]
    }
@@ -33,8 +35,9 @@
      BaseType: 'WebButton'
      Properties:
      [
        Description: 'Inventory summary report'
        Image: 'DOCUMENT_CHECK_EDIT'
        Label: 'Inventory summary report'
        Label: '库存汇总报表'
        Taborder: 2
      ]
    }
@@ -44,8 +47,9 @@
      BaseType: 'WebButton'
      Properties:
      [
        Description: 'Financial weekly report'
        Image: 'DOCUMENT_DIRTY'
        Label: 'Financial weekly report'
        Label: '长春周报报表'
        Taborder: 3
      ]
    }
@@ -70,8 +74,9 @@
      ]
      Properties:
      [
        Description: 'Pipeline report'
        Image: 'DOCUMENT_CONNECTION'
        Label: 'Pipeline report'
        Label: '管线报表'
        Taborder: 5
      ]
    }
@@ -152,7 +157,7 @@
      Properties:
      [
        Image: 'MONEY2'
        Label: 'engine logistics cost report '
        Label: '发动机物流成本报表'
        Taborder: 11
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -11,9 +11,10 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'CC engine logistics cost report'
        Image: 'MONEY2'
        Taborder: 0
        Title: 'CC engine logistics cost report'
        Title: '长春发动机物流成本报表'
      ]
    }
    Component MenuDLEngineLogisticsCostReport
@@ -22,9 +23,10 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'DL engine logistics cost report'
        Image: 'MONEY2'
        Taborder: 1
        Title: 'DL engine logistics cost report'
        Title: '大连发动机物流成本报表'
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
@@ -11,9 +11,10 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'Engine pipeline report'
        Image: 'DOCUMENT_CONNECTION'
        Taborder: 0
        Title: 'Engine pipeline report'
        Title: '发动机管线报表'
      ]
    }
    Component MenuMachiningPipelineReport
@@ -22,9 +23,10 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'Machining pipeline report'
        Image: 'DOCUMENT_CONNECTION'
        Taborder: 1
        Title: 'Machining pipeline report'
        Title: '机加件管线报表'
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'CC engine logistics cost report'
    Image: 'MONEY2'
    Title: 'CC engine logistics cost report'
    Title: '长春发动机物流成本报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
@@ -1,9 +1,9 @@
Quintiq file version 2.0
#parent: MatrixEditorTable
Response OnUpdateValue (
  CCEngineLogisticsCostRow row,
  CCEngineLogisticsCostColumn column,
  CCEngineLogisticsCostCell cell,
  DLEngineLogisticsCostRow row,
  DLEngineLogisticsCostColumn column,
  DLEngineLogisticsCostCell cell,
  Number value,
  Number oldvalue
) id:Response_MatrixEditorTable_OnUpdateValue
@@ -15,17 +15,18 @@
  {
    Body:
    [*
      table            := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
      cell.Coefficient( value );
      traverse( table, Row, trow, trow.Name() = row.Name() ){
        traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
          tcel.RentEnterCost( cell.RentEnterCost() );
          tcel.RentOutCost( cell.RentOutCost() );
          tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
          tcel.RentStorageCost( cell.RentStorageCost() );
          tcel.Coefficient( cell.Coefficient() );
        }
      }
      table            := selectobject( MacroPlan, DLEngineLogisticsCostReport, report, not report.IsShow() );
      info( focusedattribute );
      //cell.Coefficient( value );
      //traverse( table, Row, trow, trow.Name() = row.Name() ){
      //  traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
      //    tcel.RentEnterCost( cell.RentEnterCost() );
      //    tcel.RentOutCost( cell.RentOutCost() );
      //    tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
      //    tcel.RentStorageCost( cell.RentStorageCost() );
      //    tcel.Coefficient( cell.Coefficient() );
      //  }
      //}
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def ÐÞ¸Ä
@@ -1,10 +1,10 @@
Quintiq file version 2.0
#parent: #root
Response OnClose () id:Response_FormDLEngineLogisticsCostReport_OnClose
Response OnCreated () id:Response_FormDLEngineLogisticsCostReport_OnCreated
{
  #keys: '[415136.0.992750704]'
  #keys: '[415136.0.997148779]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebForm_OnClose'
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'DL engine logistics cost report'
    Image: 'MONEY2'
    Title: 'DL engine logistics cost report'
    Title: '大连发动机物流成本报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -42,7 +42,8 @@
  ]
  Properties:
  [
    Description: 'Engine pipeline report'
    Image: 'DOCUMENT_CONNECTION'
    Title: 'Engine pipeline report'
    Title: '发动机管线报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'Financial production report'
    Image: 'DOCUMENT_REFRESH'
    Title: 'Financial production report'
    Title: '财务产量报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'Financial sales report'
    Image: 'MONEY_COINS2'
    Title: 'Financial sales report'
    Title: '财务销量报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
@@ -12,7 +12,8 @@
  ]
  Properties:
  [
    Description: 'Financial weekly report'
    Image: 'DOCUMENT_DIRTY'
    Title: 'Financial weekly report'
    Title: '长春周报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'Inventory summary report'
    Image: 'DOCUMENT_CHECK_EDIT'
    Title: 'Inventory summary report'
    Title: '库存汇总报表'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
@@ -32,7 +32,8 @@
  ]
  Properties:
  [
    Description: 'Machining pipeline report'
    Image: 'DOCUMENT_CONNECTION'
    Title: 'Machining pipeline report'
    Title: '机加件管线报表'
  ]
}