xiaoding721
2024-11-01 b891692b0006fbe8805a97580a1fa70c6736a72e
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已重命名1个文件
已修改22个文件
已添加8个文件
已删除1个文件
744 ■■■■ 文件已修改
_Main/BL/Relations/Relation_AOnlineAndMOfflinePlanMS64_MS64Data_AOnlineAndMOfflinePlanMS64Data_.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/StaticMethod_CreateData.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DL_EngineRackCell/StaticMethod_CreateData.qbl 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/Method_Generate0.qbl 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventorySummarySource/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCToDLArrivalQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCToDLDepartureQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLToCCArrivalQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLToCCDepartureQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Attribute_CCInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Attribute_DLInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetDepartureAndArrivalValue.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_InitiateSearch.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_DeductionOfReplacementLoss.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValuesCC.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValuesDL.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/MachiningPipelineCell.qrp 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AOnlineAndMOfflinePlanMS64_MS64Data_AOnlineAndMOfflinePlanMS64Data_.qbl
@@ -9,7 +9,7 @@
  RelationSide.LeftSide MS64Data
  {
    #keys: '3[415136.0.1039640178][415136.0.1039640177][415136.0.1039640179]'
    Cardinality: '0to1'
    Cardinality: '1toN'
    ObjectDefinition: AOnlineAndMOfflinePlanMS64
    OwningSide: 'Owned'
  }
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_InitiateSearch.qbl
@@ -10,7 +10,7 @@
    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
    search                    := owner.CCEngineLogisticsCostSearch();
    if( isnull( search ) ){
      owner.CCEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
      search                  := owner.CCEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
    }else{
      search                  := owner.CCEngineLogisticsCostSearch();
      search.Generation( allunit );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitiateSearch.qbl
@@ -10,7 +10,7 @@
    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
    search                    := owner.DLEngineLogisticsCostSearch();
    if( isnull( search ) ){
      owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
      search                  := owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
    }else{
      search                  := owner.DLEngineLogisticsCostSearch();
      search.Generation( allunit );
_Main/BL/Type_CC_EngineRackCell/StaticMethod_CreateData.qbl
@@ -96,8 +96,8 @@
        transportationQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT, 
                                       tempPIT.Product_MP().Generation()                                                =  ccerr.Generation() and
                                       tempPIT.Product_MP().MQBMLB()                                                    =  ccerr.MLB_MQB()    and
                                       tempPIT.Trip().Departure().Date()                                                >= ccerc.StartDate()  and
                                       tempPIT.Trip().Arrival().Date()                                                  <= lastDayOfThisMonth and
                                       tempPIT.Trip().Departure().Date().Year()                                         = ccerc.StartDate().Year()  and
                                       tempPIT.Trip().Departure().Date().Month()                                        = ccerc.StartDate().Month() and
                                       tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID()      = "CC åŽ‚å†…åº“"         and
                                       tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = "长春外租库",
                                       tempPIT.Quantity()
_Main/BL/Type_DL_EngineRackCell/StaticMethod_CreateData.qbl
@@ -60,7 +60,9 @@
                           tempMRTCell.MaterialRackTotalRow().Generation() = dlerr.Generation()        and
                           tempMRTCell.MaterialRackTotalRow().MLB_MQB()    = dlerr.MLB_MQB()           and
                           tempMRTCell.MaterialRackColumn().Month()        = dlerc.StartDate().Month() );
        if ( dlerr.Generation() = "350bar" and dlerr.MLB_MQB() = "MQB" ) {
        cell.TotalQuantityOfMaterialRacks( mrtcell.Quantity() );
        }
       
        // å¤§è¿žå¤–租库空料架数量:【350bar MQB料架总数量 - æ‰€æœ‰350bar MQB总库存 / åŒ…装容量 - å®¢æˆ·åº“料架数量】* å¤§è¿žå¤–租库空料架比例
        plannedInventory := sum( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, tempPISPIP,
@@ -84,8 +86,8 @@
                                        tempF.StartDate().Year()        = dlerc.StartDate().Year()  and
                                        tempF.StartDate().Month()       = dlerc.StartDate().Month(),
                                        tempF.FulfilledQuantity() );
        info( "时间:", dlerc.StartDate().Format( "Y-M2-D2" ), "    å…¥åº“数量:", transportationQuantity1, "    åŒ…装容量:", guard( lce.PackagingCapacity(), 0 ),
              "    å…¥åº“单价:", guard( lcmrCC.WarehousingPrice(), 0 ) ); // æµ‹è¯•输出
    //    info( "时间:", dlerc.StartDate().Format( "Y-M2-D2" ), "    å…¥åº“数量:", transportationQuantity1, "    åŒ…装容量:", guard( lce.PackagingCapacity(), 0 ),
    //          "    å…¥åº“单价:", guard( lcmrCC.WarehousingPrice(), 0 ) ); // æµ‹è¯•输出
        cell.CCStorageFeesForRentedWarehouses( [Number] ( guard( transportationQuantity1 / lce.PackagingCapacity(), 0 ) * lcmrCC.WarehousingPrice() ) );
        
        // CC外租库出库费用:发动机销量 / åŒ…装容量(向上取整)* æ–™æž¶å‡ºåº“单价
@@ -98,12 +100,13 @@
        transportationQuantity2 := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT, 
                                        tempPIT.Product_MP().Generation()                                                =  dlerr.Generation()      and
                                        tempPIT.Product_MP().MQBMLB()                                                    =  dlerr.MLB_MQB()         and
                                        tempPIT.Trip().Departure().Date()                                                >= dlerc.StartDate()       and
                                        tempPIT.Trip().Arrival().Date()                                                  <= lastDayOfThisMonth      and
                                        tempPIT.Trip().Departure().Date().Year()                                         = dlerc.StartDate().Year()  and
                                        tempPIT.Trip().Departure().Date().Month()                                        = dlerc.StartDate().Month() and
                                        tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID()      = "大连厂内库"              and
                                        tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = "大连发动机的长春外租库",
                                        tempPIT.Quantity()
                                       );
    //    info( "数量:", transportationQuantity2 );
        cell.CCLineHaulCost( [Number] ( guard( transportationQuantity2 / lce.PackagingCapacity() / lct1.LoadingCapacity(), 0 ) * guard( lct1.TransportPrice(), 1 ) ) );
        
        // CC短途运输费用:调拨数量 / åŒ…装容量 / è£…载容量 * æ–™æž¶è¿è¾“单价
