;BL.PPS.TBX.DocsV1.1 ;(C)InterSystems, generated for class BL.PPS.TBX.DocsV1. Do NOT edit. 02/16/2011 08:27:53AM ;;3AA5935F18E5FFA3;BL.PPS.TBX.DocsV1 Quit ; /* */ /* Set MyLB=$$$LBDeleteAt(MyLB,5) ; Verouderde versie: correct, maar lagere performantie. $$$DoLBDeleteAt(MyLB,5) $$$DoLBDeleteAtIf(Cond,MyLB,5) If (cond) $$$DoLBDeleteAt(MyLB,5) */ /* */ /* 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):"BL.PPS.TBX.DocsV1",1:"DocsV1") } %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("BL.PPS.TBX.DocsV1") Set cloned(+object)=%this,cloned(+object,0)=object Set $zobjval(,1)=$zobjval(object,1),$zobjval(,2)=$zobjval(object,2),$zobjval(,3)=$zobjval(object,3) Set $zobjval(,4)=$zobjval(object,4),$zobjval(,5)=$zobjval(object,5),$zobjval(,6)=$zobjval(object,6) Set $zobjval(,7)=$zobjval(object,7),$zobjval(,8)=$zobjval(object,8),$zobjval(,9)=$zobjval(object,9) Quit %this } %Extends(isclass) public { Quit "~BL.PPS.TBX.DocsV1~%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,"Keller":1239,"LabelExtraCommissie":"TBX Extra commissie 5x10","LabelKlantPrinter":"Halux_Productie_Keller","LabelKlantTemplate5x10":"KlantTBX5x10v3","LabelPalletTemplate":"TBX PalletID 5x10","LabelPrinter":"Halux_Productie","LabelTemplate":"TBX Productie","LevHalux":6332,"MaxLadePerPallet":10,"PROPERTYVALIDATION":0,:"") } %IncrementCount(%this) Quit ..%IncrementCount() %IsA(isclass) public { Quit "~BL.PPS.TBX.DocsV1~%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(BL.PPS.TBX.DocsV1).%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,3)="",$zobjval(,4,0,0,4)="",$zobjval(,5,0,0,5)="",$zobjval(,6,0,0,6)="" Set $zobjval(,7,0,0,7)="",$zobjval(,8,0,0,8)="",$zobjval(,9,0,0,9)="" Quit 1 %NormalizeObject(%this) Set:$zobjval(,1,0,0,1)'="" $zobjval(,1,0,0,1)=(..%JNormalize($zobjval(,1,0,0,1))) Set:$zobjval(,2,0,0,2)'="" $zobjval(,2,0,0,2)=(..BatchIDNormalize($zobjval(,2,0,0,2))) Set:$zobjval(,3,0,0,3)'="" $zobjval(,3,0,0,3)=(..DebugNormalize($zobjval(,3,0,0,3))) Set:$zobjval(,4,0,0,4)'="" $zobjval(,4,0,0,4)=(..LabelDeviceNormalize($zobjval(,4,0,0,4))) Set:$zobjval(,5,0,0,5)'="" $zobjval(,5,0,0,5)=(..LabelKlantDeviceNormalize($zobjval(,5,0,0,5))) Set:$zobjval(,6,0,0,6)'="" $zobjval(,6,0,0,6)=(..LabelKlantLayoutNormalize($zobjval(,6,0,0,6))) Set:$zobjval(,7,0,0,7)'="" $zobjval(,7,0,0,7)=(..LabelLayoutNormalize($zobjval(,7,0,0,7))) Set:$zobjval(,8,0,0,8)'="" $zobjval(,8,0,0,8)=(..LineNormalize($zobjval(,8,0,0,8))) Set:$zobjval(,9,0,0,9)'="" $zobjval(,9,0,0,9)=(..ProdGrpNormalize($zobjval(,9,0,0,9))) Quit 1 %ObjectModified(%this) public { Quit 1 } %PackageName() Quit "BL.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 zBevatSFS(%this) public { Set IsSFS=0 Set oBatch=##class(DS.PPS.TBX.Batch).%OpenId($zobjval(,2,0,0,2)) If '$IsObject(oBatch) Quit 0 For i=1:1:oBatch.Toeleveringen.Count() Quit:IsSFS Do . Set TOENr=oBatch.Toeleveringen.GetAt(i) . Set IsSFS=$P($G(^KTO(6332,TOENr,1)),"\",8)=12486 Quit IsSFS } zBldBasisFromQueue(%this,oQ) public { Set Rec=oQ.ProductGetObjectId()_"\"_oQ.TotaalAantal_"\"_oQ.TOENr_"\"_oQ.TLUNr_"\"_oQ.DOSNr_"\"_oQ.Sequence_"\"_oQ.KlantGetObjectId()_"\"_oQ.DeelAantal ; Basis = 1:PRNr 2:Qty 3:TOENr 4:TLUNr, 5:Dossier, 6:VolgNr, 7:KLNr, 8:SubVolgNr Quit Rec } zCommissieRef(%this,KLNr,BONNr) Quit:KLNr=""||(BONNr="") Set HfdRec=$G(^KOD(KLNr,"F",BONNr,1)) Set CommRef=$Piece(HfdRec,"\",19) If $$UPTRIMAN^vhRtn1(CommRef)="" Do . Set CommRef=$Piece(HfdRec,"\",3) ; gewone referentie . Set:CommRef?2N1P2N1P2N1" ".E CommRef=$E(CommRef,10,99) ; gewone referentie waarvan de datum verwijderd is Quit $S($$UPTRIMAN^vhRtn1(CommRef)="":"",1:"Ref. "_CommRef) zControleerErrorsFrees(BatchID) public { Set FreesGeneratiePopup = ##class(BL.PPS.TBX.FreesGeneratiePopup).%New() Do FreesGeneratiePopup.Show() Set ErrorHandler = ##class(APPS.PM.Maatwerk.TBX.Frees.ErrorHandler).%New(BatchID) Do ErrorHandler.VoegErrorHandlerObserverToe(FreesGeneratiePopup) Do ErrorHandler.ControleerVoorErrors(.ErrorFiles) Do ErrorHandler.VerwijderErrorHandlerObserver(FreesGeneratiePopup) Do FreesGeneratiePopup.Hide() Set Iterator = ##class(TECH.ListIterator).%New(ErrorFiles) Set Body="Volgende errorfiles zijn gegenereerd voor batch "_BatchID Set i = 1 While(Iterator.HasNext()) { Set Tekst(i) = $Piece(##class(%Library.File).GetFilename(Iterator.Next()),".") Set Body = Body_"
"_Tekst(i) Set i = i + 1 } If (i > 1) { Do SendMiniMail^vhLib(""""_"Frees Admin"_""" ",$ListBuild("ICT_SysOp@vanhoecke.be"),"Generatie errors freesbestanden",Body,0,1) Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Merge ^HULP(%J) = Tekst Do INIT^vhLIST("HATBXLEAN","FREES",.LD) Do WRITE^vhLIST(.LD) Set Input=$$SCROLL^vhLIST(.LD) Kill ^HULP(%J) } } zEtiketChk(%this,oQ) public { Set PRNr=oQ.ProductGetObjectId() Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen Special Quit ODSP'="F" } zEtiketOne(%this,oQ) public { ;New IB,RH,SPZK,DS,DK,KLAS,ODSP,BM,DC,RugPRNr,IsSR,Opmerking ; C via .Local Set pxLabel=##class(BL.PPS.TBX.sub.pxLabelV1).%New() Set PRNr=oQ.ProductGetObjectId() Set (pxLabel.IB,IB)=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB")) ; Interne breedte Set (pxLabel.RH,RH)=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RH")) ; Rughoogte Set pxLabel.LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) ; Ladediepte Set DS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DS")) ; Design Set DK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK")) ; Draagkracht Set KLAS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) ; Klasse (Spoelbak, Lade, ...) Set IsSR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Set SPZK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"SPZK")) ; Spoelbak zijkant Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen special Set BM=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BM")) ; Blumotion Do pxLabel.SetTipon(BM="T") Set pxLabel.KB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KB")) ; KleurBodem Set pxLabel.KL=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KL")) ; KleurLadezijkant Set pxLabel.KR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KR")) ; KleurRug Set DC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC")) ; DesignCode Set BS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BS")) ; BoxSide Set LC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) ; LadeCode Set pxLabel.ZW=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ZW")) ; Zijwandhoogte Set ASM=$S($LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"NMASM")):"",1:$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM"))) ; Antislipmat Set VPK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) ; Verpakking Set RSTL=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RSTL")) ; Rug verlaagd Set PlaatMat=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"MATKL")) ; Materiaal gezaagd Set Batch=##class(DS.PPS.TBX.Batch).%OpenId(oQ.BatchID) Set pxLabel.Line=Batch.Line Quit:ODSP="F" "" ; Onderdelen Speciaal : alleen front Set pxLabel.Bor="" If 'IsSR&&((IB'<400)||(DK=80)||(DS="BA")||(KLAS="SP")) Do . Set pxLabel.Bor=$S((IB'<700)||(KLAS="SP"):2,1:1) Set TipOnSyncPRNr=$P($G(^PRBS("BS",PRNr,"PRTOSTANG.001")),"\",1) ; ;Z55Sxxx Set RugPRNr=$P($G(^PRBS("BS",PRNr,"PRRUGHS.001")),"\",1) Set:RugPRNr?4.7N RH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",RugPRNr,"RugHoogte")) ; Werkelijke hoogte van de rug Set pxLabel.RHNet=..RugHoogteInMM(RH) Set RugHPRNr=$P($G(^PRBS("BS",PRNr,"PRRUGLI.001")),"\",1) Set:RugHPRNr?4.7N RHH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",RugHPRNr,"RugHoogte")) ; Werkelijke hoogte van de rughouder if $G(RHH)?1A1"-"1A { ; L-vormige rughouders hebben een kenmerk van de vorm BuitenRugHoogte_BinnenRugHoogte set pxLabel.Opm2 = "RWH : "_..RugHoogteInMM($P(RHH,"-",1))_"_"_..RugHoogteInMM($P(RHH,"-",2)) } else{ set pxLabel.Opm2 = "RWH : "_..RugHoogteInMM($P(RH,"-",1))_"_"_..RugHoogteInMM($P(RH,"-",1)) } Set BodemPRNr=$P($G(^PRBS("BS",PRNr,"PRBDHO.001")),"\",1) Set lbBodemKleuren=$S(BodemPRNr?4.7N:##class(Prod.Kenmerk.DataDefinitie).Get("TB",BodemPRNr,"Kleur"),1:"") ; Mogelijke kleuren van de bodem Set KB2=$S(lbBodemKleuren'="":$LG(lbBodemKleuren,$S($LF(lbBodemKleuren,pxLabel.KB)=1:2,1:1)),1:"") ; 2e kleur bodem Set:KB2'="" pxLabel.KB=pxLabel.KB_"/"_KB2 ; F en A design achter de ladezijkantkleur Set pxLabel.KL=pxLabel.KL_$CASE(DC,"S":"","B":"","I":":A"_$S((pxLabel.ZW)="L":"2",1:""),"MA":":A",:":"_DC) If DK=80 Do . Set pxLabel.BreedteR=IB-87 . Set pxLabel.BreedteB=IB-81 Else If DS="BA" Do . Set pxLabel.BreedteR=IB-112 . Set pxLabel.BreedteB=IB-75 Else Do . Set pxLabel.BreedteR=IB-87 . Set pxLabel.BreedteB=IB-75 ; opmerking Set Opmerking="" Set:PlaatMat?1(1"HZ",1"HA",1"KS",1"KZ",1"KA") Opmerking=Opmerking_", "_$Case(PlaatMat,"HZ":"Verzaagd","HA":"Verzaagd","KS":"Klant",:"Klant verzaagd") ; plaatmateriaal is reeds gezaagd Set:##class(BL.PPS.TBX.DocsV1).MetInkeeping(PRNr) Opmerking=Opmerking_", "_"INKEPING" ; controle of de bodem een inkeping heeft (Keller) Set Opmerking=Opmerking_$CASE(VPK,"Z":"Stuk-Z","O":"PRO-O","C":"PRO-Z","P":"PALLET","A":"KAST-Z","B":"KAST-O","I":"KIST",:"") Set:"0"'[ASM Opmerking=Opmerking_", "_"MAT:"_ASM Set:$E(LC,$L(LC))="Z" Opmerking=Opmerking_", "_"FRONT" Set:DK=80 Opmerking=Opmerking_", "_"80kg" Set:DK=25 Opmerking=Opmerking_", "_"Intrabox" Set:DS="BA" Opmerking=Opmerking_", "_"Baliko" Set:DC="L" Opmerking=Opmerking_", "_"Intivo" Set:RSTL'="" Opmerking=Opmerking_", "_"VERLAAGDE RUG "_RSTL Set:BM="T" Opmerking=Opmerking_", "_"TIP-ON"_$S(TipOnSyncPRNr?4.7N:"+"_$E($P(^KPR(TipOnSyncPRNr,0),"\",1),5,7),1:"") ;TIPON + Z55Sxxx Set:IsSR pxLabel.KR="Staal "_pxLabel.KR_" "_pxLabel.RH_" "_(IB-28),pxLabel.RH="",pxLabel.Bor="",pxLabel.RHNet="",pxLabel.BreedteR="" ;Stalen rug Set:(ODSP'="")&&(ODSP'["H") pxLabel.KR="--" ; herstelling zonder rugwandhouders Set:KLAS["SP" Opmerking=Opmerking_", "_$CASE(KLAS,"SP":"SP 1","SP2":"SP 2",:"")_" "_$CASE(SPZK,"S":"Smal",:"Breed"), BreedteR="" Set:KLAS["SP" pxLabel.Spoelbak = 1 Set:KLAS["SY" Opmerking=Opmerking_", "_"Sifon", BreedteR="" Set:KLAS["SY" pxLabel.Sifon = 1 Set:KLAS="B" Opmerking=Opmerking_", "_"Buro" Set:ODSP'="" Opmerking=Opmerking_", "_"**SPECIAL:"_ODSP_"**" Set pxLabel.Opm1=$E(Opmerking,$S($E(Opmerking,1)=",":3,1:1),99) Set:(BM'="T")&&(BM'="I") pxLabel.Opm2="Blumotion : "_BM_" "_pxLabel.Opm2 Set pxLabel.TOENr=$E(oQ.TOENr,4,6) Set pxLabel.BatchID=$E(oQ.BatchID,$L(oQ.BatchID)-2,$L(oQ.BatchID)) Set pxLabel.DOSNr=oQ.DOSNr Set pxLabel.VHossID=$S($isObject(oQ.WPVerpak):oQ.WPVerpak.VHossID(),1:"") Set pxLabel.Qty="("_oQ.DeelAantal_"/"_oQ.TotaalAantal_")" Set pxLabel.Picture=##class(BL.Prod.ImageLink).%New().GetProductImageURL(PRNr, "LABEL") Set pxLabel.Device=$zobjval(,4,0,0,4) Set pxLabel.Layout=$zobjval(,7,0,0,7) Quit pxLabel } zEtiketten(%this,StartNr,EndNr) public { // Print all labels except tipons Set TipOnLabelProcessor = ##class(BL.PPS.TBX.TiponLabelProcessor).%New(0) Do TipOnLabelProcessor.Init($zobjval(,4,0,0,4), $zobjval(,7,0,0,7)) Set SifonLabelProcessor = ##class(BL.PPS.TBX.SifonLabelProcessor).%New(0) Set SpoelbakLabelProcessor = ##class(BL.PPS.TBX.SpoelbakLabelProcessor).%New(0) Set MultiProcessor = ##class(BL.PPS.TBX.MultiProcessorEN).%New() Do MultiProcessor.VoegProcessorToe(TipOnLabelProcessor) Do MultiProcessor.VoegProcessorToe(SifonLabelProcessor) Do MultiProcessor.VoegProcessorToe(SpoelbakLabelProcessor) Do ..EtikettenProcessed(MultiProcessor,StartNr,EndNr) /* Tests (files on fop, Testbestanden folder): - TBXL2test1.txt -> batch with normal drawers followed by tipons followed by normal drawers - TBXL2test2.txt -> batch with tipons at the end */ } zEtikettenCommissie(%this) public { Set blLabelPrinter=##class(BL.Sys.LabelPrinter).Instantiate($zobjval(,3,0,0,3)) Set rs=##class(%Library.ResultSet).%New() Do rs.Prepare("Select BatchID, count(ID) as Aantal, Product, TOENr, TLUNr, Status from PPS.TBX_Queue where (BatchID="_$zobjval(,2,0,0,2)_") and (Status<>'PB') group by TOENr, TLUNr, Product") Do rs.Execute() For Quit:'rs.Next() Do ;berekenen van het aantal etiketten dat moet afgedrukt worden . Set PRNr=rs.Data("Product") . Set TOENr=rs.Data("TOENr") . Set TLUNr=rs.Data("TLUNr") . Set Aantal=rs.Data("Aantal") . Quit:'$D(^KTO(6332,TOENr)) . Set ASM=$S($LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"NMASM")):"",1:$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM"))) ; Antislipmat . Set VPK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) ; Verpakking . If ((VPK="A")!(VPK="B"))&(ASM'=0) Set AantASM(TOENr)=$G(AantASM(TOENr))+Aantal . If (VPK="O")!(VPK="B") Set AantOnderdelen(TOENr)=$G(AantOnderdelen(TOENr))+Aantal Set TOENr="" For Set TOENr=$O(AantASM(TOENr)) Quit:TOENr="" Do ; labels naar de bartender sturen . Set Aantal=$S(AantASM(TOENr)#5=0:AantASM(TOENr)\5,1:AantASM(TOENr)\5+1) . Set pxLabel=..EtikettenCommissieOne(TOENr,Aantal,"ANTISLIPMAT") . Do blLabelPrinter.Add(pxLabel) For Set TOENr=$O(AantOnderdelen(TOENr)) Quit:TOENr="" Do . Set Aantal=$S(AantOnderdelen(TOENr)#4=0:AantOnderdelen(TOENr)\4,1:AantOnderdelen(TOENr)\4+1) . Set pxLabel=..EtikettenCommissieOne(TOENr,Aantal,"ONDERDELEN") . Do blLabelPrinter.Add(pxLabel) Do blLabelPrinter.Print2Bartender($zobjval(,3,0,0,3)) ; eigenlijke afdruk } zEtikettenCommissieOne(%this,TOENr,Aantal,Titel) public { Set pxLabel=##class(BL.PPS.TBX.sub.pxCommissie).%New() Set xHeader=^KTO(6332,TOENr,1) Set OrderNr=$Piece(xHeader,"\",7) Set KLNr=$Piece(xHeader,"\",8) If KLNr'="" Do . Set KlantIndex=$Piece(^KK1(KLNr),"\") . Set KlantNaam=$Piece(^KKL(KlantIndex,0),"\",2) Else Set KlantNaam="" Set CommissieRef=..CommissieRef(KLNr,OrderNr) Set pxLabel=##class(BL.PPS.TBX.sub.pxCommissie).%New() If (##class(TECH.Config.ConfigMgr).Instance().GetBoolean("BL.PPS.TBX.DocsV1_LogPrintLabelsIpvTePrinten")) { Set pxLabel.Device = "\\fop\test3" } Else { Set pxLabel.Device = "Halux_Productie" } Set pxLabel.Layout="TBX Extra commissie 5x10" Set pxLabel.Logo="logo\Logo VHZwart.svg" Set pxLabel.KlantNaam=KlantNaam Set pxLabel.CommissieRef=CommissieRef Set pxLabel.OrderNr=OrderNr Set pxLabel.TOENr=TOENr Set pxLabel.Aantal=Aantal Set pxLabel.Titel=Titel Quit pxLabel } zEtikettenProcessed(%this,proc,StartNr,EndNr) public { Set blLabelPrinter=##class(BL.Sys.LabelPrinter).Instantiate($zobjval(,3,0,0,3)) ; debug off Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set Count=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Set VolgNr=rs.Data("Sequence") . Quit:'..EtiketChk(oQ) . Set pxLabel=..EtiketOne(oQ) . Quit:'$isObject(pxLabel) . Set pxLabel.VolgNr = VolgNr . Set Count=Count+1 . If proc.Process(.pxLabel) Do . . If $D(StartNr) Quit:CountEndNr . . Do blLabelPrinter.Add(pxLabel) Do:proc.PostProcess(blLabelPrinter) blLabelPrinter.Print2Bartender($zobjval(,3,0,0,3)) } zEtikettenSifon(%this,StartNr,EndNr) public { Set SifonLabelProcessor = ##class(BL.PPS.TBX.SifonLabelProcessor).%New(1) Do ..EtikettenProcessed(SifonLabelProcessor,StartNr,EndNr) } zEtikettenSpoelbak(%this,StartNr,EndNr) public { Set SpoelbakLabelProcessor = ##class(BL.PPS.TBX.SpoelbakLabelProcessor).%New(1) Do ..EtikettenProcessed(SpoelbakLabelProcessor,StartNr,EndNr) } zEtikettenSpoelbakSifon(%this,StartNr,EndNr) public { Set SifonLabelProcessor = ##class(BL.PPS.TBX.SifonLabelProcessor).%New(1) Set SpoelbakLabelProcessor = ##class(BL.PPS.TBX.SpoelbakLabelProcessor).%New(1) Set MultiProcessor = ##class(BL.PPS.TBX.MultiProcessorOF).%New() Do MultiProcessor.VoegProcessorToe(SifonLabelProcessor) Do MultiProcessor.VoegProcessorToe(SpoelbakLabelProcessor) Do ..EtikettenProcessed(MultiProcessor,StartNr,EndNr) } zEtikettenTipon(%this,StartNr,EndNr) public { // Print only the labels for tipon Set TipOnLabelProcessor = ##class(BL.PPS.TBX.TiponLabelProcessor).%New(1) Do TipOnLabelProcessor.Init($zobjval(,4,0,0,4), $zobjval(,7,0,0,7)) Do ..EtikettenProcessed(TipOnLabelProcessor,StartNr,EndNr) } zFrontCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Dossier=$P(Rec,"\",5) Set Fmt="BL\;1" Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit Fmt zFrontChk(%this,oQ) public { Quit:oQ.DeelAantal>1 0 ; Slechts 1 keer voorkomen Set PRNr=oQ.ProductGetObjectId() Quit:..IsSpoel(PRNr) 0 Set LT=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LT")) ; Front type Quit LT="B" ; alleen binnenlades } zFrontLijst(%this,BatchID,BatchList) public { ; Sorteren Set Label="F" Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set (Count,FrontCnt)=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:'..FrontChk(oQ) . Set Rec=..FrontOne(..BldBasisFromQueue(oQ)) . Set:$L(Rec) ^HULP($zobjval(,1,0,0,1),Label,$I(Count))=Rec . Set FrontCnt=FrontCnt+oQ.TotaalAantal ; Output ; Basis + 10:Opmerking Quit:'$D(^HULP($zobjval(,1,0,0,1),Label)) 0 Do INIT^vhLISTO("HATBXLEAN","PRINT",.PLD) Set PLD(5)=70 Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label)) Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").FrontCB" Set PLD(11)="TBX FRONT\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set PLD("HALUX")="" Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemDossier,%MemTOENr Quit FrontCnt } zFrontOne(%this,Basis) public { Set PRNr=$P(Basis,"\") Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen speciaal ; netto breedte Set Rec="" Set:ODSP="F" Rec="**SPECIAL:"_ODSP_"**" Set $P(Basis,"\",10)=Rec Quit Basis } zGlasSnijCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Dossier=$P(Rec,"\",5) Set Fmt="BL\;1" Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit "" ;Fmt zGlasSnijChk(%this,oQ) public { Quit:oQ.DeelAantal>1 0 ; Set PRNr=oQ.ProductGetObjectId() Set API = ##class(DOM.DomeinContext).Instance().GeefProductAPI() Set TandemBox = API.GeefProduct(PRNr) Quit TandemBox.BevatInTeKortenGlas() } zGlasSnijLijst(%this) ; Sorteren Set Label="S" Kill ^HULP($zobjval(,1,0,0,1),Label) Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set (Count,GlasSnijCnt)=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:'..GlasSnijChk(oQ) . Set Resultaat=..GlasSnijOne(..BldBasisFromQueue(oQ)) . For i=1:1:$LL(Resultaat) DO . . Set Rec=$LG(Resultaat,i) . . Set:$L(Rec) ^HULP($zobjval(,1,0,0,1),Label,$I(Count))=Rec . . Set GlasSnijCnt=GlasSnijCnt+oQ.TotaalAantal ; Output ; Basis + 10:Aantal, 11:Lengte, 12:RugHoogte, 13:Type, 14:ProductNaam Quit:'$D(^HULP($zobjval(,1,0,0,1),Label)) 0 Do INIT^vhLISTO("HATBXLEAN","GLASSNIJLIJST",.PLD) Set PLD("HALUX")="" Set PLD(5)=75 Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label)) Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").GlasSnijCB" Set PLD(11)="TBX Snijlijst Glas\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemDossier,%MemTOENr Quit GlasSnijCnt zGlasSnijOne(%this,Basis,Aantal) public { // Code geschreven door PV --> aangepast door CSC --> uitgebreid door WV // Datum laatste wijziging : 19/01/2011 // // Een deel van de code maakt reeds gebruik van de enclapsulatie (TBX) // Verdere encapsulatie (GeefRugHoogte(), ... ) kan nog doorgevoerd worden. // // INFO: // Aantal snijdingen = Aantal "stukken" glas te snijden en door te geven om in tandembox te plaatsen // Aantal pickingen = Aantal "stroken" glas te picken uit magazijn die nog bewerkt moeten worden Set Resultaat="" Set PRNr=$P(Basis,"\",1) Set API = ##class(DOM.DomeinContext).Instance().GeefProductAPI() Set TandemBox = API.GeefProduct(PRNr) // Front glas snijden (Meer algemeen uitgedrukt : Front inschijfelement inkorten) Set MoetFrontGlasInkorten=TandemBox.BevatInTeKortenFrontGlas() ; ($D(^PRBS("BS",PRNr,"PRFRGLAS.001")))||($D(^PRBS("BS",PRNr,"PRFRGLASSTRK.001"))) If (MoetFrontGlasInkorten) { If ($D(^PRBS("BS",PRNr,"PRFRGLASSTRK.001"))) { Set GlasSnij1=$P($G(^PRBS("BS",PRNr,"PRFRGLASSTRK.001","D")),"\",1) ; D-subnode : Dimensie-gegevens Set xGlas1=^PRBS("BS",PRNr,"PRFRGLASSTRK.001") Set SnijdenUitStrook=1 } Else { Set GlasSnij1=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB"))-118 Set xGlas1=^PRBS("BS",PRNr,"PRFRGLAS.001") Set SnijdenUitStrook=0 } Set KPRNr1=$P(xGlas1,"\") Set AantalSnijdingen1=$Piece(Basis,"\",2)*$Piece(xGlas1,"\",2) If (SnijdenUitStrook) { Set GlasDimBrut1=$P($G(^PRBS("BS",PRNr,"PRFRGLASSTRK.001","D")),"\",2) ; D-subnode : Dimensie-gegevens Set AantalPickingen1=##class(BL.PPS.TBX.DocsV1).TelMagazijnStuks(KPRNr1,AantalSnijdingen1,1,GlasDimBrut1) } Else { Set AantalPickingen1=AantalSnijdingen1 } Set:(AantalSnijdingen1<10) AantalSnijdingen1=" "_AantalSnijdingen1 Set:(AantalPickingen1<10) AantalPickingen1=" "_AantalPickingen1 Set KortTekst1=$Piece(^KPR(KPRNr1,0),"\") Set PType="Front" Set RugHoogte=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RH")) Set Kleur=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",KPRNr1,"Kleur")) ;b "s+" Set Rec1=AantalPickingen1_":"_AantalSnijdingen1_"\"_GlasSnij1_"\"_RugHoogte_"\"_PType_"\"_KortTekst1_"\"_Kleur Set $Piece(Basis,"\",10)=Rec1 Set Resultaat=$LB(Basis) } // Zijwand glas snijden, tenzij exact (BOXCOVER) (Meer algemeen uitgedrukt : Zijwand inschuifelement inkorten) Set MoetZijwandGlasInkorten=TandemBox.BevatInTeKortenZijkantGlas() ; $D(^PRBS("BS",PRNr,"PRBXKGSTRK.001")) || ($D(^PRBS("BS",PRNr,"PRBXKG.001")) en (LadeDiepte HF verschillend)) If (MoetZijwandGlasInkorten) { If ($D(^PRBS("BS",PRNr,"PRBXKGSTRK.001"))) { Set GlasSnij2=$P($G(^PRBS("BS",PRNr,"PRBXKGSTRK.001","D")),"\",1) ; D-subnode : Dimensie-gegevens Set xGlas2=^PRBS("BS",PRNr,"PRBXKGSTRK.001") Set SnijdenUitStrook=1 } Else { Set GlasSnij2=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD"))-60 Set xGlas2=^PRBS("BS",PRNr,"PRBXKG.001") Set KPRNr2=$P(xGlas2,"\",1) Set SnijdenUitStrook=0 } Set KPRNr2=$P(xGlas2,"\",1) Set AantalSnijdingen2=$Piece(Basis,"\",2)*2 ;$Piece(xGlas2,"\",2) If (SnijdenUitStrook) { Set GlasDimBrut2=$P($G(^PRBS("BS",PRNr,"PRBXKGSTRK.001","D")),"\",2) ; D-subnode : Dimensie-gegevens Set AantalPickingen2=##class(BL.PPS.TBX.DocsV1).TelMagazijnStuks(KPRNr2,AantalSnijdingen2,1,GlasDimBrut2) } Else { Set AantalPickingen2=$Piece(Basis,"\",2)*$Piece(xGlas2,"\",2) } Set:(AantalSnijdingen2<10) AantalSnijdingen2=" "_AantalSnijdingen2 Set:(AantalPickingen2<10) AantalPickingen2=" "_AantalPickingen2 Set KortTekst2=$Piece(^KPR(KPRNr2,0),"\") Set PType="Zijkant" Set RugHoogte=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",KPRNr2,"RugHoogte")) Set Kleur=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",KPRNr2,"Kleur")) ;b "s+" Set Rec2=AantalPickingen2_":"_AantalSnijdingen2_"\"_GlasSnij2_"\"_RugHoogte_"\"_PType_"\"_KortTekst2_"\"_Kleur Set $Piece(Basis,"\",10)=Rec2 Set Resultaat=Resultaat_$LB(Basis) } Quit Resultaat } zInit(%this,BatchID,ProdGrp,LabelDevice,FOPDevice) public { Set $zobjval(,4,0,0,4)=$G(LabelDevice,"Halux_Productie") Set $zobjval(,7,0,0,7)="TBX Productie" Set $zobjval(,5,0,0,5)=$G(LabelDevice,"Halux_Productie_Keller") Set $zobjval(,6,0,0,6)="KlantTBX5x10v3" Set $zobjval(,2,0,0,2)=$G(BatchID) If BatchID'="" Set $zobjval(,8,0,0,8)=$S(##class(DS.PPS.TBX.Batch).%ExistsId(BatchID):##class(DS.PPS.TBX.Batch).%OpenId(BatchID).Line,1:"") Set $zobjval(,9,0,0,9)=$G(ProdGrp,"S") Set $zobjval(,1,0,0,1)=$$%J^vhRtn1() Kill ^HULP($zobjval(,1,0,0,1)) } zInstantiate(Debug) public { Set bl=##class(BL.PPS.TBX.DocsV1).%New() Set bl.Debug=$G(Debug) Quit bl } zIsSpoel(%this,PRNr) public { Set KLAS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) Quit:KLAS'?1(1"L",1"B") 1 ; Geen lade of burolade dus spoelbak Set DC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC")) Quit:DC="B" 2 ; Baliko Quit 0 } zKlantEtiketChk(%this,oQ) public { Set PRNr=oQ.ProductGetObjectId() Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen Special Quit ODSP'="F" } zKlantEtiketOne(%this,oQ) public { Set pxLabel=##class(BL.PPS.TBX.sub.pxLabelKlant).%New() Do General(oQ.KlantGetObjectId(),oQ.TOENr,oQ.TLUNr,oQ.BatchID,pxLabel) Do Product(oQ.ProductGetObjectId(),$S($isObject(oQ.WPVerpak):oQ.WPVerpak.VHossID(),1:""),pxLabel) Set pxLabel.Device=$zobjval(,5,0,0,5) Set pxLabel.Layout=$zobjval(,6,0,0,6) Quit pxLabel General(KLNr,TOENr,TLUNr,BatchID,pxLabel) Set TLNr=$G(^TO("IU",TOENr,TLUNr),"*") Set ORDNr=$P($G(^KTO(6332,TOENr,TLNr)),"\",27) ; KOMLink Set OLNr=$P($G(^KTO(6332,TOENr,TLNr)),"\",28) ; KOMLink Set pxLabel.OrderRef=$$OrderRef(KLNr,ORDNr,OLNr) Set ProjectRef=$S('OLNr:"",1:$P($G(^KOD(KLNr,"F",ORDNr,OLNr)),"\",5)) Set:$L(ProjectRef) pxLabel.OrderRef=ProjectRef ; Projectreferentie is belangrijker dan de orderreferentie Do AdresOrder(ORDNr,KLNr,pxLabel) If (KLNr=7833)||(KLNr=6279) Set pxLabel.KlantNaamBig=$$UPTRIMAN^vhRtn1(pxLabel.OrderRef) ; Voor Hein en Optima ; Indien contract dan leverweek van toelevering If TOENr,TLNr,$D(^KTO(6332,TOENr,TLNr)) Do . Set pxLabel.ProdWk=$TR($P(^KTO(6332,TOENr,TLNr),"\",25),"/","") Else Do . Set pxLabel.ProdWk=$TR($S('OLNr:"",1:$P($G(^KOD(KLNr,"F",ORDNr,OLNr)),"\",25)),"/","") Set Taal=$S(KLNr:$P(^KKL(^KK1(KLNr),0),"\",9),1:"") Set:(Taal'="F")&&(Taal'="D") Taal="N" Set pxLabel.Taal=Taal If KLNr=4855 Set pxLabel.KlantBarcode=pxLabel.OrderRef,pxLabel.KlantBarcodeTxt=pxLabel.OrderRef ; Neves Set:$G(KLNr)&&($D(^IPCom("CS","LOGO"_KLNr,0))) pxLabel.LogoImg="LOGO\"_^IPCom("CS","LOGO"_KLNr,0) Set:pxLabel.LogoImg="" pxLabel.LogoImg="LOGO\"_^IPCom("CS","LOGO"_4682,0) ; default Van Hoecke Set pxLabel.ORDNr=ORDNr Set pxLabel.TOENr=TOENr Set pxLabel.BatchID=BatchID If oQ.Status="PB" Set pxLabel.Opmerking="|" ; er wordt een streep toegevoegd aan de rechterkant van het etiket Quit AdresOrder(ORDNr,KLNr,pxLabel) Set Adres="" Set:KLNr&&ORDNr Adres=$G(^KOD(KLNr,"F",ORDNr,3)) Set:($L($TR(Adres,"\",""))<5)&&KLNr Adres=^KKL(^KK1(KLNr),0) ; Geen of onvoldoende adres Set pxLabel.KlantNaam=$P(Adres,"\",2) Set pxLabel.KlantNr=KLNr Set pxLabel.KlantNaamBig=$$TRIMNAAM^vhRtn1(pxLabel.KlantNaam,1) Set:(KLNr=8545) pxLabel.KlantNaamBig="I.SCHREURS" ; Speciaal toegevoegd om verwarring te vermijden met 3760 - PV - 13-09-05 Set:(KLNr=4451) pxLabel.KlantNaam="@4451",pxLabel.KlantNaamBig="4451" ; Assenti Set:(KLNr=1300) pxLabel.KlantNaamBig="OSTE K" ; Speciaal toegevoegd op vraag van klant - PV - 21-04-08 Set pxLabel.Toenaam=$P(Adres,"\",3) Set pxLabel.Straat=$P(Adres,"\",5) Set pxLabel.PostCode=$S($E($P(Adres,"\",6),1,2)="NL":"NL",$P(Adres,"\",6)?4N:"",1:$P(Adres,"\",6)) Set pxLabel.Gemeente=$E($P(Adres,"\",7),1,18) Quit OrderRef(KLNr,ORDNr,OLNr) ; Referentie opzoeken in leveringsbon indien order reeds op bon gezet Quit:'ORDNr "VOORRAAD" Set OrdRef="" If KLNr,ORDNr,OLNr Set OrdRef=$P($G(^KOD(KLNr,"F",ORDNr,OLNr)),"\",19) ; Klantcomm. ref If KLNr,ORDNr,OrdRef="" Set OrdRef=$P($G(^KOD(KLNr,"F",ORDNr,1)),"\",3) ; rderref If $E(OrdRef,1,3)="EDI" Set $E(OrdRef,1,3)="",OrdRef=$TR(OrdRef," ","") If (OrdRef?1.2N1"."1.2N1"."2N1" ".E)||(OrdRef?1.2N1"/"1.2N1"/"2N1" ".E)||(OrdRef?1.2N1"-"1.2N1"-"2N1" ".E) Set OrdRef=$P(OrdRef," ",2,99) Quit OrdRef Product(PRNr,VHossID,pxLabel) Set pxLabel.BreedteCorpus=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"CB")) ; Corpus breedte Set pxLabel.Diepte=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) ; Ladediepte Set pxLabel.WandDikte=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"WD")) ; Wanddikte Set pxLabel.Kleur=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KL")) ; Kleur Set pxLabel.Verpak=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) ; Verpakking Set pxLabel.LadeCode=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) ; LadeCode Set pxLabel.KortTekst=$P(^KPR(PRNr,0),"\") Set pxLabel.IdentNr=$P(^KPR(PRNr,2),"\",25) Set pxLabel.Kleur=$E(pxLabel.KortTekst,22,23)_"/"_$E(pxLabel.KortTekst,24,25) Set pxLabel.DossierBarcodeTxt=$$BARCODE^HAD(PRNr,"F") Set pxLabel.DossierBarcode=$TR(pxLabel.DossierBarcodeTxt,".") Set pxLabel.VHossID=$G(VHossID) Set pxLabel.ProdImg=##class(BL.Prod.ImageLink).%New().GetProductImageURL(PRNr, "LABEL") Quit } zKlantEtiketten(%this,StartNr,EndNr) public { Set blLabelPrinter=##class(BL.Sys.LabelPrinter).Instantiate($zobjval(,3,0,0,3)) Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set Count=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Set VolgNr=rs.Data("Sequence") . If $D(StartNr) Quit:VolgNrEndNr . Quit:'..KlantEtiketChk(oQ) . Set pxLabel=..KlantEtiketOne(oQ) . Quit:'$isObject(pxLabel) . Do blLabelPrinter.Add(pxLabel) . Set Count=Count+1 Do blLabelPrinter.Print2Bartender($zobjval(,3,0,0,3)) } zLadeZijkantBakCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set Verpak=$P(Rec,"\",19) Set Fmt=";1" Set:%MemVerpak'=Verpak&&(%MemVerpak'="") Fmt="BL\;1" Set %MemVerpak=Verpak Quit Fmt zLadeZijkantBakLijst(%this,BatchID,BatchList) public { ;Set %J=$$%J^vhRtn1() ;Kill ^HULP(..%J) Set Label1="Z1" Set Label2="Z2" Set Count=0 Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:..IsSpoel(oQ.ProductGetObjectId()) . Set Rec=..LadeZijkantBakOne(..BldBasisFromQueue(oQ)) . Quit:Rec="" . Set ^HULP($zobjval(,1,0,0,1),Label1,$I(Count))=Rec . ; Basis + 10: LadeDiepte \ ZijHoogte \ Design \ Kleur \ Draagkracht \ IsSR \ Verpak \ ZijPRNr \ ZijKortTekst \ Doos \ Opmerking Quit:'$D(^HULP($zobjval(,1,0,0,1),Label1)) Do ..Transform2Bak(Label1,Label2) ; opdelen in bakjes Do INIT^vhLISTO("HATBXLEAN","LADEZIJKANT",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label2)) Set PLD(5)=80 Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").LadeZijkantBakCB" Set PLD(11)="TBX ZIJKANTEN\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set (%MemVerpak,%MemDossier,%MemTOENr)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemVerpak,%MemDossier,%MemTOENr Quit } zLadeZijkantBakOne(%this,Basis) public { Set Rec="" Set Opmerking="" Set PRNr=$P(Basis,"\",1) Set DC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC")) ; Designcode Set LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) ; Ladediepte Set LC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) ; LadeCode Set KL=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KL")) ; Kleurlade Set DK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK")) ; Draagkracht Set KLAS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) ; Klasse (Spoelbak, Lade, ...) Set ZWH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ZW")) ; Zijwandhoogte Set IsSR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Set KL=KL_$CASE(DC,"S":"","B":"","I":"-A"_$S((ZWH)="L":"2",1:""),"MA":"-A",:"-"_DC) If DK=25 Set DK="I" Else If DK=80 Set DK="80" Else Set DK="" Set ZijPRNr=$P($G(^PRBS("BS",PRNr,"PRLALI.001")),"\",1) Quit:ZijPRNr'?4.7N "" Set KortTekst=$P(^KPR(ZijPRNr,0),"\") Set VPK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",ZijPRNr,"Verpakking")) ; Verpakking van de ladezijkant Set:VPK["I" VPK="" Set Rec=LD_"\"_ZWH_"\"_DC_"\"_KL_"\"_DK_"\"_IsSR_"\"_VPK_"\"_ZijPRNr_"\"_KortTekst Set $P(Basis,"\",10)=Rec Quit Basis } zMatCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Dossier=$P(Rec,"\",5) Set Fmt="BL\;1" Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit Fmt zMatChk(%this,oQ) public { Quit:oQ.DeelAantal>1 0 ; Slechts 1 keer voorkomen Set PRNr=oQ.ProductGetObjectId() Quit:..IsSpoel(PRNr) 0 ; spoelbak laden worden apart verwerkt Set StdProd=$G(^PRBS("BS",PRNr,"PRASM.001")) Quit:$L(StdProd) 1 Set StrkProd=$G(^PRBS("BS",PRNr,"PRASMSTRK.001")) Set Dim=$P($G(^PRBS("BS",PRNr,"PRASMSTRK.001","D")),"\") Quit:$L(StrkProd)&&Dim 1 Set RolProd=$G(^PRBS("BS",PRNr,"PRASMROL.001")) Set Dim=$P($G(^PRBS("BS",PRNr,"PRASMROL.001","D")),"\") Quit:$L(RolProd)&&Dim 1 Quit 0 } zMatLijst(%this,BatchID,BatchList) public { ; Sorteren Set Label="M" Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set (Count,MatCnt)=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:'..MatChk(oQ) . Set Rec=..MatOne(..BldBasisFromQueue(oQ)) . Set:$L(Rec) ^HULP($zobjval(,1,0,0,1),Label,$I(Count))=Rec . Set MatCnt=MatCnt+oQ.TotaalAantal ; Output ; Basis + 10:KleurMat, 11:LadeDiepte, 12:Lengte, 13:TussenLengte, 14:Opmerking Quit:'$D(^HULP($zobjval(,1,0,0,1),Label)) 0 Do INIT^vhLISTO("HATBXLEAN","MAT",.PLD) Set PLD("HALUX")="" Set PLD(5)=70 Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label)) Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").MatCB" Set PLD(11)="TBX MAT\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemDossier,%MemTOENr Quit MatCnt } zMatOne(%this,Basis) public { Set PRNr=$P(Basis,"\",1) Set ASM=$S($LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"NMASM")):"",1:$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM"))) ; Antislipmat Quit:0[ASM Set KPRNr=$P($G(^PRBS("BS",PRNr,"PRASM.001")),"\",1) If KPRNr Do . Set Dim=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",KPRNr,"BreedteIntern"))-85 . Set Opmerking=", "_$$Get^PRODUKT(KPRNr,"101") Else Do ;Strook . Set KPRNr=$P($G(^PRBS("BS",PRNr,"PRASMSTRK.001")),"\",1) . If KPRNr Do . . Set Dim=$P($G(^PRBS("BS",PRNr,"PRASMSTRK.001","D")),"\") . . Set Opmerking=", "_$$Get^PRODUKT(KPRNr,"101") . Else Do ; Rol . . Set KPRNr=$P($G(^PRBS("BS",PRNr,"PRASMROL.001")),"\",1) . . If KPRNr Do . . . Set Dim=$P($G(^PRBS("BS",PRNr,"PRASMROL.001","D")),"\") . . . Set Opmerking="" Set LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) ; Ladediepte Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Interne breedte Set IsSR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Set KLAS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KLAS")) ; Klasse (Spoelbak, Lade, ...) ;Set SPZK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"SPZK")) ; Spoelbak zijkant Set MatOpties = $LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",KPRNr,"Opties")) ; Mat opties Set Type=$S(MatOpties["AGO":"AGO",1:"") /* Set KPRNr=$P($G(^PRBS("BS",PRNr,"PRTUSASMROL.001")),"\",1) Set TusDim=$P($G(^PRBS("BS",PRNr,"PRTUSASMROL.001","D")),"\") Set:KLAS["SP" Opmerking=Opmerking_", "_$CASE(KLAS,"SP":"SP 1","SP2":"SP 2",:"")_" "_$CASE(SPZK,"S":"Smal",:"Breed") */ Set:IsSR Opmerking=Opmerking_", "_"Staalrug" Set:ODSP'="" Opmerking=Opmerking_", "_"**SPECIAL:"_ODSP_"**" Set $E(Opmerking,1,2)="" Set Rec=$Case(ASM,"Z":"Zwart","R":"Rood","G":"Grijs",:"")_"\"_(LD-27)_"\"_Dim_"\"_Type_"\"_Opmerking Set $P(Basis,"\",10)=Rec Quit Basis } zMetInkeeping(PRNr) public { Set BodemPRNr=$P($G(^PRBS("BS",PRNr,"PRBDHO.001")),"\",1) ; meest voorkomend Set:BodemPRNr'?4.7N BodemPRNr=$P($G(^PRBS("BS",PRNr,"PRBDHZ.001")),"\",1) ; reeds op maat ;w BodemPRNr If BodemPRNr'?4.7N Do ; Niet gevonden zoeken naar bodem . Set BSKey="" . For Set BSKey=$O(^PRBS("BS",PRNr,BSKey)) Quit:BSKey="" Do . . Set TempPRNr=$P($G(^PRBS("BS",PRNr,BSKey)),"\") . . Quit:'TempPRNr . . ;w ^KPR(TempPRNr,0) . . Set:$P($G(^KPR(TempPRNr,0)),"\")?1"SPP"1E1"B"1.E BodemPRNr=TempPRNr Set MetInkeeping=0 Set:BodemPRNr&&($LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",BodemPRNr,"Opties"))="INKEPING") MetInkeeping=1 Quit $G(MetInkeeping) } zOnderdelenCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Dossier=$P(Rec,"\",5) Set Fmt=";1" Set:%MemDossier'=Dossier&(%MemDossier'="") Fmt="BL\;1" Set %MemDossier=Dossier Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit Fmt zOnderdelenLijst(%this,BatchID,BatchList) public { ; Sorteren Set Label="O" ; Ophalen data Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set Count=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:..IsSpoel(oQ.ProductGetObjectId()) . Set Rec=..OnderdelenOne(..BldBasisFromQueue(oQ)) . Set:$L(Rec) ^HULP($zobjval(,1,0,0,1),Label,$I(Count))=Rec ; Output ; Basis + 10:Opmerking Quit:'$D(^HULP($zobjval(,1,0,0,1),Label)) Do INIT^vhLISTO("HATBXLEAN","PRINT",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label)) Set PLD(5)=70 Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").OnderdelenCB" Set PLD(11)="TBX ONDERDELEN\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) ;zw PLD Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemTOENr,%MemDossier Quit } zOnderdelenOne(%this,Basis) public { Set Rec="" Set PRNr=$P(Basis,"\") Set Opmerking="" Set IsSR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen special Set:IsSR Opmerking=Opmerking_", "_"Staalrug" Set:ODSP'="" Opmerking=Opmerking_", "_"**SPECIAL:"_ODSP_"**" Set $E(Opmerking,1,2)="" Set Rec=Opmerking Set $P(Basis,"\",10)=Rec Quit Basis } zPalletEtiketOne(%this,Type) public { If '$D(Type) Set Type="SFS" Set pxLabel=##class(BL.PPS.TBX.sub.pxLabelPallet).%New() If (##class(TECH.Config.ConfigMgr).Instance().GetBoolean("BL.PPS.TBX.DocsV1_LogPrintLabelsIpvTePrinten")) { Set pxLabel.Device="\\fop\test3" } Else { Set pxLabel.Device=$zobjval(,4,0,0,4) } Set pxLabel.Layout="TBX PalletID 5x10" If Type="SFS" Do . Set pxLabel.LogoImg="logo\logo SFS Unimarket 12486.jpg" Else Set pxLabel.LogoImg1="logo\logo vhzwart.jpg" Set LocId=$I(^RES("EWPAL","CNT","TBX")) If LocId>999999 Set LocId=1,^RES("EWPAL","CNT","TBX")=LocId Set pxLabel.Barcode=$S(Type="SFS":"SFS",1:"TBX")_$TR($J(LocId,5)," ","0") Set pxLabel.BarcodeTxt=$E(pxLabel.Barcode,1,4)_" "_$E(pxLabel.Barcode,5,8) Quit pxLabel } zPalletEtiketten(%this) public { If '..BevatSFS() Do ..PalletEtikettenNietSFS() Quit Set blLabelPrinter=##class(BL.Sys.LabelPrinter).Instantiate($zobjval(,3,0,0,3)) Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) ; aantal laden Set Count=0 For Quit:'rs.Next() Do . Quit:rs.Data("Status")="PB" ; sequencelijnen met status "PB" worden overgeslagen . Set Count=Count+1 ; etiket per theoretisch pallet For Count2=1:1:((Count+10-1)\10) Do . Set pxLabel=..PalletEtiketOne() . Quit:'$isObject(pxLabel) . Do blLabelPrinter.Add(pxLabel) Do blLabelPrinter.Print2Bartender($zobjval(,3,0,0,3)) } zPalletEtikettenNietSFS(%this) public { Set blLabelPrinter=##class(BL.Sys.LabelPrinter).Instantiate($zobjval(,3,0,0,3)) Set rs=##class(%Library.ResultSet).%New() Do rs.Prepare("Select TOENr, Count(*) As Aantal from PPS.TBX_Queue where (BatchID="_$zobjval(,2,0,0,2)_") and (Status<>'PB') group by TOENr") Do rs.Execute() For Quit:'rs.Next() Do ;berekenen van het aantal etiketten dat moet afgedrukt worden . Set TOENr=rs.Data("TOENr") . Set AantalLijnen(TOENr)=rs.Data("Aantal") Set TOENr="" For Set TOENr=$O(AantalLijnen(TOENr)) Quit:TOENr="" Do . Set Aantal=$S(AantalLijnen(TOENr)#6=0:AantalLijnen(TOENr)\6,1:AantalLijnen(TOENr)\6+1) . For i=1:1:Aantal Do . . Set pxLabel=..PalletEtiketOne("TBX") . . Quit:'$isObject(pxLabel) . . Do blLabelPrinter.Add(pxLabel) Do blLabelPrinter.Print2Bartender($zobjval(,3,0,0,3)) } zPrintDocs(%this,Opties,QtyFront,QtyMat,StartNr,EndNr) public { /* VRIJE LETTERS, GELIEVE TE UPDATEN BIJ GEBRUIK / / H Y / */ Set Opties=$G(Opties,"ELZOFKMRT") Set:Opties["Z" QtyTot=..ZaagLijst() Do:Opties["O" ..OnderdelenLijst() Set:Opties["F" QtyFront=..FrontLijst() Set:Opties["M" QtyMat=..MatLijst() ;Do:Opties["V" ..Verbruik() Do:Opties["L" ..LadeZijkantBakLijst() Do:Opties["E" ..Etiketten(StartNr,EndNr) Do:Opties["R" ..StaalRugLijst() Do:Opties["S" ..StaalRugOverzicht() Do:Opties["K" ..KlantEtiketten(StartNr,EndNr) Do:Opties["P" ..PalletEtiketten() Do:Opties["T" ..EtikettenTipon(StartNr,EndNr) Do:Opties["N" ..EtikettenSifon(StartNr,EndNr) Do:Opties["Q" ..EtikettenSpoelbak(StartNr,EndNr) Do:Opties["C" ..EtikettenCommissie() Do:Opties["G" ..GlasSnijLijst() Do:Opties["I" ..RelingInkortenLijst() // Controleer voor errors op de frees indien etiketten voor tipons, sifons of spoelbakken zijn afgedrukt If ((Opties["U") || (Opties["W")) { Do ##class(APPS.PM.Maatwerk.TBX.Frees.Generator).%New($zobjval(,2,0,0,2)).GenerateFiles(Opties["W",Opties["W",Opties["U") Do ##class(BL.PPS.TBX.DocsV1).ControleerErrorsFrees($zobjval(,2,0,0,2)) } ;update in batch Set oBatch=##class(DS.PPS.TBX.Batch).%OpenId($zobjval(,2,0,0,2)) Set PrintList=oBatch.PrintList For i=1:1:$L(Opties) Do . Set Optie=$E(Opties,i) . If Optie="P" Set Optie="PA" . If '$LF(PrintList,Optie) Set PrintList=PrintList_$LB(Optie) Set oBatch.PrintList=PrintList Do oBatch.%Save() } zRelingInkortenLijst(%this) public { Set API = ##class(DOM.DomeinContext).Instance().GeefProductAPI() Set Document = ##class(TECH.Print.Kolommen.Document).%New("RelingInkortenLijst","In te korten relingen","Batch ID: "_$zobjval(,2,0,0,2)) Set DataLijnen = ##class(%Library.ListOfDataTypes).%New() Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) While rs.Next() { Quit:rs.Data("Status")="PB" ; sequencelijnen met status "PB" worden overgeslagen Do DataLijnen.Insert(rs.Data("ID")_"\"_rs.Data("Status")_"\"_rs.Data("Product")) } Do Document.VoegLijnToe("\\\\\\","\") Do Document.VoegLijnToe("\\\\\\PICKING","\") Do Document.VoegLijnToe("\\\\\\","\") Set Aantallen = ##class(%Library.ArrayOfDataTypes).%New() Set Iterator = ##class(TECH.ListIterator).%New(DataLijnen) While Iterator.HasNext() { Set DataLijn = Iterator.Next() Set PRNr = $Piece(DataLijn,"\",3) Set TandemBox = API.GeefProduct(PRNr) If (TandemBox.BevatInTeKortenReling()) { Set RelingPRNr = TandemBox.GeefReling().GeefPRNr() Set RelingBouwsteen = ##class(DOM.PR.BouwStenen.BouwSteen).%OpenId(PRNr_"||"_"PRRL.001") Set Aantal = RelingBouwsteen.Aantal Do Aantallen.SetAt(Aantallen.GetAt(RelingPRNr)+Aantal,RelingPRNr) If (TandemBox.BevatTussenReling()) { Set RelingPRNr = TandemBox.GeefTussenReling().GeefPRNr() Do Aantallen.SetAt(Aantallen.GetAt(RelingPRNr)+Aantal,RelingPRNr) } } } Set i = 1 Set Iterator = ##class(TECH.ListIterator).%New(Aantallen) While (Iterator.HasNext()) { Set Aantal = Iterator.Next() Set PRNr = Iterator.Key() Set Reling = API.GeefProduct(PRNr) Do ..VoegRelingToeAanDocument(i, Reling, Document, Aantal, "", "") Set i = i + 1 } Do Document.VoegLijnToe("\\\\\\","\") Do Document.VoegLijnToe("\\\\\\INKORTEN","\") Do Document.VoegLijnToe("\\\\\\","\") // In te korten relingen opbouwen Set i = 1 Set Iterator = ##class(TECH.ListIterator).%New(DataLijnen) While Iterator.HasNext() { Set DataLijn = Iterator.Next() Set Status = $Piece(DataLijn,"\",2) Set PRNr = $Piece(DataLijn,"\",3) Set TandemBox = API.GeefProduct(PRNr) If (TandemBox.BevatInTeKortenReling()) { Set oQ = ##class(DS.PPS.TBX.Queue).%OpenId($Piece(DataLijn,"\",1)) Set ToeDos = $E(oQ.TOENr,4,6)_":"_$E(oQ.DOSNr,1,4) Set Reling = TandemBox.GeefReling() Set Lengte = ##class(DOM.PM.Maatwerk.TBX.HalffabrikaatUtils).GeefRelingLengteNaInkorten(PRNr,Reling.GeefPRNr()) Set RelingBouwsteen = ##class(DOM.PR.BouwStenen.BouwSteen).%OpenId(PRNr_"||PRRL.001") Set Aantal = RelingBouwsteen.Aantal Set RelingAantal = Aantal Set Verpakking = Reling.GeefVerpakking() If (Verpakking '= ##class(DOM.PM.enu.Verpakking).Industrie()) { Set RelingAantal = Aantal * 2 } Do ..VoegRelingToeAanDocument(i, Reling, Document, Aantal_":"_RelingAantal, ToeDos, Lengte) If (TandemBox.BevatTussenReling()) { Do ..VoegRelingToeAanDocument(i, TandemBox.GeefTussenReling(), Document, Aantal, ToeDos, Lengte) } Set i = i + 1 } } If (Aantallen.Count() > 0) { Do Document.PrintDocument("HALUX",##class(TECH.Config.ConfigMgr).Instance().GetBoolean("PrintLijstenOpScherm")) } } zRugHoogteInMM(%this,RH) public { quit $Case(RH,"N":69,"M":84,"K":116,"B":135,"C":167,"D":199,:"") } zStaalRugCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Fmt=";1" Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit Fmt zStaalRugLijst(%this,BatchID,BatchList) public { ; Sorteren Set Label1="R1" Set Label2="R2" ; Ophalen data Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Set PRNr=oQ.ProductGetObjectId() . Quit:..IsSpoel(PRNr) . Set (Basis1,Basis2)=..BldBasisFromQueue(oQ) . Do ..StaalRugOne(PRNr,.Detail1,.Detail2) . ;b "s+" . If $L(Detail1) Do . . Set $P(Basis1,"\",10)=Detail1 . . Set:$P(Basis1,"\",13)=1 $P(Basis1,"\",13)="" ; HFQty . . Set ^HULP($zobjval(,1,0,0,1),Label2,$O(^HULP($zobjval(,1,0,0,1),Label2,""),-1)+1)=Basis1 . If $L(Detail2) Do . . Set $P(Basis2,"\",10)=Detail2 . . Set ^HULP($zobjval(,1,0,0,1),Label2,$O(^HULP($zobjval(,1,0,0,1),Label2,""),-1)+1)=Basis2 ; Output ; Basis + 10: RugKleur \ RugHoogte \ BreedteRug \ Aantal \ Opmerking \ HFPRNr \ KortTekst Quit:'$D(^HULP($zobjval(,1,0,0,1),Label2)) Do INIT^vhLISTO("HATBXLEAN","STAALRUG",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label2)) Set PLD(5)=77 Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").StaalRugCB" Set PLD(11)="TBX STALENRUG\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemDossier,%MemTOENr Quit } zStaalRugOne(%this,PRNr,Rec1,Rec2) public { Set (Rec1,Rec2)="" Set Opmerking="" Set IsSR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IsSR")) ; Stalenrug Quit:'IsSR "" Set KR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KR")) ; KleurRug Set RH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RH")) ; RugHoogte Set IB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB")) ; Interne breedte Set BSKey=$O(^PRBS("BS",PRNr,"PRSRUG.")) If $E(BSKey,1,$L("PRSRUG."))="PRSRUG." Do . Set BSRec=^PRBS("BS",PRNr,BSKey) . Set HFPRNr=$P(BSRec,"\",1) . If HFPRNr'?4.7N Quit . If '$D(HFPRNr) Set Rec1="\\\\\*Onbekend "_HFPRNr_"*" Quit . Set HFQty=$P(BSRec,"\",2) . Set RB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",HFPRNr,"BreedteIntern"))-28 . Set RH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",HFPRNr,"RugHoogte")) . Set KortTekst=$P(^KPR(HFPRNr,0),"\") . Set Rec1=KR_"\"_RH_"\"_RB_"\"_HFQty_"\\"_HFPRNr_"\"_KortTekst Set BSKey=$O(^PRBS("BS",PRNr,"PRSRUGTS.")) If $E(BSKey,1,$L("PRSRUGTS."))="PRSRUGTS." Do . Set BSRec=^PRBS("BS",PRNr,BSKey) . Set HFPRNr=$P(BSRec,"\",1) . If HFPRNr'?4.7N Quit . If '$D(HFPRNr) Set Rec1="\\\\\*Onbekend "_HFPRNr_"*" Quit . Set HFQty=$P(BSRec,"\",2) . Set RB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",HFPRNr,"BreedteIntern"))-28 . Set RH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",HFPRNr,"RugHoogte")) . Set KortTekst=$P(^KPR(HFPRNr,0),"\") . Set Rec2=KR_"\"_"N"_"\"_RB_"\"_HFQty_"\"_"Spoelbak"_"\"_HFPRNr_"\"_KortTekst . Set:$L(Rec1) $P(Rec1,"\",5)="Spoelbak" Quit } zStaalRugOverzicht(%this,BatchID,BatchList) Set Label1="OR1" Set Label2="OR2" Set Label3="OR3" Kill ^HULP($zobjval(,1,0,0,1),Label1), ^HULP($zobjval(,1,0,0,1),Label2) ; Ophalen data Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Set PRNr=oQ.ProductGetObjectId() . Quit:..IsSpoel(PRNr) . Set (Basis1,Basis2)=..BldBasisFromQueue(oQ) . Do ..StaalRugOne(PRNr,.Detail1,.Detail2) . If $L(Detail1) Do . . Set HFPRNr=$P(Detail1,"\",6) ; HFPRNr . . Set HFQty=$P(Detail1,"\",4) ; HFQty . . Set $P(Detail1,"\",4)="" ; 1ste keer dubbeltelling vermijden . . Set Detail1=$G(^HULP($zobjval(,1,0,0,1),Label1,HFPRNr),Detail1) . . Set $P(Detail1,"\",4)=$P(Detail1,"\",4)+HFQty . . Set ^HULP($zobjval(,1,0,0,1),Label1,HFPRNr)=Detail1 . If $L(Detail2) Do . . Set HFPRNr=$P(Detail2,"\",6) ; HFPRNr . . Set HFQty=$P(Detail2,"\",4) ; HFQty . . Set $P(Detail2,"\",4)="" ; 1ste keer dubbeltelling vermijden . . Set Detail2=$G(^HULP($zobjval(,1,0,0,1),Label1,HFPRNr),Detail2) . . Set $P(Detail2,"\",4)=$P(Detail2,"\",4)+HFQty . . Set ^HULP($zobjval(,1,0,0,1),Label1,HFPRNr)=Detail2 ; Sorteren Set HFPRNr="" For Set HFPRNr=$O(^HULP($zobjval(,1,0,0,1),Label1,HFPRNr)) Quit:HFPRNr="" Do . Set Rec="",$P(Rec,"\",10)=^HULP($zobjval(,1,0,0,1),Label1,HFPRNr) . Set SortKey=$J($P(Rec,"\",10),3)_$J($P(Rec,"\",11),2)_$TR($J($P(Rec,"\",12),7,1)," ",0) ; Sort = Kleur_RugHoogte_Breedte . Set ^HULP($zobjval(,1,0,0,1),Label2,SortKey)=Rec ; Lineariseren Set Key="",VolgNr=0 For Set Key=$O(^HULP($zobjval(,1,0,0,1),Label2,Key)) Quit:Key="" Do . Set ^HULP($zobjval(,1,0,0,1),Label3,$I(VolgNr))=^HULP($zobjval(,1,0,0,1),Label2,Key) ; Output ; Basis + 10: RugKleur \ RugHoogte \ BreedteRug \ Aantal \ Opmerking \ HFPRNr \ KortTekst Quit:'$D(^HULP($zobjval(,1,0,0,1),Label3)) Do INIT^vhLISTO("HATBXLEAN","STAALRUGOVERZICHT",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label3)) Set PLD(5)=77 Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").StaalRugOverzichtCB" Set PLD(11)="Overzicht TBX STALENRUG\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set (%MemTOENr,%MemDossier)="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemDossier,%MemTOENr Quit zStaalRugOverzichtCB(Ref) Quit:$L(Ref)=1 "" Quit "BL\;1" zTelMagazijnStuks(PRNr,QtyNodig,NaarBovenAfronden,DimBrut) New D,Q,U Set D="\",Q="K",U=";" Quit $$TELMAGST^MRP(PRNr,QtyNodig,NaarBovenAfronden,DimBrut) ; ,DimNet) --> DimNet wordt niet gebruikt zTransform2Bak(%this,Label1,Label2) New Done,VolgNr,VolgNrBak,PrevVolgNr,BakPos,BakNr Set Done=0 Set VolgNr="" Set VolgNr=$O(^HULP($zobjval(,1,0,0,1),Label1,VolgNr)) Set:VolgNr="" Done=1 Set VolgNrPrev="" Set VolgNrBakStart="" Set BakQty=0 Set BakNr="" For Do Quit:Done . Set:VolgNrBakStart="" VolgNrBakStart=VolgNr . Set VolgNrGVPEnd=$$TryGVP(VolgNr) . If VolgNrGVPEnd Do . . If BakQty Do . . . Do BldBak(VolgNrBakStart,VolgNrPrev,BakQty) . . Do BldGVP(VolgNr,VolgNrGVPEnd) . . Set VolgNr=VolgNrGVPEnd . . Set VolgNrBakStart="" . . Set BakQty=0 . Else If $I(BakQty)=5 Do . . Do BldBak(VolgNrBakStart, VolgNr,BakQty) . . Set VolgNrBakStart="" . . Set BakQty=0 . Set VolgNrPrev=VolgNr . Set VolgNr=$O(^HULP($zobjval(,1,0,0,1),Label1,VolgNr)) Set:VolgNr="" Done=1 If BakQty Do ; rest overbrengen . Do BldBak(VolgNrBakStart, VolgNrPrev,BakQty) Quit BldBak(From, To, BakQty) New VolgNr,I,Rec Set VolgNr=To Set BakNr=BakNr+1 Set Ref=$J(BakNr,4) For I=1:1:BakQty Do . Set Rec=^HULP($zobjval(,1,0,0,1),Label1,VolgNr) . Set $P(Rec,"\",19)="B"_BakNr . Set $P(Rec,"\",20)=Ref . Set Ref="" . Set ^HULP($zobjval(,1,0,0,1),Label2,$O(^HULP($zobjval(,1,0,0,1),Label2,""),-1)+1)=Rec . Set VolgNr=$O(^HULP($zobjval(,1,0,0,1),Label1,VolgNr),-1) Quit BldGVP(From, To) New Rec,PRNr,GVP Set Rec=^HULP($zobjval(,1,0,0,1),Label1,From) Set PRNr=$P(^HULP($zobjval(,1,0,0,1),Label1,From),"\",17) Set GVP=$$Get^PRODUKT(PRNr,"J16") Set Rec=^HULP($zobjval(,1,0,0,1),Label1,VolgNr) Set $P(Rec,"\",19)="D"_PRNr Set $P(Rec,"\",20)="Doos V"_GVP Set ^HULP($zobjval(,1,0,0,1),Label2,$O(^HULP($zobjval(,1,0,0,1),Label2,""),-1)+1)=Rec Quit TryGVP(VolgNr) New PRNr,KVP,GVP,NVP,Done Set PRNr=$P(^HULP($zobjval(,1,0,0,1),Label1,VolgNr),"\",17) Quit:PRNr'?4.7N "" Set KVP=$$Get^PRODUKT(PRNr,"J14") Set NVP=$$Get^PRODUKT(PRNr,"J15") Set GVP=$$Get^PRODUKT(PRNr,"J16") If (KVP=1)||(NVP=1)||(GVP=1) Quit "" Set Done=0 For Do Quit:Done . Set GVP=GVP-1 . If GVP=0 Set Done=1 Quit . Set VolgNr=$O(^HULP($zobjval(,1,0,0,1),Label1,VolgNr)) Set:VolgNr="" Done=1 Quit:Done . If PRNr'=$P(^HULP($zobjval(,1,0,0,1),Label1,VolgNr),"\",17) Set Done=1 Quit If 'GVP Quit VolgNr Quit "" zVoegRelingToeAanDocument(%this,Nr,Reling,Document,Aantal,ToeDos,Lengte) public { Set Verpakking = Reling.GeefVerpakking() Set RelingKleur = Reling.GeefKleur() If (Verpakking = ##class(DOM.PM.enu.Verpakking).Industrie()) { Set Verpakking = "" } Do Document.GeefKolom(1).Insert(Nr) Do Document.GeefKolom(2).Insert(ToeDos) Do Document.GeefKolom(3).Insert(RelingKleur) Do Document.GeefKolom(4).Insert(Lengte) Do Document.GeefKolom(5).Insert(Verpakking) Do Document.GeefKolom(6).Insert(Aantal) Do Document.GeefKolom(7).Insert(Reling.GeefKorttekst()) } zZaagCB(Ref) New TOENr,Fmt,Rec Quit:$L(Ref)=1 "" Set Rec=@Ref Set TOENr=$P(Rec,"\",3) Set Fmt="BL\;1" Set:%MemTOENr'=TOENr&(%MemTOENr'="") Fmt="BR\;1" Set %MemTOENr=TOENr Quit Fmt zZaagChk(%this,oQ) public { Quit:oQ.DeelAantal>1 0 ; Slechts 1 keer voorkomen Set PRNr=oQ.ProductGetObjectId() Quit:..IsSpoel(PRNr) 0 Set ODSP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ODSP")) ; Onderdelen Special Quit ODSP'="F" } zZaagLijst(%this,BatchID,BatchList) public { ; Sorteren Set Label="Z" Set rs=##class(%Library.ResultSet).%New("BL.PPS.TBX.Sequencer:GetSequence") Set sc=rs.Execute($zobjval(,2,0,0,2)) Set Count=0 For Quit:'rs.Next() Do . Set oQ=##class(DS.PPS.TBX.Queue).%OpenId(rs.Data("ID")) . Quit:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen . Quit:'..ZaagChk(oQ) . Set Rec=..ZaagOne(..BldBasisFromQueue(oQ)) . Set:$L(Rec) ^HULP($zobjval(,1,0,0,1),Label,$I(Count))=Rec ; Basis + 10: Kleurbodem, 11:InterneBreedte, 12:LadeDiepte, 13:RugHoogte, 14:NettoBreedteRug, 15:NettoBreedteBodem, 16:NettoHoBodem, 17:NettoHoRug 18:Opmerking ; Output Quit:'$D(^HULP($zobjval(,1,0,0,1),Label)) 0 Do INIT^vhLISTO("HATBXLEAN","ZAAG",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP($zobjval(,1,0,0,1),Label)) Set PLD(5)=76 Set PLD(10)="Class("_##class(BL.PPS.TBX.DocsV1).%ClassName(1)_").ZaagCB" Set PLD(11)="TBX ZAAG\Lijn:"_$zobjval(,8,0,0,8)_" Batch:"_$zobjval(,2,0,0,2) Set %MemTOENr="" Do PRINT^OUTPUT(.PLD,$S($zobjval(,3,0,0,3):"S",1:"P"),"S","BL") Kill %MemTOENr Quit Count }