Production Process Steering - Tandembox Genereert van een Toelevering de verpakkingsdefinitie BL.Derde.KlantSpecifiek,BL.Derde.LevSpecifiek,Prod.Product,BL.Prod.OptiBox,BL.PPS.TBX.Common,BL.Sys.Toegang,BL.Sys.Proxy,BL.Sys.FOP.Common,vhLib.Macro 1 TECH.Mockable %Integer 6332 %Integer 1239 %String Halux_Productie Halux_Productie_Keller %String TBX Zaag Productie 5x10 %String TBX PalletID 5x10 %String Halux_Productie_Keller %String TBX Extra commissie 5x10 %String HALUX_productie_TAOR Hoeveel laden er theoretisch gemiddeld op 1 pallet gaan %Integer 10 APPS.Halux.common.BatchService 1 APPS.Halux.common.ProductieSequentieRepository 1 DOM.AKP.ToeleveringService 1 APPS.Halux.common.ProductieService 1 DOM.PM.ProductAPI 1 BL.PPS.TBX.impl.TBXMatToEnuMatConverter 1 APPS.Halux.PPS.impl.Formatter.Mat 1 BL.Flow.Levering.LabelLogoBepaler 1 %String APPS.Halux.common.Batch %Boolean %String %String %String %String %String BL.Sys.LabelPrinter 1 %String %String %Integer %ArrayOfDataTypes %ListOfDataTypes 1 BL.PPS.TBX.DocsV1.ProboxInhoudEtiketGenerator 1 BL.PPS.TBX.DocsV1.ProboxBarcodeEtiketGenerator 1 %String 1 LabelPrinter:BL.Sys.LabelPrinter="",BatchService:APPS.Halux.common.BatchService="",ProductieSequentieRepository:APPS.Halux.common.ProductieSequentieRepository="",ToeleveringService:DOM.AKP.ToeleveringService,LogoBepaler:BL.Flow.Levering.LabelLogoBepaler,ProductieService:APPS.Halux.common.ProductieService="" 1 1 %Status 1 Printer:%String BatchID:%String="",ProdGrp:%String,LabelDevice:%String,FOPDevice:%String,LabelLayout:%String Info:%String LabelLayout:%String 1 BatchID:%Integer "_Tekst(i) Set i = i + 1 } If (i > 1) { Set MailTo = ##class(TECH.Config.ConfigMgr).Instance().GetString("TECH.Error.impl.ErrorHandler_DefaultMailAddress") Do SendMiniMail^vhLib($$$SystemMail("Frees Admin"),$ListBuild(MailTo),"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) } ]]> Label1:%String,Label2:%String 0 Basis:%String 1 Ref:%String 0 ================ Etiket Zaaglijst ================ StartNr:%Integer=1,EndNr:%Integer=9999999999 batch with normal drawers followed by tipons followed by normal drawers - TBXL2test2.txt -> batch with tipons at the end */ ]]> ==================== Etiketten voor tipon ==================== StartNr:%Integer=1,EndNr:%Integer=9999999999 StartNr:%Integer=1,EndNr:%Integer=9999999999 StartNr:%Integer=1,EndNr:%Integer=9999999999 proc:BL.PPS.TBX.LabelProcessor,StartNr:%Integer,EndNr:%Integer 1 EndNr)) continue:oQ.Status="PB" ; sequencelijnen met status "PB" worden overgeslagen continue:'..EtiketChk(oQ) #dim pxLabel As BL.PPS.TBX.sub.pxLabelV1 = ..EtiketOne(oQ) continue:'$isObject(pxLabel) Set pxLabel.VolgNr = oQ.Sequence If proc.Process(.pxLabel) { Set pxLabel.ToonNakomendeTipons = 1 // Zorgen dat het laatste label de nakomende tipons toont Set VorigLabel.ToonNakomendeTipons = 0 Do ..blLabelPrinter.Add(pxLabel) Set VorigLabel = pxLabel } } Do:proc.PostProcess() ..blLabelPrinter.Print2Bartender() ]]> BL.Sys.LabelPrinter oQ:DS.PPS.TBX.Queue 0) Opmerking = Opmerking_",Hangm" If (Batch.GeefProductieGroep() = ##class(APPS.Halux.common.enu.ProductieGroep).Probox()) { // Probox wikkel info Set WikkelInfo = ##class(APPS.PM.Maatwerk.impl.Verpakking.Probox.Calculator).GeefWikkelInfoViaLade(Lade) Set WikkelLengte = WikkelInfo.GeefWikkelLengte() Set WikkelDiepte = ##class(APPS.PM.Maatwerk.impl.Verpakking.Probox.Calculator).GeefWikkelDiepte(Lade.GeefLadeDiepte()) Set WikkelAfmeting = WikkelLengte_"x"_WikkelDiepte Set Opmerking = Opmerking_",Wikkel"_$Case(WikkelAfmeting,"1250x520":"A","1250x650":"B","900x520":"C","900x650":"D",1:"")_"("_WikkelInfo.GeefAantal()_")" } Set pxLabel.Opm1=$E(Opmerking,$S($E(Opmerking,1)=", ":3,$E(Opmerking,1)=",":2,1:1),99) Set pxLabel.Opm4=..GeefOpmerking4(PRNr) 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, ##class(APPS.common.enu.Toepassing).Label()) Set pxLabel.Device=..LabelDevice Set pxLabel.Layout=..LabelLayout Set pxLabel.ExtraLabelInfo=..ExtraLabelInfo ; debug informatie, zoals ZaagID, PRNr, Quit pxLabel ]]> PRNr:%String 1 %String TBX:DOM.PM.TBXProduct.TBXLade 1 %Boolean TBX:DOM.PM.TBXProduct.TBXLade 1 %Boolean TBX:DOM.PM.TBXProduct.TBXLade 1 %Boolean oQ:DS.PPS.TBX.Queue BatchID:%String,BatchList:%CacheString GlobalRef:%String 1 Lengte:%Decimal,LengtePlaat:%Decimal 1 .9 Set Platen=Platen+1 Quit Platen ]]> Lengte:%Decimal,LengtePlaat:%Decimal 1 Basis:%String 1 oQ:DS.PPS.TBX.Queue 1 Ref:%String 0 BatchID:%String,BatchList:%CacheString 1 . Set Rec=..OnderdelenOne(..BldBasisFromQueue(oQ)) . Set:$L(Rec) ^HULP(..%J,Label,$I(Count))=Rec ; Output ; Basis + 10:Opmerking Quit:'$D(^HULP(..%J,Label)) Do INIT^vhLISTO("HATBXLEAN","PRINT",.PLD) Set PLD("HALUX")="" Set PLD(1)=$NA(^HULP(..%J,Label)) Set PLD(5)=70 Set PLD(10)="Class("_..%ClassName(1)_").OnderdelenCB" Set PLD(11)="TBX ONDERDELEN\Lijn:"_..Batch.GeefLijn()_" Batch:"_..BatchID ;zw PLD Set (%MemTOENr,%MemDossier)="" if $length(..Printer) set Optie("AUTOSEL")= ..Printer Do PRINT^OUTPUT(.PLD,"P","S","BL",.Optie) Kill %MemTOENr,%MemDossier Quit ]]> Basis:%String 1 Ref:%String 0 BatchID:%String,BatchList:%CacheString Basis:%String oQ:DS.PPS.TBX.Queue 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 ]]> 1 Ref:%String 0 VoerUitUitvoeringInfoLijstPerInformatieID(-]]> BatchID:%String,BatchList:%CacheString 0) && (..IsProductiegroepKastOfPallet(Batch) || (..IsProductiegroepProbox(Batch)))){ Set SamengesteldeLijstIterator = ##class(TECH.ListIterator).%New(SamengesteldeLijst) #dim LijstVanToeleveringIDs As %ListOfDataTypes = ..GeefLijstVanToeleveringNummersVanMattenlijst(SamengesteldeLijstIterator) Do SamengesteldeLijstIterator.Reset() Set SamengesteldeLijstPerToelevering = ##class(APPS.Halux.PPS.dto.UitvoeringInfoLijst).%New() Set ToeleveringIDIterator = ##class(TECH.ListIterator).%New(LijstVanToeleveringIDs) While ToeleveringIDIterator.HasNext() { #dim ToeleveringID As %Integer = ToeleveringIDIterator.Next() #dim TotaalAantalMattenInToelevering As %Integer = 0 Set SamengesteldeLijstPerToelevering = ##class(APPS.Halux.PPS.dto.UitvoeringInfoLijst).%New() #dim HuidigeToelevNr As %String = SamengesteldeLijst.GetAt(1).ToeleveringID While SamengesteldeLijstIterator.HasNext() { Set Mat = SamengesteldeLijstIterator.Next() If (Mat.ToeleveringID = ToeleveringID) { Set Mat.TotaalAantalMattenInToelevering = "" Do SamengesteldeLijstPerToelevering.Insert(Mat) Set TotaalAantalMattenInToelevering = TotaalAantalMattenInToelevering + Mat.Aantal } } Set Mat = SamengesteldeLijstPerToelevering.GetAt(SamengesteldeLijstPerToelevering.Count()) Set Mat.TotaalAantalMattenInToelevering = TotaalAantalMattenInToelevering Do Afdrukker.VerwerkUitvoeringInfoLijst(SamengesteldeLijstPerToelevering,ActiviteitParameters) Do SamengesteldeLijstIterator.Reset() } Do UitvoeringLijstIterator.Reset() #dim i = 1 While UitvoeringLijstIterator.HasNext() { #dim TeCorrigerenMat As APPS.Halux.PPS.Activiteit.impl.common.dto.MattenUitvoeringInfo = UitvoeringLijstIterator.Next() Set TeCorrigerenMat.Aantal = LijstAantallen.GetAt(i) Set i = i+1 } } else { Do:UitvoeringInfoLijst.Count() Afdrukker.VerwerkUitvoeringInfoLijst(UitvoeringInfoLijst,ActiviteitParameters) } Quit MatCnt ]]> UitvoeringLijstIterator:TECH.ListIterator 1 SamengesteldeLijstIterator:TECH.ListIterator 1 %ListOfDataTypes TBXQueue:DS.PPS.TBX.Queue APPS.Halux.PPS.Activiteit.impl.common.dto.MattenUitvoeringInfo Batch:APPS.Halux.common.Batch 1 %Boolean Batch:APPS.Halux.common.Batch 1 %Boolean Batch:APPS.Halux.common.Batch 1 %Boolean Batch:APPS.Halux.common.Batch 1 %Boolean Basis:%String oQ:DS.PPS.TBX.Queue 1 0 ; Slechts 1 keer voorkomen Quit:ODSP'="" 0 ; Specials -> geen mat Quit:..IsSpoel(PRNr) 0 ; spoelbak laden worden apart verwerkt Set StdProd=$G(^PRBS("BS",PRNr,"MAT.001")) Quit:($L(StdProd)&&(##class(TECH.Config.ConfigMgr).Instance().GetBoolean("DOM.common.ProjectSettingsApi_IsActiefBomBolOmleidingTbxNaarDotNet"))) 1 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 ]]> 1 Ref:%String 0 StartNr:%Integer,EndNr:%Integer EndNr If ..KlantEtiketChk(oQ) { #dim pxLabel As BL.Etiket.LadeKlantEtiketVHoss = ..KlantEtiketOne2D(oQ) If $isObject(pxLabel) { Do ..blLabelPrinter.Add(pxLabel) Set Count=Count+1 } } } Do ..blLabelPrinter.Print2Bartender() ]]> oQ:DS.PPS.TBX.Queue KlantNr:%String %String oQ:DS.PPS.TBX.Queue Controleert of in de batch toeleveringen zitten voor SFS %Boolean AantalEtikettenZonderLogo:%Integer=0 0 { Do ..PalletEtikettenZonderLogo(AantalEtikettenZonderLogo) } Else { If '..BevatSFS() { Do ..PalletEtikettenNietSFS() } Else { Do ..PalletEtikettenSFS() } } Quit ]]> 0) { Do ..ProboxOverdoosEtiket(Toelevering) Hang 5 } } } ]]> Toelevering:DOM.AKP.Toelevering 2 erbij For i=1:1:Aantal { set Label = ##class(BL.Etiket.ProboxOverdoos).%New() Set Label.Device=..#ProboxOverdoosEtiketPrinter #dim OrderAPI As DOM.VKP.OrderAPI = ##class(DOM.DomeinContext).Instance().GeefOrderAPI() #dim Order As DOM.VKP.Order = OrderAPI.GeefOrder(Toelevering.GeefOrderID()) #dim Partij As DOM.PARTIJ.Partij = ##class(DOM.DomeinContext).Instance().GeefPartijAPI().GeefPartij(Order.GeefKlantID()) #dim PalletID As %String = ..GeefNieuwPalletID(##class(BL.PPS.TBX.enu.PalletEtiketType).Probox()) #dim KlantNr As %String = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantNummerVoorPartijID(Partij.GeefID()) set Label.Logo = ..GeefEtiketLogo(KlantNr) set Label.KlantNaam = Partij.GeefNaam() #dim KlantInstellingenService As APPS.common.KlantInstellingenService = ##class(APPS.ApplicatieContext).Instance().GeefOrderVerwerkingAPI().GeefKlantInstellingenService() If KlantInstellingenService.GebruiktKlantOrderNummer(Order.GeefKlantID()) { Set Label.KlantNaam = Order.GeefDocumentReferenties().KlantOrderNummer } set Label.PalletBarcode = PalletID set Label.PalletBarcodeTxt = ..FormatteerPalletID(PalletID) set Label.OrderRef = Order.GeefOrderReferentie() set Label.OrderNr = Order.GeefID() set Label.ToeleveringNr = Toelevering.GeefID() set Label.VerzendWijze = Order.GeefVerzendingWijze() set Label.ProductieWeek = $translate($$EXTDATE^vhLib.DataTypes(Toelevering.GeefDueOutTime(),"DW"),"/","") set Label.CommissieReferentie = Order.GeefCommissieReferentie() set Label.Aantal = 1 Do ..blLabelPrinter.Add(Label) } Do ..blLabelPrinter.Print2Bartender() quit ]]> 1 %Boolean DnaCodeIterator:TECH.Iterator DnaCodeIterator:TECH.Iterator Dag:%String,Maand:%String,LabelPrinter:%String,Aantal:%Integer=1,BONNr:%String="" Bepaalt het volume-aandeel van de probox-laden Toelevering:DOM.AKP.Toelevering 1 %Integer Toelevering:DOM.AKP.Toelevering AantalEtikettenZonderLogo:%Integer Afdrukken van etiketten die niet voor SFS zijn '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(##class(BL.PPS.TBX.enu.PalletEtiketType).Tandembox()) . . Quit:'$isObject(pxLabel) . . Do ..blLabelPrinter.Add(pxLabel) Do ..blLabelPrinter.Print2Bartender() Quit ]]> Type:BL.PPS.TBX.enu.PalletEtiketType="SFS" Type:BL.PPS.TBX.enu.PalletEtiketType 1 %String PalletID:%String Type:BL.PPS.TBX.enu.PalletEtiketType 1 %String KLNr:%String,BONNr:%String 1 0 %String Extra commissie-etiketten 'PB') GROUP BY TOENr, TLUNr, Product") Do rs.Execute() while rs.Next() { #dim ToeleveringID As %String = rs.Data("TOENr") continue:'##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().BestaatToelevering(ToeleveringID) #dim ProductID As %String = rs.Data("Product") #dim Product As DOM.PM.Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(ProductID) #dim Aantal As %Integer = rs.Data("Aantal") If ..HeeftApartMeeTeLeverenOnderdelen(ProductID) { set mdOnderdelen(ToeleveringID)=$G(mdOnderdelen(ToeleveringID))+Aantal } If ..HeeftApartMeeTeLeverenMatten(Product) { set mdAntislipMatten(ToeleveringID)=$G(mdAntislipMatten(ToeleveringID))+Aantal } } do:$data(mdOnderdelen) ..PrintOnderdelenEtiketten(.mdOnderdelen, ProductID) do:$data(mdAntislipMatten) ..PrintAntislipmatEtiketten(.mdAntislipMatten) ]]> mdOnderdelen:%String,productID:%Integer 1 mdAntislipMatten:%String 1 %Boolean TOENr:%Numeric,Aantal:%Numeric,Titel:%String BL.PPS.TBX.sub.pxCommissie Geeft TELMAGST^MRP(...) Returns aantal stuks (al dan niet afgerond) 1 PRNr:%String,QtyNodig:%String,NaarBovenAfronden:%Boolean,DimBrut:%String 0 %String DimNet wordt niet gebruikt ]]> oQ:DS.PPS.TBX.Queue %String Spoelbak of Syfon PRNr:%String controle of de bodem een inkeping heeft (Keller) w ##class(BL.PPS.TBX.DocsV1).%New().MetInkeeping(417399) 1 PRNr:%String %Boolean ProductID:%String %Boolean ProductID:%String 1 %Boolean Product:DOM.PM.TBXProduct.TBXLade %Boolean ProductID:%String 1 %Boolean ProductID:%String 1 %String Product:DOM.PM.TBXProduct.TBXLade 1 %Boolean