@@ -133,7 +136,14 @@
        cell.DLOutboundExpensesForRentedWarehouses( [Number] ( guard( outboundQuantity / lce.PackagingCapacity(), 0 ) * guard( lcmrDL.OutboundPrice(), 1 ) ) );
        
        // DL外租库运输费用:发动机运输量 / åŒ…装容量 / è£…载容量(向上取整)* æ–™æž¶è¿è¾“单价
        cell.DLExternalRentalWarehouseTransportationCosts( [Number] ( guard( inventoryQuantity / lce.PackagingCapacity() / lct2.LoadingCapacity(), 0 ) * guard( lct2.TransportPrice(), 1 ) ) );
        outboundQuantity1 := sum( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), tempPISPIPPL,
                                 tempPISPIPPL.ProductInStockingPoint_MP().Product_MP().Generation() = dlerr.Generation()  and
                                 tempPISPIPPL.ProductInStockingPoint_MP().Product_MP().MQBMLB()     = dlerr.MLB_MQB()     and
                                 tempPISPIPPL.ProductInStockingPoint_MP().StockingPointID()         = "大连外租库"        and
                                 tempPISPIPPL.Start().Date()                                        >= dlerc.StartDate()  and
                                 tempPISPIPPL.End().Date()                                          <= lastDayOfThisMonth,
                                 tempPISPIPPL.NewSupplyQuantity() );
        cell.DLExternalRentalWarehouseTransportationCosts( [Number] ( guard( outboundQuantity1 / lce.PackagingCapacity() / lct2.LoadingCapacity(), 0 ) * guard( lct2.TransportPrice(), 1 ) ) );
        
        // å¤§è¿žå¤–租库仓储费用:【350bar MQB料架总数量-所有350bar MQB总库存/包装容量-客户库料架数量】*大连外租库空料架比例
        // DL外租库仓储费用:料架总数量 - å‘动机库存 / åŒ…装容量(向上取整)* ç©ºæ–™æž¶ä»“储单价
_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -24,11 +24,12 @@
    sumstr                  := sumname.Format( 'S(Len(10))' );
    sumrowproduction        := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '总产量' ), sumname, '', rows.Size() * cellnr );
    sumrowdlproduction      := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '大连产量' ), sumname, '', sumrowproduction.RowNr() + 1 );
    sumrowccproduction      := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '长春产量' ), sumname, '', sumrowproduction.RowNr() + 2  );
    sumrowdemand            := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '总需求' ), sumname, '', sumrowproduction.RowNr() + 3 );
    rowno                   := sumrowproduction.RowNr() + 4;
    sumrowccproduction      := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '长春产量' ), sumname, '', sumrowdlproduction.RowNr() + 1  );
    sumrowdemand            := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '总需求' ), sumname, '', sumrowccproduction.RowNr() + 1 );
    sumdemandrows           := construct( EnginePipelineRows );
    rowno                   := sumrowdemand.RowNr() + 1;
    traverse( models, Elements, model ){
      EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( model.Concat( '需求' ) ), sumname, model, rowno );
      sumdemandrows.Add( EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( model.Concat( '需求' ) ), sumname, model, rowno ) );
      rowno                 := rowno + 1;
    }
    sumrowinventory         := EnginePipelineRow::CraeteCellValueForRow( this, sumstr.Concat( '库存' ), sumname, '', rowno );
