;CHUI.PPS.TBX.LeanBatch.1 ;(C)InterSystems, generated for class CHUI.PPS.TBX.LeanBatch. Do NOT edit. 04/07/2011 03:10:56PM ;;7216486E3A1C89E0;CHUI.PPS.TBX.LeanBatch Quit ; /* */ /* Set MyLB=$$$LBDeleteAt(MyLB,5) ; Verouderde versie: correct, maar lagere performantie. $$$DoLBDeleteAt(MyLB,5) $$$DoLBDeleteAtIf(Cond,MyLB,5) If (cond) $$$DoLBDeleteAt(MyLB,5) */ %ClassName(fullname) public { Quit $select($get(fullname,0):"CHUI.PPS.TBX.LeanBatch",1:"LeanBatch") } %Close(%this) Quit ..%Close() %ConstructClone(%this,deep,cloned) public { Set deep=$get(deep,0) Set object=%this If $data(cloned(+object)) Do (cloned(+object)).%IncrementCount() Quit cloned(+object) Set %this=$zobjnew("CHUI.PPS.TBX.LeanBatch") Set cloned(+object)=%this,cloned(+object,0)=object Set $zobjval(,1)=$zobjval(object,1),$zobjval(,2)=$zobjval(object,2),$zobjval(,3)=$zobjval(object,3) Merge $zobjval(,4,0)=$zobjval(object,4,0),$zobjval(,5,0)=$zobjval(object,5,0),$zobjval(,8,0)=$zobjval(object,8,0) Set $zobjval(,6)=$zobjval(object,6),$zobjval(,7)=$zobjval(object,7),$zobjval(,9)=$zobjval(object,9) Set $zobjval(,10)=$zobjval(object,10) If deep>0 { If object.BatchProductInfo'="" Set $zobjval(,3,0)=$zobjval(object,3,0).%ConstructClone(1,.cloned) If $zobjval(,3,0)'="" Do ($zobjval(,3,0)).%Close() If object.NieuweBatch'="" Set $zobjval(,7,0)=$zobjval(object,7,0).%ConstructClone(1,.cloned) If $zobjval(,7,0)'="" Do ($zobjval(,7,0)).%Close() If object.blLeanBatch'="" Set $zobjval(,10,0)=$zobjval(object,10,0).%ConstructClone(1,.cloned) If $zobjval(,10,0)'="" Do ($zobjval(,10,0)).%Close() } Quit %this } %Extends(isclass) public { Quit "~CHUI.PPS.TBX.LeanBatch~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } %GetParameter(paramname) public { Set paramname=$get(paramname) Quit $case(paramname,"AantBaliko":9,"AantLaden":6,"AantSpoelbak":8,"AantTipOn":7,"Datum":2,"KlantNaam":3,"OnderdelenSpecial":10,"PROPERTYVALIDATION":0,"ProdDatum":4,"TOENr":1,"Type":5,:"") } %IncrementCount(%this) Quit ..%IncrementCount() %IsA(isclass) public { Quit "~CHUI.PPS.TBX.LeanBatch~%Library.RegisteredObject~"[("~"_$s(isclass[".":isclass,$e(isclass)'="%":"User."_isclass,1:"%Library."_$e(isclass,2,$l(isclass)))_"~") } %IsModified(%this) public { Quit 1 } %New(initvalue) public { Quit ##class(CHUI.PPS.TBX.LeanBatch).%New($get(initvalue)) } %Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) Set $zobjval(,1,0,0,1)="",$zobjval(,2,0,0,2)="",$zobjval(,3,0,0,2)="",$zobjval(,6,0,0,5)="",$zobjval(,7,0,0,5)="",$zobjval(,9,0,0,7)="" Set $zobjval(,10,0,0,7)="" Quit 1 %NormalizeObject(%this) Set:$zobjval(,1,0,0,1)'="" $zobjval(,1,0,0,1)=(..AantalLijnenNormalize($zobjval(,1,0,0,1))) Quit 1 %ObjectModified(%this) public { Quit 1 } %PackageName() Quit "CHUI.PPS.TBX" %SerializeObject(%this,serial,partial) Set partial=$get(partial,0) New %objOBJ,sc,id Set $Ztrap = "%SerializeObjectERR" Set sc=..%ValidateObject() If ('sc) { Ztrap "SO" } Set sc=..%NormalizeObject() If ('sc) { Ztrap "SO" } Quit sc %SerializeObjectERR Set $ZTrap="" If $extract($zerror,1,5)'="" Set sc=$$Error^%apiOBJ(5002,$ZE) Quit sc %AddToSaveSet(%this,depth,refresh,norecurseon) public { Set depth=$get(depth,3),refresh=$get(refresh,0),norecurseon=$get(norecurseon) If ($data(%objTX(1,+%this))) && ('refresh) Quit 1 Set sc=1,intOref=+%this If refresh { Set intPoref=$order(%objTX(1,intOref,2,"")) While intPoref'="" { Kill %objTX(1,intPoref,3,intOref),%objTX(1,intOref,2,intPoref) Set intPoref=$order(%objTX(1,intOref,2,intPoref)) } } Set tDepth=$select(depth'=2:depth,1:1) Set %objTX(2,intOref)=0 exit Quit sc } %RemoveFromSaveSet(%this) public { If '($data(%objTX(1,+%this))) Quit 1 Set intRef=+%this Set intSucc="" For Set intSucc=$order(%objTX(1,intRef,3,intSucc)) Quit:intSucc="" Kill %objTX(1,intSucc,2,intRef) Set intPred="" For Set intPred=$order(%objTX(1,intRef,2,intPred)) Quit:intPred="" Kill %objTX(1,intPred,3,intRef) Kill %objTX(1,intRef),%objTX(2,intRef) Quit 1 } %SetModified(%this,value) public { Quit 1 } %ValidateObject(%this,force) Set force=$get(force,0) Quit 1 zAanpassenTipOn(BatchNr,sX,sY) // We gaan deze methode ook gebruiken om etiketten van spoelbakken en sifons te verwijderen uit de lijst indien nodig Set bl=##class(CHUI.PPS.TBX.LeanBatch).Instantiate() Set NieuweBatch = ##class(APPS.Halux.common.BatchService).%New().GeefBatch(BatchNr) Do bl.GebruikBatch(NieuweBatch) Set PrintLijst = ##class(BL.PPS.TBX.PrintLijstInfo).GeefPrintLijstInfo(BatchNr).PrintLijst If (bl.TipOnPrintStatus(PrintLijst)="N") { Do ##class(CHUI.PPS.TBX.LeanBatch).VerwijderUitMenu("TIP-ON") } If (bl.SifonPrintStatus(PrintLijst)="N") { Do ##class(CHUI.PPS.TBX.LeanBatch).VerwijderUitMenu("Sifon") } If (bl.SpoelbakPrintStatus(PrintLijst)="N"){ Do ##class(CHUI.PPS.TBX.LeanBatch).VerwijderUitMenu("Spoelbak") } If (bl.TipOnFreesStatus(PrintLijst)="N") { Do ##class(CHUI.PPS.TBX.LeanBatch).VerwijderUitMenu("Frees TIP-ON") } If (bl.SpoelSifonFreesStatus(PrintLijst)="N") { Do ##class(CHUI.PPS.TBX.LeanBatch).VerwijderUitMenu("Frees spoel/sifon") } Quit zAfgewerkt(%this,TOENr) New R,Afgewerkt,NietAfgewerkt,TLNr,TLUNr,PRNr,Aantal,FabKey,Count,MaxCount Set Afgewerkt=1,TLNr=100 For Set TLNr=$O(^KTO(6332,TOENr,TLNr)) Quit:TLNr="" Do . Set R=^KTO(6332,TOENr,TLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),TLUNr=$P(R,D,15) . Quit:'PRNr . Quit:'$$ISTBX^PRODUKT2(PRNr) . Set FabKey=$$FABKEYT^HADOPV(TOENr,TLUNr) . Set:$P($G(^HADPR("F",FabKey,"K")),D,3)'="A" NietAfgewerkt(TLNr)=$P(^KPR(PRNr,0),D)_$J(Aantal,14) Set TLNr="",Count=0,MaxCount=15 For Set TLNr=$O(NietAfgewerkt(TLNr)) Quit:TLNr="" Set Count=Count+1 If Count>MaxCount Do . For Count=Count:-1:MaxCount Set TLNr=$O(NietAfgewerkt(TLNr),-1) Kill NietAfgewerkt(TLNr) . Set NietAfgewerkt(TLNr)="..." Set:$D(NietAfgewerkt) NietAfgewerkt="NietAfgewerkt",Afgewerkt=$$^vhTXTPOP("HATBXLEAN","AFGEWERKT","",$$EXTNUM^vhDTyp(TOENr,0,".",0)) Quit Afgewerkt zBatchInSequence(%this,BatchNr) Set blSequence=##class(BL.PPS.TBX.Sequencer).Instantiate() ; restore stock to workplace stock Do blSequence.Init(BatchNr) Quit blSequence.ExistSequence() zBerekenBatchProductInfo(%this) public { Set ..BatchProductInfo = ##class(BL.PPS.TBX.ToeleveringProductInfo).%New() Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() While (ToeleveringIterator.HasNext()) { Set Toelevering = ToeleveringIterator.Next() Set ToeleveringProductInfo = ..blLeanBatch.GeefToeleveringProductInfo(Toelevering) Set ..BatchProductInfo.AantalLaden = ..BatchProductInfo.AantalLaden + ToeleveringProductInfo.AantalLaden Set ..BatchProductInfo.AantalTipon = ..BatchProductInfo.AantalTipon + ToeleveringProductInfo.AantalTipon Set ..BatchProductInfo.AantalSpoelbak = ..BatchProductInfo.AantalSpoelbak + ToeleveringProductInfo.AantalSpoelbak Set ..BatchProductInfo.AantalSifon = ..BatchProductInfo.AantalSifon + ToeleveringProductInfo.AantalSifon Set ..BatchProductInfo.AantalBaliko = ..BatchProductInfo.AantalBaliko + ToeleveringProductInfo.AantalBaliko } } zBevatSFS(%this) public { Set BevatSFS = 0 Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() While (ToeleveringIterator.HasNext()) { Set Toelevering = ToeleveringIterator.Next() Set Order = Toelevering.GeefOrder() If ($IsObject(Order)) { Set BevatSFS = (Order.GeefKlantNr() = 12486) } } Quit BevatSFS } zCheckVerwijder(%this,Toelevering) public { If (..NieuweBatch.GeefBatchID()'="") { Set HasSequence=..BatchInSequence(..NieuweBatch.GeefBatchID()) If HasSequence { Do WARN^vhTXTPOP("Deze batch heeft reeds een sequentie.~De producten van de toelevering zullen als 'verwijderd' gemarkeerd worden","Verwijderen toelevering") } } Quit 1 } zChkBatch(%this,Toelevering) public { Set BijhorendeBatch = ##class(APPS.Halux.common.BatchService).%New().GeefBijhorendeBatch(Toelevering) If ($IsObject(BijhorendeBatch)) { Set BatchNr = BijhorendeBatch.GeefBatchID() Set BatchTimeStamp = BijhorendeBatch.GeefAanmaakTijdstip() Set TOENr = Toelevering.GeefToeNr() Set BatchOk=$$^vhTXTPOP("HATBXLEAN","CHKBATCH","",$$EXTNUM^vhDTyp(TOENr,0,".",0),..blLeanBatch.ConvertTimeStamp(BatchTimeStamp)_" ("_BatchNr_")") } Quit '$IsObject(BijhorendeBatch) } zChkBodems(%this) public { Set BodemsOK=0 Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() While (('BodemsOK) && ToeleveringIterator.HasNext()) { Set Toelevering = ToeleveringIterator.Next() Set ProductLijnIterator = Toelevering.GeefTypeToeleveringLijnIterator(##class(DOM.LEV.enu.ToeleveringLijnType).Product()) While (('BodemsOK) && ProductLijnIterator.HasNext()) { Set ProductLijn = ProductLijnIterator.Next() Set Product = ProductLijn.GeefProduct() Set PRNr = Product.GeefPRNr() If ($P($$GENTYP^HAD(PRNr),"\") = "TBX") { Set Klas=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) ; klasse If (Klas '= "SP2") { Set PlaatMat=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"MATKL")) ; Materiaal gezaagd Set MetInkeeping=##class(BL.PPS.TBX.DocsV1).MetInkeeping(PRNr) Set BodemsOK = '(PlaatMat'?1(1"HZ",1"HA",1"KZ",1"KA")&&'(MetInkeeping)) } } } } Quit BodemsOK } zChkCommissie(%this) public { Set BevatCommissie=0 Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() While (('BevatCommissie) && ToeleveringIterator.HasNext()) { Set Toelevering = ToeleveringIterator.Next() Set ProductLijnIterator = Toelevering.GeefTypeToeleveringLijnIterator(##class(DOM.LEV.enu.ToeleveringLijnType).Product()) While (('BevatCommissie) && ProductLijnIterator.HasNext()) { Set ProductLijn = ProductLijnIterator.Next() Set Product = ProductLijn.GeefProduct() Set PRNr = Product.GeefPRNr() If ($P($$GENTYP^HAD(PRNr),"\") = "TBX") { Set ASM=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM")) ; Antislipmat Set VPK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) ; Verpakking Set BevatCommissie = (((VPK="A")!(VPK="B"))&(ASM'=0)) || ((VPK="O")!(VPK="B")) } } } Quit BevatCommissie } zChkOpties(%this) public { Set BatchType=..NieuweBatch.GeefProductieGroep() Set PrintLijst = ##class(BL.PPS.TBX.PrintLijstInfo).GeefPrintLijstInfo(..NieuweBatch.GeefBatchID()).PrintLijst Set TePrintenEtiketten = ..NogTePrintenEtiketten(PrintLijst) If BatchType="+" Do ; ProPlus - Keller . Set Opties="Z;E;F;D;B;P;G;X;A"_$S(..TipOnFreesStatus(PrintLijst)'="N":";U",1:"")_$S(..SpoelSifonFreesStatus(PrintLijst)'="N":";W",1:"") Else If BatchType="A" Do ; Kast . If TePrintenEtiketten '= "" Do . . Set Opties=TePrintenEtiketten . Else Set Opties="Z;E;F;O;R;D;M;L;K;X;I"_$S(..ChkCommissie():";C",1:"")_$S(..ChkBodems():";B",1:"")_";G" Else Do ; BatchType = "P" of "S" , pallet of stuks verpakt . If TePrintenEtiketten '= "" Do . . Set Opties=TePrintenEtiketten . Else Set Opties="Z;E;L;F;O;M;R;I"_$S(..BevatSFS():";P",1:"")_$S(..ChkCommissie():";C",1:"")_$S(..ChkBodems():";B",1:"")_";G" For i=1:1:$L(Opties,";") Do . If $LF(PrintLijst,$Piece(Opties,";",i)) Set $Piece(Opties,";",i)="" . If $Piece(Opties,";",i)="P"&($LF(PrintLijst,"PE")!$LF(PrintLijst,"PA")) Set $Piece(Opties,";",i)="" Quit Opties } zCommandLoop(%this) Do WLIP^vhDBG(191,"In commandloop") Do ..Write() Set Input="" While '("\CANC\NB\SB\"[("\"_Input_"\")) { Set Input=$$SCROLL^vhLIST(.Lijst,,5) If $D($zobjval(,8,0,0,6,Lijst("SELECT"))) { Set TOENr=$LG($zobjval(,8,0,0,6,Lijst("SELECT")),1) Set AantLaden=$LG($zobjval(,8,0,0,6,Lijst("SELECT")),6) Set AantTipOn=$LG($zobjval(,8,0,0,6,Lijst("SELECT")),7) Set AantSpoelbak=$LG($zobjval(,8,0,0,6,Lijst("SELECT")),8) Set AantBaliko=$LG($zobjval(,8,0,0,6,Lijst("SELECT")),9) } If Input="COM" Do CALL^vhMenu("LEANBATCH") Do EXEC^vhMenu("LEANBATCH",.Input) } Do ..Save() Quit Input zFetch(%this,Selected) public { Set $zobjval(,1,0,0,1)=0 Kill $zobjval(,4,0,0,3) Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() While (ToeleveringIterator.HasNext()) { Set Toelevering = ToeleveringIterator.Next() Set $zobjval(,1,0,0,1)=$zobjval(,1,0,0,1)+1 Set $zobjval(,4,0,0,3,$zobjval(,1,0,0,1))=..FetchLijn(Toelevering) Set Selected(Toelevering.GeefToeNr())="" } Do ..BerekenBatchProductInfo() Quit } zFetchLijn(%this,Toelevering) public { Set ProdDatum=$$FormatDateTime^vhLib("dd-mm uu:ss",Toelevering.GeefDueOutTime()) Set KlantNaam = "" Set Order = Toelevering.GeefOrder() If ($IsObject(Order)) { Set KlantNaam = Order.GeefKlant().GeefNaam() } Set ToeleveringProductInfo = ..blLeanBatch.GeefToeleveringProductInfo(Toelevering) Set Type ="" Set AantSpoelbak=ToeleveringProductInfo.AantalSpoelbak + ToeleveringProductInfo.AantalSifon Quit $LB(Toelevering.GeefToeNr(),Toelevering.GeefAanmaakDatum(),KlantNaam,ProdDatum,Type,ToeleveringProductInfo.AantalLaden,ToeleveringProductInfo.AantalTipon,AantSpoelbak,ToeleveringProductInfo.AantalBaliko,ToeleveringProductInfo.AantalOnderdelenSpeciaal) } zGebruikBatch(%this,Batch) public { Set ..NieuweBatch = Batch Do ..BerekenBatchProductInfo() } zGeefHoogsteFinishedSequencenr(%this,BatchID) [ BatchID,Hoogste,SQLCODE ] public { New Hoogste,SQLCODE ;---&SQL(SELECT Max(Sequence) Into :Hoogste FROM PPS.TBX_Queue WHERE BatchID = :BatchID AND WPPers_WPStatus = 'F') ;--- ** SQL PUBLIC Variables: BatchID, Hoogste, SQLCODE Do %0o Set Hoogste = $Get(Hoogste,0) Quit Hoogste } q %0o n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlZ s $zt="%0err",$ze="" s %mmmsqld(5)=$g(BatchID),%mmmsqld(7)="F" s SQLCODE=100 s %mmmsqlt(1)=$i(^mtemp0) s %mmmsqld(12)=(" "_$s(%mmmsqld(7)="":"",$zstrip(%mmmsqld(7),">W")'="":$zcvt($zstrip(%mmmsqld(7),">W"),"U"),1:$c(0))) s %mmmsqld(10)=(" "_$s(%mmmsqld(5)="":"",$zstrip(%mmmsqld(5),">W")'="":$zcvt($zstrip(%mmmsqld(5),">W"),"U"),1:$c(0))) s Hoogste="" k ^mtemp0(%mmmsqlt(1),0) s ^mtemp0(%mmmsqlt(1),0)=$H_"^"_$J_"^"_$zu(67,11,$j)_"^"_$zu(67,12,$j)_"^"_$zu(67,15,$j)_"^"_$ZN_"^"_$zu(67,6,$j) d %0CMod ; asl MOD# 5 s SQLCODE=0 g %0c %0Edun %0Adun %0c s %ROWCOUNT='SQLCODE k ^mtemp0(%mmmsqlt(1)) q %0err s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) g %0c %0BMod ; asl MOD# 2 s %mmmsqld(9)=%mmmsqld(10) s:%mmmsqld(9)="" %mmmsqld(9)=-1E14 i '($s(%mmmsqld(9)'=-1E14:%mmmsqld(9),1:"")'=" ") g %0Bdun s %mmmsqld(1)="" %0Bk1 s %mmmsqld(1)=$o(^PPS.QueueI("Sequence",%mmmsqld(9),%mmmsqld(1))) i %mmmsqld(1)="" g %0Bdun s %mmmsqld(13)="" %0Bk2 s:%mmmsqld(1)="" %mmmsqld(1)=-1E14 s:%mmmsqld(9)="" %mmmsqld(9)=-1E14 s %mmmsqld(13)=$o(^PPS.QueueI("Sequence",%mmmsqld(9),%mmmsqld(1),%mmmsqld(13))) i %mmmsqld(13)="" g %0Bk1 s:%mmmsqld(1)=-1E14 %mmmsqld(1)="" s:%mmmsqld(9)=-1E14 %mmmsqld(9)="" s $bit(^mtemp0(%mmmsqlt(1),0,%mmmsqld(13)\64000+1),%mmmsqld(13)#64000+1)=1 g %0Bk2 %0Bdun q %0CMod ; asl MOD# 3 d %0BMod s %mmmsqld(21)="",%mmmsqld(22)="",%mmmsqld(24)=1 %0Ck1 f s %mmmsqld(24)=$bitfind(%mmmsqld(22),1,%mmmsqld(24)+1) i %mmmsqld(24) {s %mmmsqld(13)=%mmmsqld(23)+%mmmsqld(24)-1 q} s %mmmsqld(21)=$o(^mtemp0(%mmmsqlt(1),0,%mmmsqld(21)),1,%mmmsqld(22)) q:%mmmsqld(21)="" s %mmmsqld(23)=%mmmsqld(21)-1*64000 i %mmmsqld(21)="" g %0Cdun i %mmmsqld(13)'="",$d(^PPS.QueueD(%mmmsqld(13))) e g %0Ck1 s %mmmsqld(27)=$g(^PPS.QueueD(%mmmsqld(13))) s %mmmsqld(1)=$lg(%mmmsqld(27),12) s %mmmsqld(4)=$lg(%mmmsqld(27),9) s %mmmsqld(6)=$lg($lg(%mmmsqld(27),21),4) s %mmmsqld(9)=(" "_$s(%mmmsqld(4)="":"",$zstrip(%mmmsqld(4),">W")'="":$zcvt($zstrip(%mmmsqld(4),">W"),"U"),1:$c(0))) s %mmmsqld(11)=(" "_$s(%mmmsqld(6)="":"",$zstrip(%mmmsqld(6),">W")'="":$zcvt($zstrip(%mmmsqld(6),">W"),"U"),1:$c(0))) g:'(%mmmsqld(11)'=" ") %0Ck1 g:'(%mmmsqld(11)=%mmmsqld(12)) %0Ck1 ; asl MOD# 4 %0Ddun i %mmmsqld(1)'="" s:$s(Hoogste="":1,1:%mmmsqld(1)]]Hoogste) Hoogste=%mmmsqld(1) g %0Ck1 %0Cdun q zHATBXLean() ;Halux tandembox Lean New %TC,In,Lijst,Input,TOENr,Selected,BatchNr,LijnNr,Batch,MarkToe,ProdGrpBatch New Aantal,AantLaden,AantTipon,AantSpoelbak,AantBaliko,Afgedrukt,Tijden,Datum,chuiLeanBatch,SequenceNr New NieuweBatch,BatchService Set (BatchNr,LijnNr,Aantal,AantLaden,AantTipon,AantSpoelbak,AantBaliko,Afgedrukt,Tijden,Datum,ProdGrpBatch,SequenceNr)="" Do DISPLAY^vhScherm("HATBXLEAN") If '$isObject($G(chuiLeanBatch)) { Set chuiLeanBatch=##class(CHUI.PPS.TBX.LeanBatch).Instantiate() Do chuiLeanBatch.Init() } Set Input = "" While (Input '= "CANC") { Kill Lijst,Selected,Batch,Laden,MarkToe Do chuiLeanBatch.Init() Do WRITE^vhLIST(.Lijst) Do chuiLeanBatch.blLeanBatch.SearchBatchInfo(.BatchLijst) Set BatchNr = chuiLeanBatch.SelectBatchNr(.BatchLijst) If (BatchNr '= "") { Set BatchService = ##class(APPS.Halux.common.BatchService).%New() Set %TC=1 If (BatchNr '= "N") { Set Aantal="" Do ADD^vhLock("^PPS.Batch("_BatchNr_")") ; lock, alleen bij bestaande batches Set NieuweBatch = BatchService.GeefBatch(BatchNr) } Else { Set NieuweBatch = BatchService.GeefNieuweBatch() } Do chuiLeanBatch.GebruikBatch(NieuweBatch) If %TC { Do chuiLeanBatch.Fetch(.Selected) Do chuiLeanBatch.ToonHeader() Set Input = chuiLeanBatch.CommandLoop() If NieuweBatch.GeefBatchID()'="" Do REMOVE^vhLock("^PPS.Batch("_BatchNr_")") } Else { Do LDISP^vhLock("^PPS.Batch("_BatchNr_")","Batch") } } Else { Set Input = "CANC" } } Quit zInit(%this) Do INIT^vhLIST(##class(CHUI.PPS.TBX.LeanBatch).%ClassName(1),"LIJST",.Lijst) Set Lijst("UPINIT")="X`Set Sort=""""" Set Lijst("UPTRAV")="X`S Sort=$O(chuiLeanBatch.Cache(Sort)),sRec="""" S:Sort'="""" sRec=chuiLeanBatch.Cache(Sort)" Set Lijst("UPCOMP")="@`sRec=$G(chuiLeanBatch.Sequence(sCnt))" Set Lijst("UPSEL")="@`Sort=SelKey" Set SelKey="" Merge $zobjval(,5,0,0,4)=Lijst Quit zInstantiate() New chui Set chui=##class(CHUI.PPS.TBX.LeanBatch).%New() Set chui.blLeanBatch=##class(BL.PPS.TBX.LeanBatch).Instantiate() Quit chui zNogTePrintenEtiketten(%this,PrintLijst) public { Set Opties = "" If (..SpoelbakPrintStatus(PrintLijst) = "P") Set Opties=Opties_";Q" If (..SifonPrintStatus(PrintLijst) = "P") Set Opties=Opties_";N" If (..TipOnPrintStatus(PrintLijst) = "P") Set Opties=Opties_";T" If (..TipOnFreesStatus(PrintLijst) = "P") Set Opties=Opties_";U" If (..SpoelSifonFreesStatus(PrintLijst) = "P") Set Opties=Opties_";W" Quit $Extract(Opties,2,$Length(Opties)) } zProductiedatumOk(%this,TOENr,Selected) If $O(Selected(""))="" Quit 1 Set xHeader=$Get(^KTO(6332,TOENr,1)) Set KLNr=$Piece(xHeader,"\",8) Set ToelevDatum=$Piece(xHeader,"\",19) Set TOENummer="",NOK=0 For Set TOENummer=$O(Selected(TOENummer)) Quit:TOENummer=""!NOK Do . Set xHeader=$Get(^KTO(6332,TOENummer,1)) . Set KL1=$Piece(xHeader,"\",8) . Set Datum1=$Piece(xHeader,"\",19) . If +Datum1,+ToelevDatum,(+Datum1'=+ToelevDatum),(KL1=KLNr) Set NOK=1 If NOK Quit $$Error^%apiOBJ(5001,"De toelevering "_$$Format^vhLib("#.0",TOENr)_" heeft productiedatum "_$$Format^vhLib("ddd dd-mm-jj",ToelevDatum)) Quit 1 zSave(%this) public { Set ToeleveringIterator = ..NieuweBatch.GeefToeleveringIterator() If ((..NieuweBatch.GeefBatchID() = "") && ToeleveringIterator.HasNext()) { Set Status = ..blLeanBatch.AddBatch(..NieuweBatch) If ('Status) { Do WARN^vhTXTPOP($$ParseStatus^vhLib(Status),"Batch niet toegevoegd") } Else { Do ADD^vhLock("^PPS.Batch("_..NieuweBatch.GeefBatchID()_")") } } } zSelectBatchNr(%this,BatchLijst) public { Set BatchNr="N" Set:$O(BatchLijst(1)) BatchNr=$$WILD^vhPOPUP("C;C","-1KO","Batch | Datum |Lijn|Typ|#laden|#Tipon|#SP/SY|SpX",.BatchLijst) ; popup alleen als er batchen bestaan Set BatchNr=$Tr(BatchNr," ","") Quit BatchNr } zSelecteerEtiketten(%this,BatchNr,Opties,StartNr,EndNr) Set StartNr=1,EndNr=9999 ; standaardwaarde Quit:Opties'["K"&(Opties'["E")&(Opties'["T") ; er wordt niets gevraagd als er geen productie-etiketten of klantetiketten of tipon-etiketten zijn Quit:'..BatchInSequence(BatchNr) Set PrintList=##class(BL.PPS.TBX.PrintLijstInfo).GeefPrintLijstInfo(BatchNr).PrintLijst Quit:'$LF(PrintList,"E")&'$LF(PrintList,"K") ; als de lijst nog niet afgedrukt is, dan wordt er niets gevraagd ;---&SQL(Select Max(Sequence) into :MaxNr from PPS.TBX_Queue where BatchId=:BatchNr) ;--- ** SQL PUBLIC Variables: BatchNr, MaxNr, SQLCODE Do %0Bo Set (MaxNr,EndNr)=MaxNr Do STORE^vhTERMINA() Do EDIT^vhScherm("HATBXLEAN_ETIKET") Do REFRESH^vhTERMINA() If EndNr>MaxNr Set EndNr=MaxNr If StartNr'>EndNr Do . Set Aantal=EndNr-StartNr+1 . ;Do WARN^vhTXTPOP($S(Aantal=1:"Er is "_Aantal_" etiketlijn geselecteerd!",1:"Er zijn "_Aantal_" etiketlijnen geselecteerd!"),"Herafdruk etiketten") Quit %0Bo n %mmmsqlc,%mmmsqld,%mmmsqlE,%mmmsqll,%mmmsqln,%mmmsqlp,%mmmsqlR,%mmmsqls,%mmmsqlt,%mmmsqlZ s $zt="%0Berr",$ze="" s %mmmsqld(5)=$g(BatchNr) s SQLCODE=100 s %mmmsqld(8)=(" "_$s(%mmmsqld(5)="":"",$zstrip(%mmmsqld(5),">W")'="":$zcvt($zstrip(%mmmsqld(5),">W"),"U"),1:$c(0))) s MaxNr="" d %0BBMod ; asl MOD# 4 s SQLCODE=0 g %0Bc %0BDdun %0BAdun %0Bc s %ROWCOUNT='SQLCODE q %0Berr s $zt="" d SQLRunTimeError^%apiSQL($ze,.SQLCODE,.%msg) g %0Bc %0BBMod ; asl MOD# 2 s %mmmsqld(7)=%mmmsqld(8) s:%mmmsqld(7)="" %mmmsqld(7)=-1E14 i '($s(%mmmsqld(7)'=-1E14:%mmmsqld(7),1:"")'=" ") g %0BBdun s %mmmsqld(1)="" %0BBk1 s %mmmsqld(1)=$o(^PPS.QueueI("Sequence",%mmmsqld(7),%mmmsqld(1))) i %mmmsqld(1)="" g %0BBdun s %mmmsqld(9)="" %0BBk2 s:%mmmsqld(1)="" %mmmsqld(1)=-1E14 s:%mmmsqld(7)="" %mmmsqld(7)=-1E14 s %mmmsqld(9)=$o(^PPS.QueueI("Sequence",%mmmsqld(7),%mmmsqld(1),%mmmsqld(9))) i %mmmsqld(9)="" g %0BBk1 s:%mmmsqld(1)=-1E14 %mmmsqld(1)="" s:%mmmsqld(7)=-1E14 %mmmsqld(7)="" ; asl MOD# 3 %0BCdun i %mmmsqld(1)'="" s:$s(MaxNr="":1,1:%mmmsqld(1)]]MaxNr) MaxNr=%mmmsqld(1) g %0BBk2 %0BBdun q zSelecteerLijn(%this) public { If (..NieuweBatch.GeefLijn() = "") { Set ProductieGroep = ..NieuweBatch.GeefProductieGroep() If ProductieGroep = ##class(APPS.Halux.common.enu.ProductieGroep).Stuk() { Do ..NieuweBatch.ZetLijn(##class(APPS.Halux.common.enu.ProductieLijn).Een()) } ElseIf ProductieGroep = ##class(APPS.Halux.common.enu.ProductieGroep).Plus() { Do ..NieuweBatch.ZetLijn(##class(APPS.Halux.common.enu.ProductieLijn).Keller()) } Else { Set Lijn(1)="1`Lijn 1" Set Lijn(2)="2`Lijn 2" Set Lijn(3)="K`Lijn K" If ProductieGroep = ##class(APPS.Halux.common.enu.ProductieGroep).Pallet() { Set StandaardWaarde=2 } ElseIf ProductieGroep = ##class(APPS.Halux.common.enu.ProductieGroep).Kast() { Set StandaardWaarde=1 } Set OudeWaarde=$S(..NieuweBatch.GeefLijn()'="":..NieuweBatch.GeefLijn(),1:StandaardWaarde) Set Lijn=$$WILD^vhPOPUP("C;C","-1KOV","Selecteer de productielijn",.Lijn,OudeWaarde) Do ..NieuweBatch.ZetLijn(Lijn) } Do ..NieuweBatch.%Save() } Quit "" } zSifonPrintStatus(%this,PrintLijst) public { If (..BatchProductInfo.AantalSifon = 0) Quit "N" ; er zijn geen sifonbaketiketten af te drukken If $LF(PrintLijst,"N") Quit "OK" ; de sifonbaketiketten zijn al afgedrukt If '$LF(PrintLijst,"N") Quit "P" ; de sifonbaketiketten moeten nog afgedrukt worden Quit "" } zSpoelSifonFreesStatus(%this,PrintLijst) public { If ((..BatchProductInfo.AantalSifon + ..BatchProductInfo.AantalSpoelbak) =0) Quit "N" ; er zijn geen spoelbakken of sifons If $LF(PrintLijst,"W") Quit "OK" If '$LF(PrintLijst,"W") Quit "P" Quit "" } zSpoelbakPrintStatus(%this,PrintLijst) public { If (..BatchProductInfo.AantalSpoelbak = 0) Quit "N" ; er zijn geen spoelbaketiketten af te drukken If $LF(PrintLijst,"Q") Quit "OK" ; de spoelbaketiketten zijn al afgedrukt If '$LF(PrintLijst,"Q") Quit "P" ; de spoelbaketiketten moeten nog afgedrukt worden Quit "" } zTipOnFreesStatus(%this,PrintLijst) public { If (..BatchProductInfo.AantalTipon = 0) Quit "N" ; er zijn geen tipons If $LF(PrintLijst,"U") Quit "OK" If '$LF(PrintLijst,"U") Quit "P" Quit "" } zTipOnPrintStatus(%this,PrintLijst) public { If (..BatchProductInfo.AantalTipon = 0) Quit "N" ; er zijn geen tipons af te drukken If $LF(PrintLijst,"T") Quit "OK" ; de TipOn-etiketten zijn al afgedrukt If '$LF(PrintLijst,"T") Quit "P" ; de TipOn-etiketten moeten nog afgedrukt worden Quit "" } zToonHeader(%this) Set AantLaden=..BatchProductInfo.AantalLaden Set AantTipon=..BatchProductInfo.AantalTipon Set AantSpoelbak=..BatchProductInfo.AantalSpoelbak + ..BatchProductInfo.AantalSifon Set AantBaliko=..BatchProductInfo.AantalBaliko If (..NieuweBatch.%Id() = "") { Set Afgedrukt = "" } Else { Set PrintLijst=##class(BL.PPS.TBX.PrintLijstInfo).GeefPrintLijstInfo(..NieuweBatch.GeefBatchID()).PrintLijst Set Afgedrukt=$S(PrintLijst="":"",PrintLijst=$LB("T"):"1/2 afgedrukt",1:"alles") } Set LijnNr = ..NieuweBatch.GeefLijn() Set ProdGrpBatch = ..NieuweBatch.GeefProductieGroep() Set SequenceNr = ..GeefHoogsteFinishedSequencenr(BatchNr) Do DISPLAY^vhScherm("HATBXLEAN") Quit zVerwijderUitMenu(Substring) Set Gevonden=0,Aantal=$O(sY(""),-1) For nr=1:1:Aantal Do . If $p(sY(nr),"`",2)[Substring Set Gevonden=1 . If Gevonden Do . . If $D(sY(nr+1)) Set sY(nr)=$G(sY(nr+1)) . . If $D(sX(nr+1)) Do . . . Set sX(nr)=$G(sX(nr+1)) . . . Kill sX(nr+1) If Gevonden { kill sY(Aantal),sX(Aantal) } Quit zWrite(%this,OldsSel) Set chuiLeanBatch=%this Do WRITE^vhLIST(.Lijst) ; Intieel lege lijst, alleen hoofding Set SelKey=$G(OldSel) Do UPDATE^vhLIST(.Lijst) Quit zZetBatchVerwerktTot(%this,BatchNr,LijnNr) public { Set VraagInput = 1 If (LijnNr '= 2) // { Set Resultaat = $$^vhTXTPOP("HATBXLEAN","ZETSEQUENCE") // Zie ^RES("HATBXLEAN","TP","ZETSEQUENCE") voor de definitie Set VraagInput = (Resultaat = "OK") } If (VraagInput) { Set SequentieNummer = $$ASK^vhINP("Laatst geproduceerde ladenummer: ",4,0) Do ..ZetFinishedTotSequencenummer(SequentieNummer) Do ..ToonHeader() Do ..Write() } } zZetFinishedTotSequencenummer(%this,Sequencenummer) public { Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute(..NieuweBatch.GeefBatchID()) Set Count=0 while rs.Next() { Set QueueItem = ##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) if (QueueItem.Sequence <= Sequencenummer) { Do QueueItem.ZetFinished() Set LadeFinishedGezetEventData = ##class(TECH.Events.LadeFinishedGezetEventData).%New(QueueItem.TOENr,QueueItem.TLUNr,QueueItem.Product.ProductNr,QueueItem.BatchID,QueueItem.Sequence) Set LadeFinishedGezetEvent = ##class(TECH.Events.LadeFinishedGezetEvent).%New(LadeFinishedGezetEventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(LadeFinishedGezetEvent) } else { Do QueueItem.ZetNonFinished() } } } zmnAllesVerwijderen(%this) If ..NieuweBatch.GeefBatchID() '= "" { Set Status=..blLeanBatch.DeleteAllToelev(..NieuweBatch) If ($system.Status.IsError(Status)) Do WARN^vhTXTPOP($Piece($$ParseStatus^vhLib(Status),": ",2,99),"Verwijderen van alle toeleveringen is mislukt") } Else { Do ..NieuweBatch.VerwijderAlleToeleveringen() } Set (Aantal,Datum)="" Do ..Fetch(.Selected) Do ..ToonHeader() Do ..Write() Quit zmnLinkHADOPV(%this) Do STORE^vhTERMINA() Set LEVNr=$P(^KTO1(TOENr),"\") Set Batches=$$BATCHALL^HADBATCH($$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($H,"W","MD"),"W")) Do VERWERK^HADOPV(Batches,TOENr) Do REFRESH^vhTERMINA() Quit zmnNieuw(%this) New DERDENr,LijstOld Set DERDENr("N")=1,DERDENr("L")=6332 ; Toeleveringen Halux Merge LijstOld=Lijst Set ($P(Lijst("POS"),";",3),$P(Lijst("POS"),";",6),$P(Lijst("SET"),";",3))=15,Lijst("SELECT")=Lijst("MAX") ; aantal lijnen van de lijst beperken om de toe te voegen toelevering steeds in zicht komt Set FP=1901 Write @F,F1 Do WRITE^vhLIST(.Lijst) Begin For Do STORE^vhTERMINA() Set TOENr=$$SELECT^FLOW("KTO","KTO1",1,.Selected,.DERDENr) Do REFRESH^vhTERMINA() Quit:'TOENr Do . Set Toelevering = ##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().GeefToelevering(TOENr) . . Set ToeleveringProductInfo = ..blLeanBatch.GeefToeleveringProductInfo(Toelevering) . If (ToeleveringProductInfo.AantalOnderdelenSpeciaal > 0) Do . . Set Inp=$$^vhTXTPOP("HATBXLEAN","ODSP","",Toelevering.GeefToeNr(),ToeleveringProductInfo.AantalOnderdelenSpeciaal) . . If ..NieuweBatch.GeefBatchID()="" Do . . Set Selected(TOENr)="" . . Set $ZTRAP="ToevoegenFout" . . Do ..NieuweBatch.VoegToeToelevering(Toelevering) . . Set $ZTRAP = "" . . Set Lijst("MAX")=$zobjval(,1,0,0,1) . . Set Lijst("SELECT")=Lijst("MAX") . Else Do . . Set $ZTRAP="ToevoegenFout" . . Set Status=..blLeanBatch.AddToelev(..NieuweBatch,Toelevering) . . Set $ZTRAP = "" . . If ($system.Status.IsError(Status)) Do WARN^vhTXTPOP($Piece($$ParseStatus^vhLib(Status),": ",2,99),"Toevoegen van Toelevering "_TOENr_ "is mislukt") . Do ..Fetch(.Selected) . Do ..ToonHeader() . Do ..Write() Set Lijst("POS")=LijstOld("POS"),Lijst("SET")=LijstOld("SET") ; terug zetten naar full screen Do WRITE^vhLIST(.Lijst) Quit ToevoegenFout Set $ZTRAP = "" Set Exception = ##class(TECH.ExceptionHandler).Catch("APPS.Halux.common.impl.ToeleveringException") Do WARN^vhTXTPOP(Exception.ToString(),"") Goto Begin Quit zmnPrint(%this) New zb,Opties,OldSel Do ..Save() Set OldSel=Lijst("SELECT") Do DISPLAY^vhScherm("HATBXLEAN",,,,"BATCHNR") Set (Text,SkippedText)="" Do ..SelecteerLijn() If ProdGrpBatch="+" Do ; ProPlus - Keller . Set Opties=$$PI^vhPOPUP("C;C","-1MO","","HATBXLEAN","PRINTPROPLUS",..ChkOpties()) . Quit:zb="CANC" . Do ..SelecteerEtiketten(BatchNr,Opties,.StartNr,.EndNr) . Do ..blLeanBatch.PrintProPlus(BatchNr,$TR(Opties,";",""),.Text,.SkippedText,$G(StartNr),$G(EndNr)) Else If ProdGrpBatch="A" Do ; Kast . ;b "s+" . Set Opties=$$PI^vhPOPUP("C;C","-1MO","","HATBXLEAN","PRINTKAST",..ChkOpties()) . Quit:zb="CANC" . Do ..SelecteerEtiketten(BatchNr,Opties,.StartNr,.EndNr) . Do ..blLeanBatch.PrintCabinet(BatchNr,$TR(Opties,";",""),.Text,.SkippedText,$G(StartNr),$G(EndNr)) Else Do ; ProdGrpBatch = "P" of "S" , pallet of stuks verpakt . Set Opties=$$PI^vhPOPUP("C;C","-1MO","","HATBXLEAN","PRINT",..ChkOpties()) . Quit:zb="CANC" . Do ..SelecteerEtiketten(BatchNr,Opties,.StartNr,.EndNr) . Do ..blLeanBatch.PrintV1(BatchNr,ProdGrpBatch,$TR(Opties,";",""),.Text,$G(StartNr),$G(EndNr)) Do:$L(Text)>2 WARN^vhTXTPOP($E(Text,2,999),"Overzicht") Do:$L($G(SkippedText)) WARN^vhTXTPOP($$REPLACE^vhRtn1(SkippedText,">CR<","~"),"Producten die niet werden toegevoegd") // [??] Do DISPLAY^vhScherm("HATBXLEAN",,,,"BATCHNR") Do ..Fetch(.Selected) Do ..ToonHeader() Do ..Init() Do ..Write(OldSel) Quit zmnVerwijder(%this) Quit:'Lijst("SELECT") 0 Quit:'TOENr new Toelevering Set Toelevering = ##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().GeefToelevering(TOENr) Quit:'..CheckVerwijder(Toelevering) Kill Selected(TOENr) If ..NieuweBatch.GeefBatchID()="" { Do ..NieuweBatch.VerwijderToelevering(Toelevering) } Else { Set Status=..blLeanBatch.DeleteToelev(..NieuweBatch,Toelevering) If ($system.Status.IsError(Status)) Do WARN^vhTXTPOP($Piece($$ParseStatus^vhLib(Status),": ",2,99),"Verwijderen van Toelevering "_TOENr_ "is mislukt") } Set (Aantal,Datum)="" Do ..Fetch(.Selected) Do ..ToonHeader() Do ..Write() Quit zmnVerwijderSequence(%this,BatchNr) Set blSequence=##class(BL.PPS.TBX.Sequencer).Instantiate() ; restore stock to workplace stock Do blSequence.Init(BatchNr) Do blSequence.DeleteBatch() Do ..ToonHeader() Do ..Write() Quit zAantalLijnenDisplayToLogical(%val) Quit $in(%val,"","") zAantalLijnenIsValid(value) public { Quit $s(##class(CHUI.PPS.TBX.LeanBatch).AantalLijnenIsValidDT(value):1,1:$$Error^%apiOBJ(5802,"CHUI.PPS.TBX.LeanBatch.AantalLijnen")) } zAantalLijnenIsValidDT(%val) Quit $isvalidnum(%val,0,,) zAantalLijnenLogicalToDisplay(%val) Quit %val zAantalLijnenNormalize(%val) Quit %val\1 zBatchProductInfoGetSwizzled(%this) public { Quit $zobjval(,3,0,0,2) } zBatchProductInfoIsValid(value) public { Quit 1 } zBatchProductInfoNewObject(%this) public { Set newobject=##class(BL.PPS.TBX.ToeleveringProductInfo).%New("") If newobject="" Quit "" Set ..BatchProductInfo=newobject Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount Quit newobject } zBatchProductInfoSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) Set $zobjval(,3,0,0,2)=newvalue,$zobjval(,2,0,0,2)="" Quit 1 } zCacheDisplayToLogical(%val) Quit %val zCacheIsValid(value) public { Quit 1 } zCacheIsValidDT(%val) Quit 1 zCacheLogicalToDisplay(%val) Quit %val zCacheNormalize(%val) Quit $e(%val,1,50) zLijstDefDisplayToLogical(%val) Quit %val zLijstDefIsValid(value) public { Quit 1 } zLijstDefIsValidDT(%val) Quit 1 zLijstDefLogicalToDisplay(%val) Quit %val zLijstDefNormalize(%val) Quit $e(%val,1,50) zNieuweBatchGetSwizzled(%this) public { Quit $zobjval(,7,0,0,5) } zNieuweBatchIsValid(value) public { Quit 1 } zNieuweBatchNewObject(%this) public { Set newobject=##class(APPS.Halux.common.Batch).%New("") If newobject="" Quit "" Set ..NieuweBatch=newobject Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount Quit newobject } zNieuweBatchSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) Set $zobjval(,7,0,0,5)=newvalue,$zobjval(,6,0,0,5)="" Quit 1 } zSequenceDisplayToLogical(%val) Quit %val zSequenceIsValid(value) public { Quit 1 } zSequenceIsValidDT(%val) Quit 1 zSequenceLogicalToDisplay(%val) Quit %val zSequenceNormalize(%val) Quit $e(%val,1,50) zblLeanBatchGetSwizzled(%this) public { Quit $zobjval(,10,0,0,7) } zblLeanBatchIsValid(value) public { Quit 1 } zblLeanBatchNewObject(%this) public { Set newobject=##class(BL.PPS.TBX.LeanBatch).%New("") If newobject="" Quit "" Set ..blLeanBatch=newobject Set isusercount=''$get($zobjval(newobject,0,,,,5)) Do newobject.%Close() Set $zobjval(newobject,0,,,,5)=isusercount Quit newobject } zblLeanBatchSet(%this,newvalue) public { If newvalue'="",'$isobject(newvalue) Quit $$Error^%apiOBJ(5807,newvalue) Set $zobjval(,10,0,0,7)=newvalue,$zobjval(,9,0,0,7)="" Quit 1 }