periodsy2:=selectset(periodshuye,Elements,p,p.Start()<mi and p.Start()>=(mi-c) )
traverse( periodsy2,Elements,p9){
p9.Earlystart(mi-c)
periodsy1.Add( p9)
}
h:=h+c
}
periodsy3:=periodsy1
periodsy4:=construct( PeriodTask_MPs)
traverse( periodsy1,Elements,p5){
v:=min(periodsy3,Elements,p9,p9.Start())
mi:=v+h
all:=0.0000
traverse( periodsy3,Elements,p3){
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().RoutingID()=p3.astype(PeriodTaskOperation ).Operation().RoutingID() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.QuantityToProcess()
}
}
p5.TotalQu(all)
if( periodsy4.Size()<1){
periodsy4.Add( p5)
}else{
if ( forallexists( periodsy4,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID()=p5.astype(PeriodTaskOperation ).Operation().RoutingID() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
a:=guard( d.Convert( qty*10000) div d.Convert( value),0)
difference:=qty*10000-(value*a)
if( ls.Routing().Sales().LikeUserLocale("内销")){
if( ls.Routing().Sales().LikeUserLocale("内销") or ls.Routing().Sales().LikeUserLocale("独立需求") ){
if(a>=1 and difference>0){
min1:=min( quantitys,Elements,qu,qu)
if( p.ProductID().LikeUserLocale( 'D11109') or p.ProductID().LikeUserLocale( 'D11110') or p.ProductID().LikeUserLocale( 'D53040') or p.ProductID().LikeUserLocale( 'DD3001') or p.ProductID().LikeUserLocale( 'DD3001') or p.ProductID().LikeUserLocale( 'DD6001') or p.ProductID().LikeUserLocale( 'DD6003') or p.ProductID().LikeUserLocale( 'DD3701') or p.ProductID().LikeUserLocale( 'DD3703') or p.ProductID().LikeUserLocale( 'DD6701') or p.ProductID().LikeUserLocale( 'DD6703') or p.ProductID().LikeUserLocale( 'D31094U')){
if( p3.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p3.astype( PeriodTaskOperation ).Operation().Ismd()=1){
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().Linkid()=p3.astype(PeriodTaskOperation).Operation().Linkid() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
if( ls.Routing().MaterialType()='PF' and not(p.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p.astype( PeriodTaskOperation ).Operation().Ismd()=1)){
// if( ls.Routing().MaterialType()='PF' and not(p.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p.astype( PeriodTaskOperation ).Operation().Ismd()=1)){
if( p1.UnitPeriod().End()=p2.UnitPeriod().End() and p1.UnitPeriod().Start()=p2.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p2.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p2.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p2.QuantityToProcess()
}
}
if(all=0){
all:=p1.QuantityToProcess()
}
p1.TotalQu(all)
if( periods2.Size()<1){
periods2.Add( p1)
}else{
if ( forallexists( periods2,Elements,p,
not(p1.UnitPeriod().End()=p.UnitPeriod().End() and p1.UnitPeriod().Start()=p.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p.astype(PeriodTaskOperation).Operation().RoutingStepName() )) )
periods9:=selectset(period5,Elements,p,p.Start()<end and p.Start()>=(end-c) )
traverse( periods9,Elements,p9){
p9.Earlystart(end-c)
period10.Add( p9)
}
b:=b+c
}
period6:=period10
periods7:=construct( PeriodTask_MPs)
traverse( period10,Elements,p5){
v:=min(period6,Elements,p9,p9.Start())
end:=v+b
all:=0.0000
traverse( period6,Elements,p3){
if( p3.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p3.astype( PeriodTaskOperation ).Operation().Ismd()=1){
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().Linkid()=p3.astype(PeriodTaskOperation).Operation().Linkid() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.TotalQu()
}
}else{
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().RoutingID()=p3.astype(PeriodTaskOperation ).Operation().RoutingID() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.QuantityToProcess()
}
}
}
p5.TotalQu(all)
if( periods7.Size()<1){
periods7.Add( p5)
}else{
if( p5.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p5.astype( PeriodTaskOperation ).Operation().Ismd()=1){
if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().Linkid()=p5.astype(PeriodTaskOperation ).Operation().Linkid() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
periods7.Add( p5)
}
}else{
if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID()=p5.astype(PeriodTaskOperation ).Operation().RoutingID() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
if( ls.Routing().MaterialType()='PF' and not(p.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p.astype( PeriodTaskOperation ).Operation().Ismd()=1)){
qty:=p.QuantityToProcess()
time:=p.Start()
}
if( ls.Routing().MaterialType()='SF'){
time:=p.Earlystart()
}
if( ls.Routing().Batch().Length()>0 ){
quantitys:=construct(Reals);
all:=construct( Reals);
c:=StringToReal::StandardConverter()
if(ls.Routing().Batch().LikeUserLocale(";") ){
strings:=ls.Routing().Batch().Tokenize(";")
traverse( strings,Elements,st){
if( not st=""){
quantitys.Add( c.Convert( st))
}
}
}else{
quantitys.Add(c.Convert(ls.Routing().Batch()))
}
d:=RealToNumber::StandardConverter()
rs:=construct(Reals);
//输液按整天拆,口服按最大批量
value:=max( quantitys,Elements,qu,qu)
a:=guard( d.Convert( qty*10000) div d.Convert( value),0)
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().RoutingID()=p3.astype(PeriodTaskOperation ).Operation().RoutingID() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.QuantityToProcess()
}
}
p5.TotalQu(all)
if( periodsy4.Size()<1){
periodsy4.Add( p5)
}else{
if ( forallexists( periodsy4,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID()=p5.astype(PeriodTaskOperation ).Operation().RoutingID() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
a:=guard( d.Convert( qty*10000) div d.Convert( value),0)
difference:=qty*10000-(value*a)
if( ls.Routing().Sales().LikeUserLocale("内销") or ls.Routing().Sales().LikeUserLocale("独立需求") ){
min1:=min( quantitys,Elements,qu,qu)
if( p.ProductID().LikeUserLocale( 'D11109') or p.ProductID().LikeUserLocale( 'D11110') or p.ProductID().LikeUserLocale( 'D53040') or p.ProductID().LikeUserLocale( 'DD3001') or p.ProductID().LikeUserLocale( 'DD3001') or p.ProductID().LikeUserLocale( 'DD6001') or p.ProductID().LikeUserLocale( 'DD6003') or p.ProductID().LikeUserLocale( 'DD3701') or p.ProductID().LikeUserLocale( 'DD3703') or p.ProductID().LikeUserLocale( 'DD6701') or p.ProductID().LikeUserLocale( 'DD6703') or p.ProductID().LikeUserLocale( 'D31094U')){
if( p1.UnitPeriod().End()=p2.UnitPeriod().End() and p1.UnitPeriod().Start()=p2.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p2.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p2.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p2.QuantityToProcess()
}
}
if(all=0){
all:=p1.QuantityToProcess()
}
p1.TotalQu(all)
if( periods2.Size()<1){
periods2.Add( p1)
}else{
if ( forallexists( periods2,Elements,p,
not(p1.UnitPeriod().End()=p.UnitPeriod().End() and p1.UnitPeriod().Start()=p.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p.astype(PeriodTaskOperation).Operation().RoutingStepName() )) )
periods9:=selectset(period5,Elements,p,p.Start()<end and p.Start()>=(end-c) )
traverse( periods9,Elements,p9){
p9.Earlystart(end-c)
period10.Add( p9)
}
b:=b+c
}
period6:=period10
periods7:=construct( PeriodTask_MPs)
traverse( period10,Elements,p5){
v:=min(period6,Elements,p9,p9.Start())
end:=v+b
all:=0.0000
traverse( period6,Elements,p3){
if( p3.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p3.astype( PeriodTaskOperation ).Operation().Ismd()=1){
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().Linkid()=p3.astype(PeriodTaskOperation).Operation().Linkid() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.TotalQu()
}
}else{
if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().RoutingID()=p3.astype(PeriodTaskOperation ).Operation().RoutingID() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p3.QuantityToProcess()
}
}
}
p5.TotalQu(all)
if( periods7.Size()<1){
periods7.Add( p5)
}else{
if( p5.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p5.astype( PeriodTaskOperation ).Operation().Ismd()=1){
if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().Linkid()=p5.astype(PeriodTaskOperation ).Operation().Linkid() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
periods7.Add( p5)
}
}else{
if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID()=p5.astype(PeriodTaskOperation ).Operation().RoutingID() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
if( p1.Earlystart()=p2.Earlystart() and p2.astype(PeriodTaskOperation ).Operation().RoutingID().LikeUserLocale(s1) and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p2.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p2.TotalQu()
}
}
if(all=0){
all:=p1.TotalQu()
}
p1.TotalQu(all)
if( periods16.Size()<1){
periods16.Add( p1)
}else{
if ( forallexists( periods16,Elements,p,
not(p1.Earlystart()=p.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID().LikeUserLocale(s1) and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p.astype(PeriodTaskOperation).Operation().RoutingStepName() )) )
if( p1.UnitPeriod().End()=p2.UnitPeriod().End() and p1.UnitPeriod().Start()=p2.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p2.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p2.astype(PeriodTaskOperation).Operation().RoutingStepName()){
all:=all+p2.QuantityToProcess()
}
}
if(all=0){
all:=p1.QuantityToProcess()
}
p1.TotalQu(all)
if( periods2.Size()<1){
periods2.Add( p1)
}else{
if ( forallexists( periods2,Elements,p,
not(p1.UnitPeriod().End()=p.UnitPeriod().End() and p1.UnitPeriod().Start()=p.UnitPeriod().Start() and p1.astype(PeriodTaskOperation).Operation().RoutingName()=p.astype(PeriodTaskOperation).Operation().RoutingName() and p1.astype(PeriodTaskOperation).Operation().RoutingStepName()=p.astype(PeriodTaskOperation).Operation().RoutingStepName() )) )
//periods9:=selectset(period5,Elements,p,p.Start()<end and p.Start()>=(end-c) )
//
//traverse( periods9,Elements,p9){
// p9.Earlystart(end-c)
// period10.Add( p9)
// }
//b:=b+c
//}
//
//period6:=period10
//
//
// periods7:=construct( PeriodTask_MPs)
// traverse( period10,Elements,p5){
//
// v:=min(period6,Elements,p9,p9.Start())
// end:=v+b
//
// all:=0.0000
// traverse( period6,Elements,p3){
//
//
//
//
//
//
//
//
//
//
//
// if( p3.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p3.astype( PeriodTaskOperation ).Operation().Ismd()=1){
//
// if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().Linkid()=p3.astype(PeriodTaskOperation).Operation().Linkid() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
// all:=all+p3.TotalQu()
// }
//
//
//
//
// }else{
// if( p3.Earlystart()=p5.Earlystart() and p5.astype(PeriodTaskOperation).Operation().RoutingID()=p3.astype(PeriodTaskOperation ).Operation().RoutingID() and p3.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()){
// all:=all+p3.QuantityToProcess()
// }
//
//
// }
//
//
//
//
// }
//
// p5.TotalQu(all)
// if( periods7.Size()<1){
//
// periods7.Add( p5)
// }else{
//
//
// if( p5.astype( PeriodTaskOperation ).Operation().Linkid().Length()>0 and p5.astype( PeriodTaskOperation ).Operation().Ismd()=1){
// if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().Linkid()=p5.astype(PeriodTaskOperation ).Operation().Linkid() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){
//
// periods7.Add( p5)
// }
//
//
// }else{
//
// if ( forallexists( periods7,Elements,p,not(p.Earlystart()=p5.Earlystart() and p.astype(PeriodTaskOperation ).Operation().RoutingID()=p5.astype(PeriodTaskOperation ).Operation().RoutingID() and p.astype(PeriodTaskOperation).Operation().RoutingStepName()=p5.astype(PeriodTaskOperation).Operation().RoutingStepName()))){