@@ -38,118 +39,73 @@
    traverse( rows, Elements, row, productids.Find( row.Name() ) >= 0 ){
      rowname             := row.Name().Format( 'S(Len(10))' );
      showrowproduction   := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总产量' ), row.Name(), '', rownr );
      showrowdlproduction := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '大连产量' ), row.Name(), '', rownr + 1 );
      showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '长春产量' ), row.Name(), '', rownr + 2 );
      showrowdemand       := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总需求' ), row.Name(), '', rownr + 3 );
      rownr               := rownr + 4;
      modelsnr            := rownr + 3;
      models              := construct( Strings );
      showrowdlproduction   := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '大连产量' ), row.Name(), '', showrowproduction.RowNr() + 1 );
      showrowccproduction   := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '长春产量' ), row.Name(), '', showrowdlproduction.RowNr() + 1 );
      showrowdemand         := EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '总需求' ), row.Name(), '', showrowccproduction.RowNr() + 1 );
      rownr                 := showrowdemand.RowNr() + 1;
      modelsnr              := showrowdemand.RowNr() + 4;
      uniquemodels        := selectuniquevalues( row, Cell.Demand, demand, true, demand.Model() );
      demandrows            := construct( EnginePipelineRows );
      traverse( uniquemodels, Elements, e ){
    
        if( rownr < modelsnr ){
          EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( e.Concat( '需求' ) ), row.Name(), e, rownr );
          models.Add( e );
          demandrows.Add( EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( e.Concat( '需求' ) ), row.Name(), e, rownr ) );
          rownr             := rownr + 1;
        }
      }
    
      for( rownr := rownr; rownr < modelsnr; rownr ++ ){
    
        EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '' ), row.Name(), '', rownr );
        demandrows.Add( EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '' ), row.Name(), '', rownr ) );
      }
      showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, rowname.Concat( '库存' ), row.Name(), '', rownr );
    
      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
        column            := selectobject( this, Column, column, column.StartDate() = cell.Column().StartDate() and column.TimeUnit() = search.TimeUnit() );
        if( not isnull( column ) ){
      traverse( this, Column, column ){
        daycells            := selectset( row, Cell, cell, cell.Column().TimeUnit() = Translations::MP_GlobalParameters_Day() and
                                            cell.Column().StartDate() >= column.StartDate() and
                                            cell.Column().StartDate() <= column.EndDate() );
          
          //生产
          production              := column.CellValue( relnew, Value := [String]cell.ProductionQuantity() );
          showrowproduction.CellValue( relinsert, production );
        productionqty       := [Number]sum( daycells, Elements, cell, cell.ProductionQuantity() );
        production          := selectobject( column, CellValue, c, c.Row() = showrowproduction );
        production.Value( [String]productionqty );
          sumproduction           := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
          if( isnull( sumproduction ) ){
            sumproduction         := column.CellValue( relnew, Value := [String]0 );
            sumrowproduction.CellValue( relinsert, sumproduction );
          }
          sumproduction.Value( [String]( [Real]sumproduction.Value() + cell.ProductionQuantity() ) );
        sumproduction.Value( [String]( [Real]sumproduction.Value() + productionqty ) );
          //大连产量
          dlproductionquantity     := guard( cell.Production().DLProduction(), 0 );
          dlproduction             := column.CellValue( relnew, Value := [String]dlproductionquantity );
          showrowdlproduction.CellValue( relinsert, dlproduction );
        dlproductionqty     := [Number]sum( daycells, Elements.Production, cellproduction, cellproduction.DLProduction() );
        dlproduction        := selectobject( column, CellValue, c, c.Row() = showrowdlproduction );
        dlproduction.Value( [String]dlproductionqty );
          sumdlproduction          := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
          if( isnull( sumdlproduction ) ){
            sumdlproduction        := column.CellValue( relnew, Value := [String]0 );
            sumrowdlproduction.CellValue( relinsert, sumdlproduction );
          }
          sumdlproduction.Value( [String]( [Real]sumdlproduction.Value() + dlproductionquantity ) );
        sumdlproduction.Value( [String]( [Real]sumdlproduction.Value() + dlproductionqty ) );
          //长春产量
          ccproductionquantity     := guard( cell.Production().CCProduction(), 0 );
          ccproduction             := column.CellValue( relnew, Value := [String]ccproductionquantity );
          showrowccproduction.CellValue( relinsert, ccproduction );
        ccproductionqty     := [Number]sum( daycells, Elements.Production, cellproduction, cellproduction.CCProduction() );
        ccproduction        := selectobject( column, CellValue, c, c.Row() = showrowccproduction );
        ccproduction.Value( [String]ccproductionqty );
          sumccproduction          := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
          if( isnull( sumccproduction ) ){
            sumccproduction        := column.CellValue( relnew, Value := [String]0 );
            sumrowccproduction.CellValue( relinsert, sumccproduction );
          }
          sumccproduction.Value( [String]( [Real]sumccproduction.Value() + ccproductionquantity ) );
        sumccproduction.Value( [String]( [Real]sumccproduction.Value() + ccproductionqty ) );
          //需求
          totaldemand              := column.CellValue( relnew, Value := [String]cell.DemandQuantity() );
          showrowdemand.CellValue( relinsert, totaldemand );
        totaldemandqty      := [Number]sum( daycells, Elements, cell, cell.DemandQuantity() );
        totaldemand         := selectobject( column, CellValue, c, c.Row() = showrowdemand );
        totaldemand.Value( [String]totaldemandqty );
          sumdemand                := selectobject( column, CellValue, c, c.Row() = sumrowdemand );
          if( isnull( sumdemand ) ){
            sumdemand              := column.CellValue( relnew, Value := [String]0 );
            sumrowdemand.CellValue( relinsert, sumdemand );
          }
          sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
          traverse( cell, Demand, demand, exists( models, Elements, model, model = demand.Model() ) ){
            demandrow              := selectobject( this, Row, r, r.Product() = row.Name() and r.Demand() = demand.Model() );
            sumdemandrow           := selectobject( this, Row, r, r.Product() = sumname and r.Demand() = demand.Model() );
            if( not isnull( demandrow ) ){
              demandcell             := column.CellValue( relnew, Value := [String]demand.Quantity() );
              demandrow.CellValue( relinsert, demandcell );
            }
        sumdemand.Value( [String]( [Real]sumdemand.Value() + totaldemandqty ) );
        //具体需求
        traverse( demandrows, Elements, demandrow ){
          demandqty         :=  [Number]sum( daycells, Elements.Demand, celldemand, celldemand.Model() = demandrow.Demand(), celldemand.Quantity() );
          demandcell        := selectobject( column, CellValue, c, c.Row() = demandrow );
          demandcell.Value( [String]demandqty );
          sumdemandrow      := selectobject( sumdemandrows, Elements, r, r.Demand() = demandrow.Demand() );
            if( not isnull( sumdemandrow ) ){
            sumdemandcell          := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
            if( isnull( sumdemandcell ) ){
              sumdemandcell        := column.CellValue( relnew, Value := [String]0 );
              sumdemandrow.CellValue( relinsert, sumdemandcell );
            }
            sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demand.Quantity() ) );
            sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demandqty ) );
            }
          }
          for( demandr := showrowdemand.RowNr() + 1; demandr < showrowinventory.RowNr(); demandr := demandr + 1 ){
            demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = row.Name() );
            if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
              demandcell           := column.CellValue( relnew, Value := '' );
              demandrow.CellValue( relinsert, demandcell );
            }
          }
          //库存
          inventory                := column.CellValue( relnew, Value := [String]cell.InventoryQuantity() );
          showrowinventory.CellValue( relinsert, inventory );
        inventroyqty        := [Number]maxobject( daycells, Elements, e, e.Column().StartDate() ).InventoryQuantity();
        inventory           := selectobject( column, CellValue, c, c.Row() = showrowinventory );
        inventory.Value( [String]inventroyqty );
          suminventory             := selectobject( column, CellValue, c, c.Row() = sumrowinventory );
          if( isnull( suminventory ) ){
            suminventory           := column.CellValue( relnew, Value := [String]0 );
            sumrowinventory.CellValue( relinsert, suminventory );
          }
          suminventory.Value( [String]( [Real]suminventory.Value() + cell.InventoryQuantity() ) );
        }
        suminventory.Value( [String]( [Real]suminventory.Value() + inventroyqty ) );
      }
    }
    traverse( this, Column, column ){
_Main/BL/Type_EnginePipelineReport/Method_Generate0.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
@@ -12,10 +12,10 @@
  [*
    // ç”„兰鸽 Jul-11-2024 (created)
    row           := table.Row( relnew, Name := name, RowNr := rownr, Product := product, Demand := demand );
    //traverse( table, Column, column ){
    //  cell        := column.CellValue( relnew, Value := '0' );
    //  row.CellValue( relinsert, cell );
    //}
    traverse( table, Column, column ){
      cell        := column.CellValue( relnew, Value := '0' );
      row.CellValue( relinsert, cell );
    }
    return row;
  *]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -17,46 +17,52 @@
    
    products                  := construct( Product_MPs );
    //初始化列
    table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
    table.GenerateColumn( owner, Translations::MP_GlobalParameters_Day(), search.StartDate(), search.EndDate() );
    endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
    
    //生成生产和库存数据
    traverse( owner, StockingPoint_MP, stockingpoint ){
      unit                    := stockingpoint.Unit();
      parentunits             := unit.GetAllParent();
      //是否属于长春工厂
      iscc                    := ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' ) ) and stockingpoint.ID().EndsWith( '厂内库' );
      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );
      //是否属于大连工厂
      isdl                    := ( ( stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '大连' ) ) and stockingpoint.ID().EndsWith( '厂内库' ) ) or  stockingpoint.ID() = '大连外租库';
      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );
      //是否属于长春产量
      isccproduction          := iscc and stockingpoint.ID().EndsWith( '厂内库' );
      //是否属于大连产量
      isdlproduction          := isdl and stockingpoint.ID().EndsWith( '厂内库' ) or  stockingpoint.ID() = '大连外租库';
      if( isccproduction or isdlproduction ){
      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 ) ) ){
        pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
                                                    and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ), pispip.Start() );
        row := table.GetRow( pisp.ProductID() );
        products.Add( pisp.Product_MP() );
        traverse( pispips, Elements, pispip ){
          //天
          daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
          //周
          weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(),  pispip.Start().Date() );
          supplyquantity    := [Number]pispip.NewSupplyQuantity();//四舍五入
          inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
    //        weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(),  pispip.Start().Date() );
            supplyquantity    := pispip.NewSupplyQuantity();//四舍五入
            inventoryquantity := pispip.PlannedInventoryLevelEnd();
          //产量是加总
          if( iscc or isdl ){
            row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
            row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity );
            if( isccproduction or isdlproduction ){
              row.SetCellProductionValue( daycolumn, iscc, supplyquantity );
    //          row.SetCellProductionValue( weekcolumn, iscc, supplyquantity );
          }
          //库存需要取最后一天
          row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
      
          if( pispip.Start().Date() = weekcolumn.EndDate() or pispip.Period_MP() = endperiod ){
            row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
    //        if( pispip.Start().Date() = weekcolumn.EndDate() or pispip.Period_MP() = endperiod ){
    //
    //          row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
    //        }
          } 
        }
      }
    }
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast, not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < endperiod.StartDate() and forecast.Quantity() <> 0 
              and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
