| | |
| | | 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() + 3; |
| | | modelsnr := showrowdemand.RowNr() + 4; |
| | | uniquemodels := selectuniquevalues( row, Cell.Demand, demand, true, demand.Model() ); |
| | | demandrows := construct( EnginePipelineRows ); |
| | | traverse( uniquemodels, Elements, e ){ |
| | |
| | | |
| | | //ç产 |
| | | productionqty := sum( daycells, Elements, cell, cell.ProductionQuantity() ); |
| | | production := column.CellValue( relnew, Value := [String]productionqty ); |
| | | showrowproduction.CellValue( relinsert, production ); |
| | | 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() + productionqty ) ); |
| | | //大è¿äº§é |
| | | dlproductionqty := sum( daycells, Elements, cell, cell.Production().DLProduction() ); |
| | | dlproduction := column.CellValue( relnew, Value := [String]dlproductionqty ); |
| | | showrowdlproduction.CellValue( relinsert, dlproduction ); |
| | | dlproductionqty := 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() + dlproductionqty ) ); |
| | | //é¿æ¥äº§é |
| | | ccproductionqty := sum( daycells, Elements, cell, cell.Production().CCProduction() ); |
| | | ccproduction := column.CellValue( relnew, Value := [String]ccproductionqty ); |
| | | showrowccproduction.CellValue( relinsert, ccproduction ); |
| | | ccproductionqty := 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() + ccproductionqty ) ); |
| | | //éæ± |
| | | totaldemandqty := sum( daycells, Elements, cell, cell.DemandQuantity() ); |
| | | totaldemand := column.CellValue( relnew, Value := [String]totaldemandqty ); |
| | | showrowdemand.CellValue( relinsert, totaldemand ); |
| | | 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() + totaldemandqty ) ); |
| | | //å
·ä½éæ± |
| | | traverse( demandrows, Elements, demandrow ){ |
| | | demandqty := sum( daycells, Elements.Demand, celldemand, celldemand.Model() = demandrow.Demand(), celldemand.Quantity() ); |
| | | demandcell := column.CellValue( relnew, Value := [String]demandqty ); |
| | | demandrow.CellValue( relinsert, demandcell ); |
| | | 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() + demandqty ) ); |
| | | } |
| | | } |
| | | //åºå |
| | | inventroyqty := maxobject( daycells, Elements, e, e.Column().StartDate() ).InventoryQuantity(); |
| | | inventory := column.CellValue( relnew, Value := [String]inventroyqty ); |
| | | showrowinventory.CellValue( relinsert, inventory ); |
| | | suminventory := selectobject( column, CellValue, c, c.Row() = sumrowinventory ); |
| | | if( isnull( suminventory ) ){ |
| | | suminventory := column.CellValue( relnew, Value := [String]0 ); |
| | | sumrowinventory.CellValue( relinsert, suminventory ); |
| | | } |
| | | inventroyqty := 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 ); |
| | | suminventory.Value( [String]( [Real]suminventory.Value() + inventroyqty ) ); |
| | | } |
| | | } |
| | | traverse( this, Column, column ){ |
| | | for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){ |
| | | demandrow := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = sumname ); |
| | | demandrow := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = sumname ); |
| | | // info( '------------------14----------------' ); |
| | | if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){ |
| | | demandcell := column.CellValue( relnew, Value := '' ); |
| | | demandcell := column.CellValue( relnew, Value := '' ); |
| | | demandrow.CellValue( relinsert, demandcell ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | rows := selectsortedset( this, Row, row, row.Name(), row.RowNr() ); |
| | | i := 0; |
| | | rows := selectsortedset( this, Row, row, row.Name(), row.RowNr() ); |
| | | i := 0; |
| | | traverse( rows, Elements, e ){ |
| | | e.RowNr( i ); |
| | | i := i + 1; |
| | | i := i + 1; |
| | | } |
| | | *] |
| | | } |
| | |
| | | [* |
| | | // çå
°é¸½ 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; |
| | | *] |
| | | } |
| | |
| | | |
| | | 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() = '大è¿å¤ç§åº'; |
| | | |
| | | 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() ); |
| | | 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();//åèäºå
¥ |
| | | //äº§éæ¯å æ» |
| | | if( iscc or isdl ){ |
| | | row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity ); |
| | | row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity ); |
| | | 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() 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 := pispip.NewSupplyQuantity();//åèäºå
¥ |
| | | inventoryquantity := pispip.PlannedInventoryLevelEnd(); |
| | | //äº§éæ¯å æ» |
| | | 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 ); |
| | | // } |
| | | } |
| | | //åºåéè¦åæåä¸å¤© |
| | | row.SetCellInventoryValue( daycolumn, [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 ) |
| | |
| | | //天 |
| | | 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 ); |
| | | *] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 |
| | | } |
| | |
| | | TextBody: |
| | | [* |
| | | // çå
°é¸½ Jun-25-2024 (created) |
| | | table := selectobject( this, Source.Report, report, not report.IsShow() ); |
| | | startyearmonth := search.MacroPlan().StartOfPlanning().StartOfMonth().Date(); |
| | | table := selectobject( this, Source.Report, report, not report.IsShow() ); |
| | | //æ¸
空ä¹ååå¨çæ¾ç¤ºæ°æ® |
| | | this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() ); |
| | | //è¿æ»¤åç产åid |
| | | productids := selectuniquevalues( products, Elements, product, true, product.ID() ); |
| | | sumrow := this.Row( relnew, Name := 'SUM', RowNr := table.Row( relsize ) ); |
| | | productids := selectuniquevalues( products, Elements, product, true, product.ID() ); |
| | | 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 ) ){ |
| | | sumcell := selectobject( column, Cell, c, c.Row() = sumrow ); |
| | | if( isnull( sumcell ) ){ |
| | | sumcell := MachiningPipelineCell::Initialize( column ); |
| | | sumrow.Cell( relinsert, sumcell ); |
| | | } |
| | | |
| | | showcell := cell.Copy( column ); |
| | | showrow.Cell( relinsert, showcell ); |
| | | |
| | | sumcell.Add( cell ); |
| | | |
| | | showrow := this.Row( relnew, Name := row.Name(), RowNr := row.RowNr() ); |
| | | 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(); |
| | | ccinventoryqty := beforeinventory.DLInventoryQty() + maxinventory.DLProductionQty() - maxinventory.DLToCCDepartureQty() + maxinventory.DLToCCDepartureQty() - maxinventory.DLAssemblyPlanQty(); |
| | | } |
| | | sumcell := selectobject( column, Cell, c, c.Row() = sumrow ); |
| | | if( isnull( sumcell ) ){ |
| | | 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 := 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( showcell ); |
| | | } |
| | | } |
| | | *] |
¶Ô±ÈÐÂÎļþ |
| | |
| | | Quintiq file version 2.0 |
| | | #parent: #root |
| | | Attribute CCInventoryQty |
| | | { |
| | | #keys: '3[415136.0.1262801322][415136.0.1262801321][415136.0.1262801323]' |
| | | Description: 'CCå®é
åºåæ°æ®' |
| | | ValueType: Real |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | Quintiq file version 2.0 |
| | | #parent: #root |
| | | Attribute DLInventoryQty |
| | | { |
| | | #keys: '3[415136.0.1262801338][415136.0.1262801337][415136.0.1262801339]' |
| | | Description: 'DLå®é
åºåæ°æ®' |
| | | ValueType: Real |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 ); |
| | | } |
| | | *] |
| | | } |
| | |
| | | //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 ); |
| | | } |
| | | //é¿æ¥è£
é
计å |
| | |
| | | [* |
| | | // çå
°é¸½ 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() ); |
| | |
| | | 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 ){ |
| | |
| | | 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() ); |
| | | 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( iscc ){ |
| | | row.CCInventoryQty( inventoryqty ); |
| | | }else{ |
| | | row.DLInventoryQty( inventoryqty ); |
| | | traverse( pispips, Elements, pispip){//, pispip.Start().Month() = 1 and pispip.Start().Day() = 2 |
| | | products.Add( pisp.Product_MP() ); |
| | | |
| | | |
| | | //天 |
| | | 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() ); |
| | |
| | | //天 |
| | | 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 ); |
| | | *] |
| | | } |