#include BL.Derde.LevSpecifiek EWTOE ;E'WMS Inboeken toelevering [ 10/03/2003 11:04 AM ] ; RCPNR(RCPNr,NoAsk) New R,LEVNr,LevRef,WMSStat,IsBlum New TOENr,TLUNr Quit:'$$BACKORD(RCPNr,,,$G(NoAsk)) Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),LevRef=$P(R,D,3),WMSStat=$P(R,D,20) If WMSStat="A" Do .Set IsBlum=$S(LevRef="":0,1:$D(^Verv(LEVNr,"D",LevRef))),TOENr="" .For Set TOENr=$O(^RCP("D",RCPNr,"D",TOENr)) Quit:TOENr="" Do TOENR(RCPNr,TOENr,,$G(NoAsk)) .If IsBlum Set R=^Verv(LEVNr,"D",LevRef) Set:$P(R,D,7)'="F" $P(R,D,7)="I",^Verv(LEVNr,"D",LevRef)=R .Do STATINB(RCPNr) Quit ; TOENR(RCPNr,TOENr,CheckBo,NoAsk) New %TC,R,LEVNr,TLNr,TLUNr,Error,KLNr,ORDNr,MailId,Text,Link,ToLock,PRNr,BelDat Set NoAsk=$G(NoAsk) If $G(CheckBo) Quit:'$$BACKORD(RCPNr,TOENr) Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2) Set TLNr=100 For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:TLNr="" Do .Set R=^KTO(LEVNr,TOENr,TLNr),PRNr=$P(R,D,2),TLUNr=$P(R,D,15) .If PRNr,TLUNr Set ToLock(TOENr,TLUNr)="" For Set ToLock=$$UPRCPLock(.ToLock) Quit:ToLock="" Do .If NoAsk Hang 5 .Else Do LDISP^vhLock(" ",$P(ToLock," in gebruik.")) For Do ADD^vhLock("^KTO(LEVNr,TOENr)") Quit:%TC Do .If NoAsk Hang 5 .Else Do LDISP^vhLock("^KTO(LEVNr,TOENr)","Toelevering "_TOENr) If '$D(^KTO(LEVNr,TOENr)) Do .Set Error=0,TLUNr="" .For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do ..Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr) ..Quit:$P(R,D,2)="I" ..Set Error=1,$P(R,D,2)="I",$P(R,D,3)="e",^RCP("D",RCPNr,"D",TOENr,TLUNr)=R ..Kill:$G(^RCP("IT",TOENr,TLUNr))=RCPNr ^RCP("IT",TOENr,TLUNr) .Quit:'Error .Do ERROR^EWLOG($T(NOTOE)) .Set R=$$^vhTXTPOP("EWTOE","NOTOE","",TOENr,$P(^KLE(^KL1(LEVNr),0),D,2)) Else Do .If LEVNr=$$$LevHalux Do ..Set R=^KTO(LEVNr,TOENr,1),KLNr=$P(R,D,8),ORDNr=$P(R,D,7) ..Quit:'KLNr Quit:'ORDNr ..If $$GetPickDatum^EWORDS6(ORDNr)'<$H Quit:$$IsVoorVandaagOfMorgen^EWORDS6(ORDNr)'=1 ..Quit:$$CheckAutoSend^EWORDS6(ORDNr) ..Set R=^KOD(KLNr,"F",ORDNr,1),BelDat=$P(R,D,36) ..Set:'BelDat BelDat=$$LEVERDATUM^KLVERZW($$DEFAULT^KLVERZW(,,ORDNr)) ..Set Text(1)="Volgend order is klaar:~",Text(2)="~"_ORDNr_" - "_$P(^KKL(^KK1(KLNr),0),D,2) ..Set Text(3)="~VZW: "_$$SHOW^KLVERZW(,,ORDNr)_" - LEV.DATUM: "_$$EXTDATE^vhDTyp(BelDat)_" - Halux "_$$HALUXTYP^FLOWCHK("O",ORDNr) ..Set R=$$PI^vhPOPUP("C;C","-O1","Halux order "_ORDNr_" voor "_$P(^KKL(^KK1(KLNr),0),D,2),"EWTOE","HALUX") ..If $L(R) Set R=^RES("EWTOE","PI","HALUX","D",R,"N"),Text(4)="~~"_R ..Set Link(1)="KL\"_KLNr_"\R\O",Link(2)="ORD\"_ORDNr_"\R" ..Set MailId=$$SYSTEM^vhMAIL("","Order","Halux","HALORDOK",.Text,.Link,"U","A") .Set TLUNr="" .For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do TLUNR(RCPNr,TOENr,TLUNr,,,NoAsk) .Do CHKDEL^FLOWTOE(TOENr) Do REMOVE^vhLock("^KTO(LEVNr,TOENr)") Do UPRCPUnLock(.ToLock) Quit ; TLUNR(RCPNr,TOENr,TLUNr,CheckBo,CheckDel,NoAsk) New R,LEVNr,LevRef,WMSStat,RCPODate,STLUNr,AantWMS,AantBo,LevBonNr,VervLNr,IsBlum,User New TLNr,PRNr,ORDNr,OLNr,OLUNr,KLNr,HistRef,WMS,BronPal,DoelPal,RCPSDate,MPRNr,MdrIsKnd,RCPPRNr,ZRRCP,ZRKTO Set NoAsk=$G(NoAsk) If $G(CheckBo) Quit:'$$BACKORD(RCPNr,TOENr,TLUNr) Set CheckDel=$G(CheckDel) Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),LevRef=$P(R,D,3),RCPODate=$P(R,D,4) Set:'RCPODate RCPODate=$H Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),MPRNr=$P(R,D),WMSStat=$P(R,D,2) If WMSStat="S" Do .Set IsBlum=$S(LevRef="":0,1:$D(^Verv(LEVNr,"D",LevRef))) .If '$D(^TO("IU",TOENr,TLUNr)) Do Quit ..Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),PRNr=$P(R,D) ..Set $P(R,D,2)="I",$P(R,D,3)="e",^RCP("D",RCPNr,"D",TOENr,TLUNr)=R ..Do ERROR^EWLOG($T(NOTOELN)) ..Set R=$$^vhTXTPOP("EWTOE","NOTOELN","",TLUNr,$P(^KPR(PRNr,0),D),TOENr,$P(^KLE(^KL1(LEVNr),0),D,2)) ..Kill:$G(^RCP("IT",TOENr,TLUNr))=RCPNr ^RCP("IT",TOENr,TLUNr) .Set STLUNr="",MdrIsKnd=0 .For Set STLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr)) Quit:STLUNr="" Do ..Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr),PRNr=$P(R,D) ..Set:'MdrIsKnd MdrIsKnd=MPRNr=PRNr ..Set AantWMS=$P(R,D,4),DoelPal=$P(R,D,5),RCPSDate=$P(R,D,7),BronPal=$P(R,D,9),User=$P(R,D,13) ..Set R=DoelPal,$P(R,D,2)=AantWMS,$P(R,D,3)=RCPSDate,$P(R,D,4)=User,$P(R,D,5)=BronPal,WMS($O(WMS(""),-1)+1)=R ..Set TLNr=^TO("IU",TOENr,TLUNr) ..Set R=^KTO(LEVNr,TOENr,TLNr) Quit:$P(R,D,2)'=PRNr ..Set ORDNr=$P(R,D,27),OLNr=$P($P(R,D,28),";"),OLUNr="" ..If ORDNr,OLNr Set KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,OLNr),OLUNr=$P(R,D,15) ..Do RCPPAL^EWPAL(PRNr,DoelPal,ORDNr,OLUNr,AantWMS) .Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),ZRRCP=$ZR .Set RCPPRNr=$P(R,D),AantWMS=$P(R,D,5),AantBo=$P(R,D,6),LevBonNr=$P(R,D,10),VervLNr=$P(R,D,11) .Set TLNr=^TO("IU",TOENr,TLUNr),R=^KTO(LEVNr,TOENr,TLNr),ZRKTO=$ZR,PRNr=$P(R,D,2) .If PRNr'=RCPPRNr Do Quit ; Product receptie en toelevering niet gelijk ..Set:'NoAsk R=$$^vhTXTPOP("EWTOE","VERSCHILLENDPRODUCT","",ZRRCP,$P(^KPR(RCPPRNr,0),D)_" ("_RCPPRNr_")",ZRKTO,$P(^KPR(PRNr,0),D)_" ("_PRNr_")") .Set HistRef=LevBonNr_"/"_LevRef .Do TOELINE(RCPNr,TOENr,TLUNr,RCPODate,AantWMS,AantBo,HistRef,NoAsk,.WMS,'MdrIsKnd) .If IsBlum Do ..Quit:LevBonNr="" Quit:VervLNr="" ..Set R=$G(^Verv(LEVNr,"D",LevRef,LevBonNr,VervLNr)) ..Quit:R="" ..Set $P(R,D,11)=AantWMS,$P(R,D,13)=$S(AantBo:"P",1:""),$P(R,D,16)="I" ..Set ^Verv(LEVNr,"D",LevRef,LevBonNr,VervLNr)=R .Do STLUHIST(RCPNr,TOENr,TLUNr) .Do:CheckDel CHKDEL^FLOWTOE(TOENr) .Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),$P(R,D,2)="I",^RCP("D",RCPNr,"D",TOENr,TLUNr)=R .Kill:$G(^RCP("IT",TOENr,TLUNr))=RCPNr ^RCP("IT",TOENr,TLUNr) .Kill ^RCP("AUTO",RCPNr,TOENr,TLUNr) Do CHKISTAT(RCPNr) ; verwijderen van ingeboekte receptielijnen uit de EWMS tabellen na inboeking Do ##class(BL.MB.UGLYPicking.ReceptieOpkuis).DeleteToeLijn(RCPNr, TOENr, TLUNr) Do STOCKUPDKind^ORGALUX(MPRNr) d WLIP^vhDBG(150,"STOCKUPDKind^ORGALUX "_MPRNr) Quit ; ; Verwerking sublijn STLUHIST(RCPNr,TOENr,TLUNr) New R,LEVNr,AantWMS,RCPODate,STLUNr,PRNr,MPRNr,KPRNr New WMS,BronPal,DoelPal,RCPSDate,User Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),RCPODate=$P(R,D,4) Set:'RCPODate RCPODate=$H Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),MPRNr=$P(R,D) Set STLUNr="" ; Groeperen van de sublijnen For Set STLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr)) Quit:STLUNr="" Do .Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr),PRNr=$P(R,D) .Set AantWMS=$P(R,D,4),DoelPal=$P(R,D,5),RCPSDate=$P(R,D,7),BronPal=$P(R,D,9),User=$P(R,D,13) .Quit:PRNr=MPRNr .Set KPRNr(PRNr)=$G(KPRNr(PRNr))+AantWMS .Set R=DoelPal,$P(R,D,2)=AantWMS,$P(R,D,3)=RCPSDate,$P(R,D,4)=User,$P(R,D,5)=BronPal .Set KPRNr(PRNr,"WMS",$O(KPRNr(PRNr,"WMS",""),-1)+1)=R Set PRNr="" ; Verwerken van de gegroepeerde lijnen For Set PRNr=$O(KPRNr(PRNr)) Quit:PRNr="" Do .Set AantWMS=KPRNr(PRNr) .Quit:'AantWMS .Kill WMS .Merge WMS=KPRNr(PRNr,"WMS") .Do HIST(LEVNr,TOENr,TLUNr,PRNr,AantWMS,RCPODate,,.WMS,,MPRNr) Quit ; TOELINE(RCPNr,TOENr,TLUNr,RCPODate,AantWMS,AantBo,HistRef,NoAsk,WMS,OverKind) New R,Rec,LEVNr,TLNr,PRNr,ABLNr,Besteld,KLNr,ORDNr,OLNr,OLUNr,CifPPL,LevTA,LevTB,LevTW,RCPDate,Decimals,RCPPRNr,ZRRCP,ZRKTO,ASAP,LevRef,BLKLNr,BLFactuurNr,BLFactuurDatum,TOEPRNr,ORDPRNr,OldAantal Set RCPODate=$G(RCPODate,$H),OverKind=$G(OverKind) Do COPY(TOENr) Set LEVNr=$P($G(^KTO1(TOENr)),D) Quit:'LEVNr If $G(RCPNr) Do .Set R=^RCP("D",RCPNr),RCPDate=$P(R,D,4),LevRef=$P(R,D,3) .Set R=$G(^RCP("D",RCPNr,"D",TOENr,TLUNr)),ZRRCP=$ZR,RCPPRNr=$P(R,D),BLFactuurNr=$P(R,D,10) .If LEVNr,LevRef,BLFactuurNr Set R=$G(^Verv(LEVNr,"D",LevRef,BLFactuurNr)),BLKLNr=$P(R,D,6),BLFactuurDatum=$$INTDATE^vhDTyp($P(R,D,2)) ; Factuurgegevens Blum Else Set RCPDate=$H,RCPPRNr="" Set TLNr=^TO("IU",TOENr,TLUNr) For Do ADD^vhLock("^KTO(LEVNr,TOENr)") Quit:%TC Do .If NoAsk Hang 5 .Else Do LDISP^vhLock("^KTO(LEVNr,TOENr)","Toelevering "_TOENr) Set Rec=^KTO(LEVNr,TOENr,TLNr),ZRKTO=$ZR,(PRNr,TOEPRNr)=$P(Rec,D,2) Quit:'PRNr If RCPPRNr,PRNr'=RCPPRNr Do Quit ; Product receptie en toelevering niet gelijk .Quit:NoAsk .Set R=$$^vhTXTPOP("EWTOE","VERSCHILLENDPRODUCT","",ZRRCP,$P(^KPR(RCPPRNr,0),D)_" ("_RCPPRNr_")",ZRKTO,$P(^KPR(PRNr,0),D)_" ("_PRNr_")") For Do ADD^vhLock("^KPR(PRNr)") Quit:%TC Do .If NoAsk Hang 5 .Else Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) Set Besteld=$P(Rec,D,3),ORDNr=$P(Rec,D,27),OLNr=$P($P(Rec,D,28),";") Set LevTB=$P(Rec,D,25),LevTA=$P(Rec,D,29) S:'$L(LevTA) LevTA=LevTB Set LevTW=$TR($$EXTDATE^vhDTyp(RCPDate,"DW4"),"/","") Set R=^($O(^KPR(PRNr,"J"))) Set CifPPL=$$CifPPL(PRNr) Do HIST(LEVNr,TOENr,TLUNr,PRNr,AantWMS,RCPODate,HistRef,.WMS,,,OverKind) Do KWNODE^FLOWTOE(LEVNr,TOENr,TLNr) Do ProductToeleveringLijnIngeboekt^EWRCPS2(LEVNr,TOENr,TLNr) For Do ADD^vhLock("^KSPW(PRNr)") Quit:%TC Hang 1 Set Decimals=$$MUNT^vhRtn1(,4),R=TOENr For Quit:'$D(^KSPW(PRNr,LevTW,R)) Set R=R+.1 Set ^KSPW(PRNr,LevTW,R)=AantWMS_D_$J(CifPPL*AantWMS,0,Decimals)_D_LevTB_D_LevTA_D_$E(LevTW,3,4)_"/"_$E(LevTW,5,6)_D_''ORDNr_D Do REMOVE^vhLock("^KSPW(PRNr)"),COPY(TOENr,TLNr,Rec,AantWMS) Do ##class(Flow.Toelevering).RecuPak(PRNr,AantWMS,TOENr,TLUNr,HistRef,.BLKLNr,.BLFactuurNr,.BLFactuurDatum) If 'AantBo Do .Set ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LEVNr,TOENr,TLNr) .Do KILL(TOENr,TLNr) .Do Cache05Geproduceerd(LEVNr,TOENr,ToeleveringLijnCode,PRNr,$P(Rec,D,30),Besteld,$P(Rec,D,56),$P(Rec,D,55),$P(Rec,D,57)) If AantBo Do .Set Rec=^KTO(LEVNr,TOENr,TLNr) Set:'$P(Rec,D,23) $P(Rec,D,23)=$P(Rec,D,3) .Set $P(Rec,D,9)=$J(($P(Rec,D,9)/$P(Rec,D,3)*AantBo),0,2) .Set $P(Rec,D,10)=$J(($P(Rec,D,10)/$P(Rec,D,3)*AantBo),0,2) .Set $P(Rec,D,16)=$J(($P(Rec,D,16)/$P(Rec,D,3)*AantBo),0,2) .Set $P(Rec,D,3)=AantBo,$P(Rec,D,15)=$P(Rec,D,15)+1 .If ORDNr,$D(^KO1(ORDNr,"F")) Do ..Set KLNr=$P(^KO1(ORDNr,"F"),D),ORDPRNr=$P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) ..Set:ORDPRNr'=TOEPRNr $P(Rec,D,27,28)=D .Set ^KTO(LEVNr,TOENr,TLNr)=Rec .Do SWNODE^FLOWTOE(LEVNr,TOENr,TLNr) .Do ProductToeleveringLijnGemaakt^FLOWTOE2(LEVNr,TOENr,TLNr) .If ORDNr Do ..Quit:'$D(^KO1(ORDNr,"F")) ..Set KLNr=$P(^KO1(ORDNr,"F"),D) ..For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC Do ...If NoAsk Hang 5 ...Else Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) ..Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),ORDPRNr=$P(Rec,D,2) ..If $P(Rec,D,3),ORDPRNr=TOEPRNr Do ...New OLNr ...Set OLNr=^KOD(KLNr,"F",ORDNr,0),^KOD(KLNr,"F",ORDNr,0)=OLNr+1 ...Set $P(Rec,D,9)=$J(($P(Rec,D,9)/$P(Rec,D,3)*AantBo),0,2) ...Set $P(Rec,D,10)=$J(($P(Rec,D,10)/$P(Rec,D,3)*AantBo),0,2) ...Set $P(Rec,D,16)=$J(($P(Rec,D,16)/$P(Rec,D,3)*AantBo),0,2) ...Set $P(Rec,D,3)=AantBo,$P(Rec,D,15)=$P(Rec,D,15)+1,$P(Rec,D,27,28)=TOENr_D_TLNr ...Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec ...Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) ...//Backorder lijn aangemaakt ...Do ProductOrderLijnGemaakt^FLOWORD2(KLNr,ORDNr,OLNr) ...If $D(^KTOK(LEVNr,TOENr,TLNr)) Set $P(^KTOK(LEVNr,TOENr,TLNr),D,5)=OLNr ...Set Rec=^KTO(LEVNr,TOENr,TLNr) ...New r Set r=$P(Rec,D,28),$P(r,";")=OLNr,$P(Rec,D,28)=r ...Set ^KTO(LEVNr,TOENr,TLNr)=Rec ...Set ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LEVNr,TOENr,TLNr) ...Do Cache05Geproduceerd(LEVNr,TOENr,ToeleveringLijnCode,PRNr,$P(Rec,D,30),AantWMS,$P(Rec,D,56),$P(Rec,D,55),$P(Rec,D,57)) ..Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") If ORDNr Do .Quit:'$D(^KO1(ORDNr,"F")) .Set KLNr=$P(^KO1(ORDNr,"F"),D) .For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC Do ..If NoAsk Hang 5 ..Else Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) .Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) .Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),ORDPRNr=$P(Rec,D,2),OldAantal=$P(Rec,D,3) .Do:OldAantal ..Set ASAP=$P(^KOD(KLNr,"F",ORDNr,1),D,28) ..Do:ORDPRNr=TOEPRNr ...Set AantWMS=$$WijzigAantalIndienKind(AantWMS,PRNr,ORDPRNr) ...Set $P(Rec,D,9)=$J(($P(Rec,D,9)/OldAantal*AantWMS),0,2) ...Set $P(Rec,D,10)=$J(($P(Rec,D,10)/OldAantal*AantWMS),0,2) ...Set $P(Rec,D,16)=$J(($P(Rec,D,16)/OldAantal*AantWMS),0,2) ...Set $P(Rec,D,3)=AantWMS ..Set $P(Rec,D,27,28)="\KOM" ..Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec ..Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) ..Do:OldAantal'=$P(Rec,D,3) ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Aantal()) ..Do:ASAP ASAP(ORDNr,NoAsk) ..Set OLUNr=$P(Rec,D,15) ..If LEVNr=$$$LevHalux Do:OLUNr MergeOLUNrs^FLOWORD6(ORDNr,OLUNr) .Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") .If AantBo Do InvoerUitvoerLinkAangemaakt^FLOWTOE2(LEVNr,TOENr,TLNr) Do REMOVE^vhLock("^KPR(PRNr)") Do REMOVE^vhLock("^KTO(LEVNr,TOENr)") Quit ; Om KOM-links op niveau van een kind van het product uit het order-lijn te ondersteunen... WijzigAantalIndienKind(AantalInToelevering,PRNrUitToelevering,PRNrUitOrder) &SQL(SELECT KindBSKey INTO :Sleutel FROM DOM_PM_impl_DataM_Bouwstenen.BouwsteenKindIndex WHERE KindProductNr=:PRNrUitToelevering AND MoederProductNr=:PRNrUitOrder) If $Data(Sleutel) { &SQL(SELECT Aantal INTO :Factor FROM DOM_PM_impl_DataM_Bouwstenen.BouwsteenKind WHERE Moeder=:PRNrUitOrder AND BSKey=:Sleutel) If ($Data(Factor) && (0'=Factor)) { Set AantalInToelevering = AantalInToelevering / Factor } // TODO: Wat indien dit een decimaal getal zou opleveren? } Quit AantalInToelevering ; HIST(LEVNr,TOENr,TLUNr,PRNr,AantWMS,RCPODate,HistRef,WMS,Histor,MPRNr,OverKind) New R,PR,CifPPL,LijstPr,IDNr,IsEuro,Magazijn,IsWerkVl,DefMag,RTemp,TLNr Set Histor=$G(Histor) Set:Histor="" Histor="ON" Set MPRNr=$G(MPRNr) Set:MPRNr=PRNr MPRNr="" Set OverKind=$G(OverKind) Set RCPODate=$G(RCPODate,$H),IsEuro=$$ISEURO^vhRtn1() Set:'RCPODate RCPODate=$H Set IsWerkVl="\0\9\"[(D_$$OPSLZONE^PRODUKT2(PRNr)_D),R=$G(^KPR(PRNr,15)),DefMag=$P(R,D,11) Set PR=PRNr,R=^KPR(PRNr,2),IDNr=$P(R,D,25) Set R=^($O(^KPR(PRNr,"J"))),LijstPr=$P(R,D,25) Set CifPPL=$$CifPPL(PRNr) If IsWerkVl,DefMag="W" Do .New OrdDat .Set TLNr=$G(^TO("IU",TOENr,TLUNr)) .If TLNr Set OrdDat=$P($$ORDGEG^FLOWTOE(LEVNr,TOENr,TLNr),D,2) Set:$L(OrdDat) OrdDat=$$INTDATE^vhDTyp(OrdDat) .Set R=$TR($$EXTDATE^vhDTyp($S('RCPODate:$H,1:RCPODate),"DS"),D,"") .Set R=R_1_D_AantWMS_D_D_1_D_(CifPPL*AantWMS)_D_D_D_TOENr_D_D_D_DT_D .Set RTemp=R .Set:$P(RTemp,D,2) R=$$CV2EENH^MRP(PRNr,$P(RTemp,D,2)),$P(RTemp,D,5)=$P(RTemp,D,5)/$P(RTemp,D,2)*R,$P(RTemp,D,2)=R .Set R=RTemp,$P(R,D,13)=1 .d WLIP^vhDBG(191,"Tralalala "_TOENr_" - "_TLUNr) .Do WV^KPR10,PUT^PRHIST(PRNr,AantWMS,"I","W",LEVNr,TOENr,TLUNr,RCPODate,,,,,,$G(OrdDat)) .Set ^TVE(+$H,$I(^TVE(+$H)))=PRNr_"\"_AantWMS_"\"_"I"_"\"_"W"_"\"_LEVNr_"\"_TOENr_"\"_TLUNr_"\"_RCPODate_"\"_$G(OrdDat)_"\Cache05" .Do:$$HasHalfFabr^PRBS(PRNr) HADPR^PRHF(TOENr,TLUNr,PRNr,AantWMS,RCPODate) ; Verwerking halffabrikaten Else If $E(IDNr)'=7 Do ; Geen DO-product .Do:Histor["O" ..Set R=$TR($$EXTDATE^vhDTyp($S('RCPODate:$H,1:RCPODate),"DS"),D,"") ..Set R=R_1_D_AantWMS_D_$J(CifPPL,0,$S(IsEuro:4,1:2))_D_1_D_$J(LijstPr,0,$S(IsEuro:4,1:2))_D_D_0_D_TOENr_D ..Do ^KPR20 .Do:Histor["N" ..New OrdDat New:OverKind WMS ..Set TLNr=$G(^TO("IU",TOENr,TLUNr)) ..If TLNr Set OrdDat=$P($$ORDGEG^FLOWTOE(LEVNr,TOENr,TLNr),D,2) Set:$L(OrdDat) OrdDat=$$INTDATE^vhDTyp(OrdDat) ..Set Magazijn=$S(OverKind:"K",1:"M") ..Do PUT^PRHIST(PRNr,AantWMS,"I",Magazijn,LEVNr,TOENr,TLUNr,+RCPODate,$G(RCPNr),$G(HistRef),.WMS,,MPRNr,$G(OrdDat)) .Set ^TVE(+$H,$I(^TVE(+$H)))=PRNr_"\"_$G(AantWMS)_"\"_"I"_"\"_$G(Magazijn)_"\"_$G(LEVNr)_"\"_$G(TOENr)_"\"_$G(TLUNr)_"\"_+$G(RCPDate)_"\"_$G(RCPNr)_"\"_$G(HistRef)_"\"_$G(WMS)_"\"_$G(MRPNr)_"\"_$G(OrdDat)_"\Cache05" .Do:$$HasHalfFabr^PRBS(PRNr) HADPR^PRHF(TOENr,TLUNr,PRNr,AantWMS,RCPODate) ; Verwerking halffabrikaten Else Do ; DO-product .Do ONE^BLHIST(PRNr,RCPODate,AantWMS,(CifPPL*AantWMS),("T;"_TOENr)) Quit Cache05Geproduceerd(LeverancierNummer, ToeleveringID, ToeleveringLijnCode, ProductID, ReceptieTijdstip, Aantal, AxConfigId, AxInventTransId, AxMaatwerkGenerischItemId) New Cache05GeproduceerdEventData,Cache05GeproduceerdEvent If ProductID{ Set LeverancierID = "L||"_LeverancierNummer Set Cache05GeproduceerdEventData = ##class(DOM.AKP.event.Cache05GeproduceerdEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, LeverancierID, ReceptieTijdstip, Aantal, AxConfigId, AxInventTransId, AxMaatwerkGenerischItemId) Set Cache05GeproduceerdEvent = ##class(DOM.AKP.event.Cache05GeproduceerdEvent).%New(Cache05GeproduceerdEventData) Set ^TVE(+$H,$I(^TVE(+$H)))="Cache05GeproduceerdEvent\"_ProductID_"\"_Aantal Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(Cache05GeproduceerdEvent) } Quit ; ; Copieren naar ^KTO5 COPY(TOENr,TLNr,Rec,Aantal) New LEVNr Set LEVNr=$P($G(^KTO1(TOENr)),D) Quit:'LEVNr If '$G(TLNr) Do Quit .Quit:$D(^KTO5(LEVNr,TOENr)) .Set TLNr="" .For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:TLNr="" Set Rec=^KTO(LEVNr,TOENr,TLNr),^KTO5(LEVNr,TOENr,TLNr)=Rec If $D(Aantal) Quit:'Aantal If Aantal'=$P(Rec,D,3) Do .Set $P(Rec,D,9)=$J(($P(Rec,D,9)/$P(Rec,D,3)*Aantal),0,2) .Set $P(Rec,D,10)=$J(($P(Rec,D,10)/$P(Rec,D,3)*Aantal),0,2) .Set $P(Rec,D,16)=$J(($P(Rec,D,16)/$P(Rec,D,3)*Aantal),0,2) .Set $P(Rec,D,3)=Aantal Set $P(Rec,D,30)=$H ; Receptietijdstip If $D(^KTO5(LEVNr,TOENr,TLNr)) Quit:Rec=^KTO5(LEVNr,TOENr,TLNr) Set TLNr=$O(^KTO5(LEVNr,TOENr,TLNr+1),-1)+.01 Set ^KTO5(LEVNr,TOENr,TLNr)=Rec Quit ; ; Opkuis bestanden KILL(TOENr,TLNr) New R,LEVNr,ABNr,ABLNr Set LEVNr=$P($G(^KTO1(TOENr)),D) Quit:'LEVNr Set R=^KTO(LEVNr,TOENr,TLNr),ABLNr=$P(R,D,13,14) Kill ^KTOK(LEVNr,TOENr,TLNr),^KTO3(TOENr,ABLNr_D_TLNr),^KTO(LEVNr,TOENr,TLNr) If $N(^KTO(LEVNr,TOENr,100))=-1 Do .Set R=^KTO(LEVNr,TOENr,1),ABNr=$P(R,D,10) .Do KILLAB^FLOWTOE3(LEVNr,TOENr,ABNr) .Kill ^KTO1(TOENr),^KTO2(LEVNr,TOENr),^KTOB(TOENr),^KTO(LEVNr,TOENr),^BLBeri("Z",TOENr) Quit ; ; Nazicht backorders WMS (niet de initiele) BACKORD(RCPNr,TOENr,TLUNr,NoAsk) New %J,R,LEVNr,STLUNr,PRNr,MPRNr,KPRNr,EWStat,EWProb,Count,OkCount,NOkCount New LD,Bold,Input,CheckBo,AantGevr,AantWMS,AantBo,InbToe,Level Set TOENr=$G(TOENr),TLUNr=$G(TLUNr),Level=$S(TLUNr:"L",TOENr:"T",1:"R") Set Bold="B",R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),EWProb=$P(R,D,21) Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Set (Count,NOkCount,OkCount)=0 Set TOENr=$S(Level="R":"",1:$O(^RCP("D",RCPNr,"D",TOENr),-1)) For Set TOENr=$O(^RCP("D",RCPNr,"D",TOENr)) Quit:TOENr="" Do Quit:"TL"[Level .Set TLUNr=$S(Level'="L":"",1:$O(^RCP("D",RCPNr,"D",TOENr,TLUNr),-1)) .For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do Quit:Level="L" ..Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr) ..Set MPRNr=$P(R,D),EWStat=$P(R,D,2),EWProb=$P(R,D,3),AantGevr=$P(R,D,4),AantWMS=$P(R,D,5),AantBo=$P(R,D,6) ..Quit:EWStat="I" ..If EWProb="" Do Quit ...Set R=0_D_RCPNr_D_TOENr_D_TLUNr_D_D_R ...Set OkCount=OkCount+1,^HULP(%J,0,OkCount)=R ..If $D(^PRLINK("D",MPRNr)),Count,^HULP(%J,Count)'="&S" Set Count=Count+1,^HULP(%J,Count)="&S" ..Set R=AantGevr-AantWMS_D_RCPNr_D_TOENr_D_TLUNr_D_D_R ..Set:$P(R,D)'<0 NOkCount=NOkCount+1 Set:$P(R,D)'>0 $P(R,D)="" ..Set:'AantWMS!AantBo!(LEVNr=$$$LevHalux) R=$P(R,D)_"#1\"_$P(R,D,2,99) ..Set Count=Count+1,^HULP(%J,Count)=R,STLUNr="" ..For Set STLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr)) Quit:STLUNr="" Do ...Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr,STLUNr) ...Set KPRNr=$P(R,D),EwProb=$P(R,D,2),AantGevr=$P(R,D,3),AantWMS=$P(R,D,4) ...Quit:KPRNr=MPRNr ...Set $P(R,D)=$P(R,D)_"#"_MPRNr,$P(R,D,5)=D_$P(R,D,5),$P(R,D,2)=D_$P(R,D,2) ...Set R=AantGevr-AantWMS_D_RCPNr_D_TOENr_D_TLUNr_D_STLUNr_D_R ...Set:$P(R,D)'>0 $P(R,D)="" Set:'AantWMS R=$P(R,D)_"#1\"_$P(R,D,2,99) ...Set Count=Count+1,^HULP(%J,Count)=R ..If MPRNr'=KPRNr,Count,^HULP(%J,Count)'="&S" Set Count=Count+1,^HULP(%J,Count)="&S" If $G(NoAsk),NOkCount Quit 0 ; Er zijn fouten maar NIET interactief Else If NOkCount Do .If OkCount Do ..Set Count=Count+1,^HULP(%J,Count)="NP" ..For OkCount=1:1:OkCount Set R=^HULP(%J,0,OkCount),Count=Count+1,^HULP(%J,Count)=R ..Kill ^HULP(%J,0) .Do STORE^vhTERMINA() .Do DISPLAY^vhScherm("EWTOE") .Do INIT^vhLIST("EWTOE","BACKORD",.LD) .Do WRITE^vhLIST(.LD) .Set R=^HULP(%J,LD("SELECT")),TOENr=$P(R,D,3),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) .;If TOENr,AantGevr=AantWMS Do MOVE^vhLIST(.LD,"DO","") .For Set Input=$$SCROLL^vhLIST(.LD) Do Quit:Input="CANC" ..If Input="COM" Set Input="" Do CALL^vhMenu("EWTOE") ..Do EXEC^vhMenu("EWTOE",.Input) .Set CheckBo='$D(^HULP(%J)) .Kill ^HULP(%J) .Do REFRESH^vhTERMINA() Else Do ; Er zijn geen fouten .If Level="R" Set R="receptie "_$$EXTNUM^vhDTyp(RCPNr,0,".",0) .If Level="T" Set R="toelevering "_$$EXTNUM^vhDTyp(TOENr,0,".",0) .;If Level="L" Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),PRNr=$P(R,D),R="produkt "_$P(^KPR(PRNr,0),D) .If Level="L" Set (CheckBo,InbToe)=1 .Else Set CheckBo=0,InbToe=$S($G(NoAsk):1,1:$$^vhTXTPOP("EWTOE","INBTOE","",R,0)) .Set:InbToe CheckBo=1 Quit CheckBo ; ; Ingave backorderaantallen WMS (niet de initiele) MARKBO(Input) New I,R,TOENr,AantBo,AantGevr,AantWMS Set R=^HULP(%J,LD("SELECT")) If Input="ALL" Do .For I=1:1 Quit:'$D(^HULP(%J,I)) Do ..Set R=^HULP(%J,I),TOENr=$P(R,D,3),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) ..Quit:'TOENr Quit:AantGevr=AantWMS ..Set AantBo=AantGevr-AantWMS_"#1" Set:AantBo'>0 AantBo="" ..Set $P(R,D)=AantBo,^HULP(%J,I)=R .Do WRITE^vhLIST(.LD) Else Do .Set R=^HULP(%J,LD("SELECT")),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) .Set AantBo=AantGevr-AantWMS Set:AantBo'>0 AantBo="" .If AantBo,Input'="V" Set AantBo=AantBo_"#1" .Set $P(R,D)=AantBo,^HULP(%J,LD("SELECT"))=R .Do MOVE^vhLIST(.LD,"DO",1) Quit ; ; Invullen backorderaantallen WMS in de receptieglobal (niet de initiele) SAVEBO(CONSNr,Level) New I,R,CheckBev,Save,LEVNr,TOENr,TLUNr,STLUNr,TLNr,AantBo,AantGevr,AantWMS,NextLine,BevBo Set Level=$G(Level) Set:Level="" Level="R" Set R=^RCP("D",RCPNr),LEVNr=$P(R,D) Set CheckBev=0,Save=1 For I=1:1 Quit:'$D(^HULP(%J,I)) Do Quit:CheckBev .Set R=^HULP(%J,I),AantBo=$P(R,D),TOENr=$P(R,D,3),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) .If TOENr,AantGevr'=AantWMS,AantBo,'$P(AantBo,"#",2) Set CheckBev=1 If Level="R" Set R="receptie "_$$EXTNUM^vhDTyp(RCPNr,0,".",0) If Level="T" Set R="toelevering "_$$EXTNUM^vhDTyp(TOENr,0,".",0) If Level="L" Do .New PRNr .Set R=^HULP(%J,LD("SELECT")),PRNr=$P(R,D,6),R="produkt "_$P(^KPR(PRNr,0),D) If Level="L",'CheckBev Set Save=1 Else Set Save=$$^vhTXTPOP("EWTOE",$S(CheckBev:"BEVBO",1:"INBTOE"),"",R,1) If Save Do .For NextLine=1:1 Quit:'$D(^HULP(%J,NextLine)) Quit:^HULP(%J,NextLine)="NP" Do ..Set R=^HULP(%J,NextLine),TOENr=$P(R,D,3),TLUNr=$P(R,D,4),STLUNr=$P(R,D,5) ..Quit:'TOENr Quit:STLUNr ..Set EWProb=$P(R,D,8),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10),AantBo=$P(R,D,11) ..If AantBo Set AantBo=AantBo+$P(R,D) ..Else Set:$P($P(R,D),"#",2) AantBo=+$P(R,D) ..If 'AantBo Quit:AantWMS=AantGevr Quit:EWProb="G" ..If AantBo'>0 Do ...Set TLNr=^TO("IU",TOENr,TLUNr) ...Do MODAANT^FLOWTOE6(LEVNr,TOENr,TLNr,AantWMS) ..If AantBo>0 Do ...Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),$P(R,D,6)=AantBo ...Set ^RCP("D",RCPNr,"D",TOENr,TLUNr)=R .Kill ^HULP(%J) Set:$L(Save) Input="CANC" Quit ; RPLPR New R,PRNr Set R=^HULP(%J,LD("SELECT")),PRNr=+$P(R,D,6) Do STORE^vhTERMINA() Set R=$$RAADPL^PRODUKT(PRNr,"O",1) Do REFRESH^vhTERMINA() Quit ; MODTOE New R,Locals,TOENr Set R=^HULP(%J,LD("SELECT")),TOENr=$P(R,D,3) Do STORE^vhTERMINA() Set Locals("TOENr")=TOENr,Locals("Extern")=1,Locals("EwmsLink")=0 Do DO^vhPROGRAM("FTE^KTO30") Do REFRESH^vhTERMINA() Quit ; STATINB(RCPNr) New R,TOENr,TLUNr Set R=^RCP("D",RCPNr),$P(R,D,20)="I",$P(R,D,24)=$H,^RCP("D",RCPNr)=R Set TOENr="" For Set TOENr=$O(^RCP("D",RCPNr,"D",TOENr)) Quit:TOENr="" Do .Set TLUNr="" .For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do ..Set R=^RCP("D",RCPNr,"D",TOENr,TLUNr),$P(R,D,2)="I",^RCP("D",RCPNr,"D",TOENr,TLUNr)=R ..Kill:$G(^RCP("IT",TOENr,TLUNr))=RCPNr ^RCP("IT",TOENr,TLUNr) Kill ^RCP("IO",RCPNr) Quit ; CHKISTAT(RCPNr) New R,TOENr,TLUNr,WMSStat,Quit,IsBlum Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),LevRef=$P(R,D,3),WMSStat=$P(R,D,20),Quit=0 If WMSStat="A" Do .Set TOENr="" .For Set TOENr=$O(^RCP("D",RCPNr,"D",TOENr)) Quit:TOENr="" Do Quit:Quit ..Set TLUNr="" ..For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do Quit:Quit ...Set Quit=$P(^RCP("D",RCPNr,"D",TOENr,TLUNr),D,2)'="I" .Quit:Quit .Set R=^RCP("D",RCPNr),$P(R,D,20)="I",$P(R,D,24)=$H,^RCP("D",RCPNr)=R .Kill ^RCP("IO",RCPNr) .Set IsBlum=$S(LevRef="":0,1:$D(^Verv(LEVNr,"D",LevRef))),TOENr="" .If IsBlum Set R=^Verv(LEVNr,"D",LevRef) Set:$P(R,D,7)'="F" $P(R,D,7)="I",^Verv(LEVNr,"D",LevRef)=R Quit ; UPTrapCatch Set Error=$ZE Do ERROR^EWLOG($T(UPTRAP)) Xecute "Set C(""ERROR"")="_$P($T(UPTRAP),";",2,99) Quit UPRCP(C) New R,LEVNr,TOENr,TLUNr,TLUSNr,TLNr,SplitNr,PRNr,TPRNr,Aantal,TAantal New BackOrd,BOAantal,WMS,KLNr,ORDNr,OLNr,OLUNr,Text,Link,MailId,BelDat Set $zt="UPTrapCatch^EWTOE" Set TOENr=C("TOENR"),TLUSNr=C("TLUNR"),SplitNr=C("SPLITSNR"),TLUNr=TLUSNr+SplitNr-1 Set R=$G(^KTO1(TOENr)),LEVNr=$P(R,D) If LEVNr Do .Set TLUNr=$$GETTLUNR(TOENr,TLUNr) .Set TLNr=^TO("IU",TOENr,TLUNr) .If TLNr Do ..Set R=^KTO(LEVNr,TOENr,1) ..Set R=^KTO(LEVNr,TOENr,TLNr),TPRNr=$P(R,D,2),TAantal=$P(R,D,3) ..Set ORDNr=$P(R,D,27),OLNr=$P($P(R,D,28),";"),OLUNr="" ..If TPRNr Do ...Set PRNr=C("PRNR") ...If TPRNr=PRNr Do ....Set Aantal=C("DELTAIN"),BackOrd='C("COMPLEET") ....If TAantal'$H . . Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) . . Set:$P(Rec,D,29)="" $P(Rec,D,29)=$P(Rec,D,25) . . Set $P(Rec,D,25)=blLeveringsTermijn.GetVroegsteLeverDag(RefDate) // nieuwe leverdag wegschrijven . . Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec . . Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) . . Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Leverdatum()) . Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit ; Lock alle referenties van de doorgegeven toeleveringslijnen via .Local(TOENr,TLUNr) ; toeleveringen, producten, orders... UPRCPLock(ToLock) New Rec,TOENr,TLUNr,TLNr,LEVNr,PRNr,KLNr,ORDNr,LockOk,LockNOk,LockRef,HFCode,HFPRNr Set TOENr="" For Set TOENr=$O(ToLock(TOENr)) Quit:TOENr="" Do . Set LEVNr=$P(^KTO1(TOENr),D) . Do LOCK("^KTO("_LEVNr_","_TOENr_")",.LockOk,.LockNOk) . Set TLUNr="" . For Set TLUNr=$O(ToLock(TOENr,TLUNr)) Quit:TLUNr="" Do . . Set TLNr=^TO("IU",TOENr,TLUNr) . . Set Rec=^KTO(LEVNr,TOENr,TLNr),PRNr=$P(Rec,D,2),ORDNr=$P(Rec,D,27) . . Do:PRNr . . . Do LOCK("^KPR("_PRNr_")",.LockOk,.LockNOk),LOCK("^KSPW("_PRNr_")",.LockOk,.LockNOk) . . . Do LOCK("^PRSTOCK(""D"","_PRNr_")",.LockOk,.LockNOk) . . . If '$$ISHALUX^PRODUKT2(PRNr),'$$ISNV^PRODUKT2(PRNr) Quit . . . Set HFCode="" . . . For Set HFCode=$O(^PRBS("BS",PRNr,HFCode)) Quit:HFCode="" Do . . . . Set Rec=^PRBS("BS",PRNr,HFCode),HFPRNr=$P(Rec,D) . . . . Quit:$P(Rec,D,3)'="H" ; Geen halffabrikaat . . . . Quit:'$D(^KPR(HFPRNr)) . . . . Do LOCK("^KPR("_HFPRNr_")",.LockOk,.LockNOk),LOCK("^PRSTOCK(""D"","_HFPRNr_")",.LockOk,.LockNOk) . . Quit:'ORDNr . . Set KLNr=$P(^KO1(ORDNr,"F"),D) . . Do LOCK("^KOD("_KLNr_",""F"","_ORDNr_")",.LockOk,.LockNOk) Set LockOk="LockOk" For Set LockOk=$Q(@LockOk) Quit:LockOk="" Set LockRef=@LockOk,ToLock("L",LockRef)="" If $D(LockNOk) Do ; Niet alle referenties konden gelockt worden, dus vrijgave van alle gelockte . Do UPRCPUnLock(.ToLock) . Kill ToLock("L") . ; Bepalen van het antwoord . If $D(LockNOk("KTO")) Do . . Set LEVNr=$O(LockNOk("KTO","")),TOENr=$O(LockNOk("KTO",LEVNr,"")) . . Set LockNOk="Toelevering "_TOENr_" van "_$P(^KLE(^KL1(LEVNr),0),D,2) . Else If $D(LockNOk("KPR")) Do . . Set PRNr=$O(LockNOk("KPR","")),LockNOk="Product """_$P(^KPR(PRNr,0),D)_"""" . Else If $D(LockNOk("PRSTOCK")) Do . . Set PRNr=$O(LockNOk("PRSTOCK","D","")),LockNOk="Stock van product """_$P(^KPR(PRNr,0),D)_"""" . Else If $D(LockNOk("KOD")) Do . . Set KLNr=$O(LockNOk("KOD","")),ORDNr=$O(LockNOk("KOD",KLNr,"F","")) . . Set LockNOk="Order "_ORDNr_" van "_$P(^KKL(^KK1(KLNr),0),D,2) . Else If $D(LockNOk("KSPW")) Do . . Set PRNr=$O(LockNOk("KSPW","")),LockNOk="Weekstatistiek van product """_$P(^KPR(PRNr,0),D)_"""" . Else Set LockNOk="Bepaalde referenties zijn" . Set LockNOk=LockNOk_" in gebruik." Quit $G(LockNOk) ; Lock een referentie LOCK(LockRef,LockOk,LockNOk) New %TC,Index Set Index=""""_$P($P(LockRef,"("),"^",2)_""","_$P($P(LockRef,"(",2),")") If '$D(@("LockOk("_Index_")")),'$D(@("LockNOk("_Index_")")) Do . Do ADD^vhLock(LockRef) . If %TC Set @("LockOk("_Index_")")=LockRef . Else Set @("LockNOk("_Index_")")=LockRef Quit ; Vrijgave van alle doorgegeven, gelockte referenties UPRCPUnLock(ToLock) New LockRef Set LockRef="" For Set LockRef=$O(ToLock("L",LockRef)) Quit:LockRef="" Do REMOVE^vhLock(LockRef) Quit ; Beppaal de CifPPL van een product CifPPL(PRNr) New R,CifPPL,LEVNr,NoSa Set LEVNr=$$LEVNR^PRODUKT2(PRNr) Set NoSa="" Set:$P(^KLE(^KL1(LEVNr),2),D,3) NoSa="S" ; Schaduwprijzen Set R=$$PRIJSGEG^KPRIJS(PRNr,NoSa),CifPPL=$P(R,D,6) Quit CifPPL ; NOTOE ;"Toelevering onbekend:"_RCPNr_";"_TOENr_";"_LEVNr_";"_$P(^KLE(^KL1(LEVNr),0),D,2) NOTOELN ;"Toeleveringslijn onbekend:"_RCPNr_";"_TOENr_";"_TLUNr_";"_LEVNr_";"_$P(^KLE(^KL1(LEVNr),0),D,2)_";"_PRNr_";"_$P(^KPR(PRNr,0),D) UPTOEL ;"Toelevering onbekend :"_TOENr UPTOELN ;"Toeleveringslijn onbekend "_TOENr_";"_TLUNr UPROD ;"Geen product gedefinieerd in :"_TOENr_";"_TLUNr UPRODNOK ;"Produkt "_$P(^KPR(PRNr,0),D)_" komt niet overeen met toelevering "_TOENr_";"_TLUNr_" "_$P(^KPR(TPRNr,0),D) UPAANTNOK ;"Aantal in toelevering te weinig "_TOENr_";"_TLUNr_" "_TAantal_" - "_Aantal UPTRAP ;"TRAP "_TOENr_";"_TLUNr_";"_Error ;