@@ -68,26 +74,26 @@
        //天
        daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
        //周
        weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), psdip.StartDate() );
    //    weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), psdip.StartDate() );
          
        if( not isnull( daycolumn ) ){
          row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
        }
        if( not isnull( weekcolumn ) ){
          row.SetCellDemandValue( weekcolumn, 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();
    //    } 
      }
    }
    
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    //rows := selectsortedset( table, Row, row, row.Name() );
    //i    := 0;
    //traverse( rows, Elements, e ){
    //  e.RowNr( i );
    //  i := i + 1;
    //}
    showtable.Generate( search, products );
  *]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_InitiateSearch.qbl
@@ -9,7 +9,7 @@
    // ç”„兰鸽 Sep-29-2024 (created)
    search                    := owner.EnginePipelineSearch();
    if( isnull( search ) ){
      owner.EnginePipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
      search                  := owner.EnginePipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    }else{
      search                  := owner.EnginePipelineSearch();
      search.TimeUnit( Translations::MP_GlobalParameters_Day() );
_Main/BL/Type_FinancialProductionSource/StaticMethod_InitiateSearch.qbl
@@ -10,7 +10,7 @@
    allunit                   := FinancialProductionReport::GetDefaultAllUnit();
    search                    := owner.FinancialProductionSearch();
    if( isnull( owner.FinancialProductionSearch() ) ){
      owner.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
      search                  := owner.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    }else{
      search                  := owner.FinancialProductionSearch();
      search.Unit( allunit );
_Main/BL/Type_FinancialSalesSource/StaticMethod_InitiateSearch.qbl
@@ -10,7 +10,7 @@
    allunit                   := FinancialSalesReport::GetDefaultAllUnit();
    search                    := owner.FinancialSalesSearch();
    if( isnull( search ) ){
      owner.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
      search                  := owner.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
    }else{
      search                  := owner.FinancialSalesSearch();
      search.Unit( allunit );
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl
@@ -19,8 +19,8 @@
    brand                      := guard( item.Get( "brand").GetString(),"");
    bi_place                   := guard( item.Get( "bi_place").GetString(),"");
    price                      := guard( item.Get( "price").GetString(),"");
    total                      := guard( item.Get( "total").GetReal(),0);
    amount                     := guard( item.Get( "amount").GetReal(),0);
    total                      := [Real]guard( item.Get( "total").GetString(),"");
    amount                     := [Real]guard( item.Get( "amount").GetString(),"");
    dtype                      := guard( item.Get( "dtype").GetString(),"");
    fac                        := guard( item.Get( "fac").GetString(),"");
    dday                       := guard( item.Get( "dday").GetString(),"");
_Main/BL/Type_InventorySummarySource/StaticMethod_InitiateSearch.qbl
@@ -10,7 +10,7 @@
    allunit                   := InventorySummaryReport::GetDefaultAllUnit();
    search                    := owner.InventorySummarySearch();
    if( isnull( search ) ){
      owner.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, Category := Translations::MP_GlobalParameters_Day(), StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
      search                  := owner.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, Category := Translations::MP_GlobalParameters_Day(), StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
    }else{
      search                  := owner.InventorySummarySearch();
      search.Unit( allunit );
_Main/BL/Type_MachiningPipelineCell/Attribute_CCToDLArrivalQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCToDLArrivalQty
{
  #keys: '3[415136.0.1262801280][415136.0.1262801279][415136.0.1262801281]'
  Description: 'CC to DL åˆ°è¾¾æ•°é‡'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCToDLDepartureQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCToDLDepartureQty
{
  #keys: '3[415136.0.1262801270][415136.0.1262801269][415136.0.1262801271]'
  Description: 'CC to DL离场数量'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLToCCArrivalQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLToCCArrivalQty
{
  #keys: '3[415136.0.1262801300][415136.0.1262801299][415136.0.1262801301]'
  Description: 'DL to CC åˆ°è¾¾æ•°é‡'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLToCCDepartureQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLToCCDepartureQty
{
  #keys: '3[415136.0.1262801290][415136.0.1262801289][415136.0.1262801291]'
  Description: 'DL to CC离场数量'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl
@@ -8,6 +8,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    startyearmonth          := search.MacroPlan().StartOfPlanning().StartOfMonth().Date();
    table      := selectobject( this, Source.Report, report, not report.IsShow() );
    //清空之前存储的显示数据
    this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
@@ -16,24 +17,58 @@
    sumrow     := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) );
    traverse( table, Row, row, productids.Find( row.Name() ) >= 0 ){
      showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() );
      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
        column   := selectobject( this, Column, column, column.StartDate() = cell.Column().StartDate() and column.TimeUnit() = search.TimeUnit() );
        if( not isnull( column ) ){
      traverse( this, Column, column ){
        daycells            := selectset( row, Cell, cell, cell.Column().TimeUnit() = Translations::MP_GlobalParameters_Day() and
                                            cell.Column().StartDate() >= column.StartDate() and
                                            cell.Column().StartDate() <= column.EndDate() );
        maxinventory        := maxobject( daycells, Elements, e, e.Column().StartDate() );
        ccassemblyplanqty   := sum( daycells, Elements, cell, cell.CCAssemblyPlanQty() );
        ccproductionqty     := sum( daycells, Elements, cell, cell.CCProductionQty() );
        cctransferqty       := sum( daycells, Elements, cell, cell.CCTransferQty() );
        ccinventoryqty      := 0.0;
        dlassemblyplanqty   := sum( daycells, Elements, cell, cell.DLAssemblyPlanQty() );
        dlproductionqty     := sum( daycells, Elements, cell, cell.DLProductionQty() );
        dltransferqty       := sum( daycells, Elements, cell, cell.DLTransferQty() );
        dlinventoryqty      := 0.0;
        if( column.StartDate() = startyearmonth ){//当日期是计划开始第一个月时,计算库存是实际库存
          ccinventoryqty    := row.CCInventoryQty() + maxinventory.CCProductionQty() - maxinventory.CCToDLDepartureQty() + maxinventory.DLToCCArrivalQty() - maxinventory.CCAssemblyPlanQty();
          dlinventoryqty    := row.DLInventoryQty() + maxinventory.DLProductionQty() - maxinventory.DLToCCDepartureQty() + maxinventory.CCToDLArrivalQty() - maxinventory.DLAssemblyPlanQty();
        }else{
          beforecolumn      := column.PreviousColumn();
          beforeinventory   := selectobject( showrow, Cell, c, c.Column() = beforecolumn );
          ccinventoryqty    := beforeinventory.CCInventoryQty() + maxinventory.CCProductionQty() - maxinventory.CCToDLDepartureQty() + maxinventory.DLToCCArrivalQty() - maxinventory.CCAssemblyPlanQty();
          dlinventoryqty    := beforeinventory.DLInventoryQty() + maxinventory.DLProductionQty() - maxinventory.DLToCCDepartureQty() + maxinventory.DLToCCDepartureQty() - maxinventory.DLAssemblyPlanQty();
        }
          sumcell  := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell := MachiningPipelineCell::Initialize( column );
          sumcell           := column.Cell( relnew, CCAssemblyPlanQty  := 0,
                                             CCProductionQty           := 0,
                                             CCTransferQty             := 0,
                                             CCInventoryQty            := 0,
                                             DLAssemblyPlanQty         := 0,
                                             DLProductionQty           := 0,
                                             DLTransferQty             := 0,
                                             DLInventoryQty            := 0 );
            sumrow.Cell( relinsert, sumcell );
          }
          showcell := cell.Copy( column );
        showcell            := column.Cell( relnew, CCAssemblyPlanQty  := ccassemblyplanqty,
                                             CCProductionQty           := ccproductionqty,
                                             CCTransferQty             := cctransferqty,
                                             CCInventoryQty            := ccinventoryqty,
                                             DLAssemblyPlanQty         := dlassemblyplanqty,
                                             DLProductionQty           := dlproductionqty,
                                             DLTransferQty             := dltransferqty,
                                             DLInventoryQty            := dlinventoryqty );
          showrow.Cell( relinsert, showcell );
      
          sumcell.Add( cell );
        sumcell.Add( showcell );
        }
      }
    rows                    := selectsortedset( this, Row, row, row.Name(), row.RowNr() );
    i                       := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i                     := i + 1;
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Attribute_CCInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCInventoryQty
{
  #keys: '3[415136.0.1262801322][415136.0.1262801321][415136.0.1262801323]'
  Description: 'CC实际库存数据'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineRow/Attribute_DLInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLInventoryQty
{
  #keys: '3[415136.0.1262801338][415136.0.1262801337][415136.0.1262801339]'
  Description: 'DL实际库存数据'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineRow/Method_SetDepartureAndArrivalValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Method SetDepartureAndArrivalValue (
  MachiningPipelineColumn column,
  Boolean iscctodl,
  Real departureqty,
  Real arriveqty
)
{
  Description: '设置离厂到达数量'
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    if( iscctodl ){
      cell.CCToDLDepartureQty( cell.CCToDLDepartureQty() + departureqty );
      cell.CCToDLArrivalQty( cell.CCToDLArrivalQty() + arriveqty );
    } else {
      cell.DLToCCDepartureQty( cell.DLToCCDepartureQty() + departureqty );
      cell.DLToCCArrivalQty( cell.DLToCCArrivalQty() + arriveqty );
    }
  *]
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl
@@ -78,39 +78,39 @@
          //Attribute
          //长春装配计划
          ccaqcellElement := xmlDOM.CreateElement( "cell" );
          ccaqcellElement.SetAttribute( "value", '长春装配计划' );//CCAssemblyPlanQty
          ccaqcellElement.SetAttribute( "value", 'CC装配计划' );//CCAssemblyPlanQty
          attricolumnelement.AppendChild( ccaqcellElement );
          //长春生产计划
          ccpqcellElement := xmlDOM.CreateElement( "cell" );
          ccpqcellElement.SetAttribute( "value", '长春生产计划' );//CCProductionQty
          ccpqcellElement.SetAttribute( "value", 'CC机加计划' );//CCProductionQty
          attricolumnelement.AppendChild( ccpqcellElement );
          //长春调拨计划
          cctqcellElement := xmlDOM.CreateElement( "cell" );
          cctqcellElement.SetAttribute( "value", '长春调拨计划' );//CCTransferQty
          cctqcellElement.SetAttribute( "value", 'CC to DL' );//CCTransferQty
          attricolumnelement.AppendChild( cctqcellElement );
          //长春库存
          cciqcellElement := xmlDOM.CreateElement( "cell" );
          cciqcellElement.SetAttribute( "value", '长春库存' );//CCInventoryQty
          cciqcellElement.SetAttribute( "value", 'CC库存' );//CCInventoryQty
          attricolumnelement.AppendChild( cciqcellElement );
          //大连装配计划
          dlaqcellElement := xmlDOM.CreateElement( "cell" );
          dlaqcellElement.SetAttribute( "value", '大连装配计划' );//DLAssemblyPlanQty
          dlaqcellElement.SetAttribute( "value", 'DL装配计划' );//DLAssemblyPlanQty
          attricolumnelement.AppendChild( dlaqcellElement );
          //大连生产计划
          dlpqcellElement := xmlDOM.CreateElement( "cell" );
          dlpqcellElement.SetAttribute( "value", '大连生产计划' );//DLProductionQty
          dlpqcellElement.SetAttribute( "value", 'DL机加计划' );//DLProductionQty
          attricolumnelement.AppendChild( dlpqcellElement );
          //大连调拨计划
          dltqcellElement := xmlDOM.CreateElement( "cell" );
          dltqcellElement.SetAttribute( "value", '大连调拨计划' );//DLTransferQty
          dltqcellElement.SetAttribute( "value", 'DL to CC' );//DLTransferQty
          attricolumnelement.AppendChild( dltqcellElement );
          //大连库存
          dliqcellElement := xmlDOM.CreateElement( "cell" );
          dliqcellElement.SetAttribute( "value", '大连库存' );//DLInventoryQty
          dliqcellElement.SetAttribute( "value", 'DL库存' );//DLInventoryQty
          attricolumnelement.AppendChild( dliqcellElement );
          //长春 + å¤§è¿ž åº“å­˜
          tiqcellElement := xmlDOM.CreateElement( "cell" );
          tiqcellElement.SetAttribute( "value", '长春 + å¤§è¿žåº“å­˜' );//TotalInventoryQty
          tiqcellElement.SetAttribute( "value", 'CC + DL库存' );//TotalInventoryQty
          attricolumnelement.AppendChild( tiqcellElement );
        }
        //长春装配计划
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.FinancialProductionSource( relflush );
    startinventorydate        := owner.StartOfPlanning() - Duration::Days( 1 );
    productparent             := MachiningPipelineReport::GetDefaultProductParent();
    source                    := owner.MachiningPipelineSource( relnew, Name := MachiningPipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
@@ -18,7 +19,7 @@
    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() );
    //endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
    
    //生成装配(长内库)、生产(的DL和库存数据
    traverse( owner, StockingPoint_MP, stockingpoint ){
@@ -31,47 +32,75 @@
      if( iscc or isdl ){
        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem()// and pisp.ProductID() = '06K103011CM'
                  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 or pispip.DependentDemandAndSalesDemandQuantity() <> 0 ) ) ){
                  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.DependentDemandAndSalesDemandQuantity() <> 0 ) ) ){
          isccassemnly        := stockingpoint.ID().EndsWith( pisp.Product_MP().ParentID() + '线边库' ) and ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' ) );
          isdlassemnly        := stockingpoint.ID().EndsWith( pisp.Product_MP().ParentID() ) and ( stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '大连' ) );
          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 or pispip.DependentDemandAndSalesDemandQuantity() <> 0 ), pispip.Start() );
          traverse( pispips, Elements, pispip){//, pispip.Start().Month() = 1 and pispip.Start().Day() = 2
                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.DependentDemandAndSalesDemandQuantity() <> 0 ), pispip.Start() );
            products.Add( pisp.Product_MP() );
          row               := table.GetRow( pisp.ProductID() );
          inventoryqty      := sum( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() = startinventorydate and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and pispip.ActualInventoryLevelEnd() <> 0, pispip.ActualInventoryLevelEnd() );
          if( isccassemnly ){
            row.CCInventoryQty( row.CCInventoryQty() + inventoryqty );
          }
          if( isdlassemnly ){
            row.DLInventoryQty( row.DLInventoryQty() + inventoryqty );
          }
          traverse( pispips, Elements, pispip){//, pispip.Start().Month() = 1 and pispip.Start().Day() = 2
            
            //天
            daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
            //周
            weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), pispip.Start().Date() );
            row               := table.GetRow( pisp.ProductID() );
    //        weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), pispip.Start().Date() );
            
            if( isccassemnly or isdlassemnly ){
              //装配线
              quantity        := [Number]pispip.DependentDemandAndSalesDemandQuantity();//四舍五入
              row.SetAssemblyPlanValue(  daycolumn, isccassemnly, [Real]quantity );
              row.SetAssemblyPlanValue( weekcolumn, isccassemnly, [Real]quantity );
    //          row.SetAssemblyPlanValue( weekcolumn, isccassemnly, [Real]quantity );
              //生产
              supplyqty       := [Number]pispip.NewSupplyQuantity();//四舍五入
    //          info( '****************', quantity, supplyqty );
              row.SetCellProductionValue( daycolumn, isccassemnly, [Real]supplyqty );
              row.SetCellProductionValue( weekcolumn, isccassemnly, [Real]supplyqty );
    //          row.SetCellProductionValue( weekcolumn, isccassemnly, [Real]supplyqty );
            }
            
            //库存
            if( iscc or isdl ){
              inventoryqty    := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
              row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryqty );
              if( weekcolumn.EndDate() = pispip.Start().Date() or pispip.Period_MP() = endperiod ){
                row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryqty );
    //        if( iscc or isdl ){
    //          inventoryqty    := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
    //          row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryqty );
    //          if( weekcolumn.EndDate() = pispip.Start().Date() or pispip.Period_MP() = endperiod ){
    //            row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryqty );
    //          }
    //        }
              }
            }
          }
        }
    //生成调拨数据
    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
      originspid             := laneleg.OriginStockingPointID();
      destinationspid        := laneleg.DestinationStockingPointID();
      //CC to DL é•¿æ˜¥åŽ‚å†…åº“åˆ°å¤§è¿žå¤–ç§Ÿåº“
      iscctodl               := originspid.EndsWith( '厂内库' ) and ( originspid.StartsWith( '长春' ) or originspid.StartsWith( 'CC' ) ) and destinationspid = '大连外租库';
      //DL to CC å¤§è¿žåŽ‚å†…åº“åˆ°å¤§è¿žå‘åŠ¨æœºçš„é•¿æ˜¥å¤–ç§Ÿåº“
      isdltocc               := originspid.EndsWith( '厂内库' ) and ( originspid.StartsWith( '大连' ) or originspid.StartsWith( 'DL' ) ) and destinationspid = '大连发动机的长春外租库';
      if( iscctodl and isdltocc ){
        traverse( table, Column, column){//, column.StartDate().Month() = 1
          alltrips           := selectset( laneleg, Trip, trip, ( trip.Arrival().Date() < column.StartDate().StartOfNextMonth() and trip.Arrival().Date() >= column.StartDate() )
                                           or ( trip.Departure().Date() < column.StartDate().StartOfNextMonth() and trip.Departure().Date() >= column.StartDate() ) );
          producttrips      := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ), pit.ProductID() );
          traverse( producttrips, Elements, producttrip ){//, producttrip = '6912'
            row             := table.GetRow( producttrip );
            product         := selectobject( owner, Product_MP, product, product.ID() = producttrip );
            products.Add( product );
            departureqty    := sum( alltrips, Elements.ProductInTrip, pit, ( pit.Trip().Departure().Date() < column.StartDate().StartOfNextMonth() and pit.Trip().Departure().Date() >= column.StartDate() ) and pit.Product_MP() = product, pit.Quantity() );
            arrivalqty      := sum( alltrips, Elements.ProductInTrip, pit, ( pit.Trip().Arrival().Date() < column.StartDate().StartOfNextMonth() and pit.Trip().Arrival().Date() >= column.StartDate() ) and pit.Product_MP() = product, pit.Quantity() );
            row.SetDepartureAndArrivalValue( column, iscctodl, departureqty, arrivalqty );
      }
    }
      }
    }
    //生成调拨数据
    traverse( owner, TransferPlanRow, tprow ){
      product               := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
@@ -95,25 +124,25 @@
            //天
            daycolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), tpcell.TransferPlanColumn().ColumnDate() );
            //周
            weekcolumn       := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), tpcell.TransferPlanColumn().ColumnDate() );
    //        weekcolumn       := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), tpcell.TransferPlanColumn().ColumnDate() );
            quantity         := [Real]tpcell.Value();//四舍五入
            if( not isnull( daycolumn ) ){
              row.SetCellTransferValue( daycolumn, ( originiscc and destiisdl ), quantity );
            }
            if( not isnull( weekcolumn ) ){
              row.SetCellTransferValue( weekcolumn, ( originiscc and destiisdl ), quantity );
            }
    //        if( not isnull( weekcolumn ) ){
    //          row.SetCellTransferValue( weekcolumn, ( originiscc and destiisdl ), quantity );
    //        }
          }
        }
      }
    }
    
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
      e.RowNr( i );
      i := i + 1;
    }
    //rows := selectsortedset( table, Row, row, row.Name() );
    //i    := 0;
    //traverse( rows, Elements, e ){
    //  e.RowNr( i );
    //  i := i + 1;
    //}
    showtable.Generate( search, products );
  *]
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_InitiateSearch.qbl
@@ -9,7 +9,7 @@
    // ç”„兰鸽 Sep-29-2024 (created)
    search                    := owner.MachiningPipelineSearch();
    if( isnull( search ) ){
      owner.MachiningPipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
      search                  := owner.MachiningPipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
    }else{
      search                  := owner.MachiningPipelineSearch();
      search.TimeUnit( Translations::MP_GlobalParameters_Day() );
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_DeductionOfReplacementLoss.qbl
@@ -14,7 +14,7 @@
    allProductionLines := selectuniquevalues( newNOPT, NewOfflinePlanRow, tempNOPR, true, tempNOPR.ProductionLine() );
    
    traverse ( allProductionLines, Elements, pl
    //           , pl = "eMotor Assy (France)"
    //           , pl = "CC MoMo"
             ) 
    {
      // ä¸‹çº¿è®¡åˆ’当前产线下的行
@@ -24,11 +24,12 @@
      preNOPCell := null( NewOfflinePlanCell );
      
      traverse ( newNOPT, NewOfflinePlanColumn, nopc
    //             , nopc.StartDate() >= macroPlan.StartOfPlanning().Date() and nopc.StartDate() <= Date::Construct( 2024, 4, 17 ) // æµ‹è¯•时可以过滤时间
    //             , nopc.StartDate() >= macroPlan.StartOfPlanning().Date() and nopc.StartDate() <= Date::Construct( 2025, 1, 16 ) // æµ‹è¯•时可以过滤时间
               ) 
      {         
        for ( i := 1; i < 10; i++ ) {
          nopcell := select( noprs, Elements.NewOfflinePlanCell, tempNOPC, tempNOPC.NewOfflinePlanColumn() = nopc and tempNOPC.OrderNr() = i );
          nopcell := select( noprs, Elements.NewOfflinePlanCell, tempNOPC, tempNOPC.NewOfflinePlanColumn() = nopc and tempNOPC.OrderNr() = i and tempNOPC.Order() <> "" );
          // æ¢åž‹æŸå¤±å‚æ•°
          cls     := select( macroPlan, ChangeLossSetting, tempCLS, 
                             tempCLS.ProductFirst().ID()  = guard( preNOPCell.NewOfflinePlanRow().ProductID(), "" ) and
@@ -39,10 +40,12 @@
    
          // æ‰£å‡æ¢åž‹æŸå¤±
          if ( not isnull( preNOPCell ) and not isnull( nopcell ) and not isnull( cls ) ) {
            preNOPCell.Quantity( preNOPCell.Quantity() - cls.ChangeLossNumber() );
    //        info( "当前产品序号:", nopcell.OrderNr(),  "    ", nopcell.Order(), "    ", i );
    //        info( "当前列时间:", nopc.StartDate().Format( "Y-M2-D2" ), 
    //              "    ä¸Šä¸€ä¸ªäº§å“å½“前序号:", preNOPCell.Order(), "    ä¸Šä¸€ä¸ªäº§å“æ•°é‡ï¼š", preNOPCell.Quantity(), "    ä¸Šä¸€ä¸ªäº§å“åï¼š", preNOPCell.NewOfflinePlanRow().ProductID(),
    //              "    å½“前产品序号:"      , nopcell.Order()   , "    å½“前产品数量:"     , nopcell.Quantity(), "    å½“前产品名:"  , nopcell.NewOfflinePlanRow().ProductID() );
    //              "    å½“前产品序号:"      , nopcell.Order()   , "    å½“前产品数量:"     , nopcell.Quantity(), "    å½“前产品名:"  , nopcell.NewOfflinePlanRow().ProductID(),
    //              "    éœ€è¦æ‰£å‡çš„æ•°é‡ï¼š", cls.ChangeLossNumber() );
            preNOPCell.Quantity( preNOPCell.Quantity() - cls.ChangeLossNumber() );
          }
          
          // è®¾ç½®ä¸Šä¸€ä¸ªç”Ÿäº§çš„产品Cell
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -106,8 +106,10 @@
    PackagingPlanCell::CalculationPackagingPlanProperties();
    Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
    
    // è®¾ç½®åŒ…装&拆包-数量
    PackagingPlanCell::SetPackagingAndUnpackingValues( macroPlan );
    // è®¾ç½®åŒ…装&拆包-数量(大连工厂)
    PackagingPlanCell::SetPackagingAndUnpackingValuesDL( macroPlan );
    // è®¾ç½®åŒ…装&拆包-数量(长春工厂)
    PackagingPlanCell::SetPackagingAndUnpackingValuesCC( macroPlan );
    //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 )*/ ) {
    //    // è®¾ç½®åŒ…装数量
_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValuesCC.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#parent: #root
StaticMethod SetPackagingAndUnpackingValuesCC (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    traverse ( macroPlan, PackagingPlanRow, ppr, ppr.Factory() = "长春工厂" /*and ppr.ProductID() = "06K103011CM"*/ ) {
      traverse ( ppr, PackagingPlanCell, ppcell/*, ppcell.StartDate() <= Date::Construct( 2025, 1, 4 )*/ ) {
        unpackagedQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT,
                                   tempPIT.ProductID()          = ppcell.PackagingPlanRow().ProductID()                               and
                                   tempPIT.Trip().Departure().Date() = ppcell.StartDate()                                             and
                                   tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( "外租库" )      and
                                   tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( "线边库" ),
                                   tempPIT.Quantity()
                                  );
        ppcell.Unpacking( unpackagedQuantity );
        packagedQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT,
                                 tempPIT.ProductID()          = ppcell.PackagingPlanRow().ProductID()                               and
                                 tempPIT.Trip().Departure().Date() = ppcell.StartDate()                                             and
                                 tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( "线边库" )      and
                                 tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( "外租库" ),
                                 tempPIT.Quantity()
                                );
        ppcell.Package( packagedQuantity );
      }
    }
  *]
}
_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValuesDL.qbl
ÎļþÃû´Ó _Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl ÐÞ¸Ä
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: #root
StaticMethod SetPackagingAndUnpackingValues (
StaticMethod SetPackagingAndUnpackingValuesDL (
  MacroPlan macroPlan
)
{
@@ -10,7 +10,7 @@
    plannedStartDate := macroPlan.StartOfPlanning().Date();
    
    // è®¾ç½®åŒ…装值(符合lotsize和一日最大包装量)
    traverse ( macroPlan, PackagingPlanRow, ppr/*, ppr.Factory() = "大连工厂" and ppr.ProductID() = "06K103011CM"*/ ) {
    traverse ( macroPlan, PackagingPlanRow, ppr, ppr.Factory() = "大连工厂" /*and ppr.ProductID() = "06K103011CM"*/ ) {
      traverse ( ppr, PackagingPlanCell, ppcell/*, ppcell.StartDate() <= Date::Construct( 2025, 1, 4 )*/ ) {
        // Product_MP
        pmp                     := select( macroPlan, Product_MP, tempPMP, tempPMP.IsLeaf() and tempPMP.ID() = ppr.ProductID() );
@@ -93,7 +93,7 @@
    }
    
    // è®¾ç½®æ‹†åŒ…值(符合lotsize和一日最大包装量)
    traverse ( macroPlan, PackagingPlanRow, ppr/*, ppr.Factory() = "大连工厂" and ppr.ProductID() = "06K103011CM"*/ ) {
    traverse ( macroPlan, PackagingPlanRow, ppr, ppr.Factory() = "大连工厂" /*and ppr.ProductID() = "06K103011CM"*/ ) {
      traverse ( ppr, PackagingPlanCell, ppcell/*, ppcell.StartDate() <= Date::Construct( 2025, 1, 4 )*/ ) {
        // Product_MP
        pmp                     := select( macroPlan, Product_MP, tempPMP, tempPMP.IsLeaf() and tempPMP.ID() = ppr.ProductID() );
_Main/Sys/Repr/Global/MachiningPipelineCell.qrp
@@ -11,6 +11,17 @@
  {
    AttributeKey: '[415136.0.886711533]'
    Synonym: 'CC库存'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF9999'
        ConditionBody: 'object.CCInventoryQty() < 0'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  AttributeRepresentation CCProductionQty
  {
@@ -31,6 +42,17 @@
  {
    AttributeKey: '[415136.0.894481161]'
    Synonym: 'DL库存'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF9999'
        ConditionBody: 'object.DLInventoryQty() < 0'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  AttributeRepresentation DLProductionQty
  {
@@ -46,6 +68,17 @@
  {
    AttributeKey: '[415136.0.894481168]'
    Synonym: 'CC+DL总库存'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF9999'
        ConditionBody: 'object.TotalInventoryQty() < 0'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.894469842]' Visibility: 'Normal' }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def
@@ -28,7 +28,7 @@
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialNo","title":"MaterialNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialName","title":"MaterialName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Fac","title":"Fac","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Fac"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FacName","title":"FacName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FacName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineType","title":"LineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DDay","title":"DDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Total","title":"Total","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Total"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AllTotal","title":"AllTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AllTotal"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialNo","title":"MaterialNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineType","title":"LineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DDay","title":"DDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Total","title":"Total","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Total"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Lgort","title":"Lgort","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Lgort"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Fac","title":"Fac","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Fac"}}]'
        ContextMenu: 'listContextMenuMachineStockData'
        SortCriteria: 'desc:DDay'
        Taborder: 2
_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw
@@ -35,30 +35,21 @@
              subtotals: ''
              width: 150
            }
            column_MaterialName
            {
              columnId: 'MaterialName'
              dataPath: 'MaterialName'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Fac
            {
              columnId: 'Fac'
              dataPath: 'Fac'
              dataType: 'string'
              index: 2
              index: 1
              subtotals: ''
              width: 150
            }
            column_FacName
            column_Lgort
            {
              columnId: 'FacName'
              dataPath: 'FacName'
              columnId: 'Lgort'
              dataPath: 'Lgort'
              dataType: 'string'
              index: 3
              index: 2
              subtotals: ''
              width: 150
            }
@@ -67,7 +58,7 @@
              columnId: 'LineType'
              dataPath: 'LineType'
              dataType: 'string'
              index: 4
              index: 3
              subtotals: ''
              width: 150
            }
@@ -76,7 +67,7 @@
              columnId: 'DDay'
              dataPath: 'DDay'
              dataType: 'date'
              index: 5
              index: 4
              subtotals: ''
              width: 150
            }
@@ -85,16 +76,7 @@
              columnId: 'Total'
              dataPath: 'Total'
              dataType: 'real'
              index: 6
              subtotals: ''
              width: 150
            }
            column_AllTotal
            {
              columnId: 'AllTotal'
              dataPath: 'AllTotal'
              dataType: 'real'
              index: 7
              index: 5
              subtotals: ''
              width: 150
            }