| | |
| | | [* |
| | | numberOfLayers++; |
| | | //info( "目标时间:", targetDate.Format( "Y-M2-D2" ) ); |
| | | info( pisp.Name() ); |
| | | //info( pisp.Name() ); |
| | | traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, pispippl.Start().Date() = targetDate ) { |
| | | info( "是否有供应:", pispippl.NewSupply( relsize ) > 0, " 库存:", pispippl.InventoryLevelEnd() ); |
| | | //info( "是否有供应:", pispippl.NewSupply( relsize ) > 0, " 库存:", pispippl.InventoryLevelEnd() ); |
| | | if ( numberOfLayers <> 1 and pispippl.NewSupply( relsize ) = 0 ) { |
| | | previous := pispippl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); |
| | | if ( not previous.Period_MP().IsHistorical() ) { |
| | |
| | | ); |
| | | |
| | | } |
| | | info( "-----------------------------------------------------------------------------------------------------------------" ); |
| | | //info( "-----------------------------------------------------------------------------------------------------------------" ); |
| | | } |
| | | |
| | | PeriodTaskLaneLeg as ptll : { |
| | |
| | | // info( "层数:", numberOfLayers," 当前供应的pisp:", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 总供应值:", ns.Quantity(), " 需要供应值:", currentLayerDependentDemandQuantity, |
| | | // " 当前需求pisp:", targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 需求值:", currentLayerDependentDemandQuantity ); |
| | | // info( "LaneLeg周期任务..." ); |
| | | info( "-----------------------------------------------------------------------------------------------------------------" ); |
| | | //info( "-----------------------------------------------------------------------------------------------------------------" ); |
| | | CapacityAllocationResults::IterativeGeneration2( globalOTDTable, |
| | | targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(), |
| | | targetDate, |
| | |
| | | id := id + "_" + item.Line(); |
| | | } |
| | | operation := Operation::FindOperationTypeIndex( id ); |
| | | account := Account_MP::FindByName( this, "Operation cost" ); |
| | | isfromdb := false; |
| | | existoperationcost := OperationCost::FindOperationCostTypeIndex( id ); |
| | | if( isnull( existoperationcost ) ){ |
| | | connecteditem := select( globalOTDTable, |
| | | Global_MappingOperationCost, |
| | | moperationcost, |
| | | moperationcost.OrgCode() = item.OrganCode(), |
| | | moperationcost.ProductID() = item.ProductID() ); |
| | | if( not isnull( connecteditem)){ |
| | | cost := connecteditem.Cost(); |
| | | lengthoftime := connecteditem.LengthOfTime(); |
| | | start := connecteditem.Start(); |
| | | timeunit := connecteditem.TimeUnit(); |
| | | OperationCost::Create( id, operation, account, "Volume", start, timeunit, lengthoftime, cost, isfromdb ); |
| | | } |
| | | |
| | | } |
| | | if(not isnull(operation)){ |
| | | account := Account_MP::FindByName( this, "Operation cost" ); |
| | | isfromdb := false; |
| | | existoperationcost := OperationCost::FindOperationCostTypeIndex( id ); |
| | | if( isnull( existoperationcost ) ){ |
| | | connecteditem := select( globalOTDTable, |
| | | Global_MappingOperationCost, |
| | | moperationcost, |
| | | moperationcost.OrgCode() = item.OrganCode(), |
| | | moperationcost.ProductID() = item.ProductID() ); |
| | | if( not isnull( connecteditem)){ |
| | | cost := connecteditem.Cost(); |
| | | lengthoftime := connecteditem.LengthOfTime(); |
| | | start := connecteditem.Start(); |
| | | timeunit := connecteditem.TimeUnit(); |
| | | OperationCost::Create( id, operation, account, "Volume", start, timeunit, lengthoftime, cost, isfromdb ); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | *] |
| | | } |