EWRCPAP ;E'WMS Receptie (Ander product in terugname) [ 02/19/2002 3:25 PM ] ; Controle 'Menulijn actief' CHKMENU(Menu,Aktie) New R,Ok,IsTerugname,PRNr,WMSStatus Set R=^HULP(%J,"L",LD("SELECT")),IsTerugname=$P(R,D)="K",PRNr=$P(R,D,11),WMSStatus=$P(R,D,12) Set Ok=IsTerugname ; Terugname? Set:Ok Ok=''PRNr Set:Ok Ok='$D(^PRLINK("D",PRNr)) ; Samengesteld product Set:Ok Ok="W"[WMSStatus ; Status '' of 'W'? Quit Ok ; Aanpassen product (opgeroepen vanuit status receptie) ModProduct New R,RCPNr,TBNr,TBLUNr,OldPRNr,NewPRNr Set R=^HULP(%J,"L",LD("SELECT")),RCPNr=$P(R,D,3),TBNr=$P(R,D,4),TBLUNr=$P(R,D,5),OldPRNr=$P(R,D,11) If RCPNr,TBNr,TBLUNr,$$CheckNewPRNrInTerugname(RCPNr,TBNr,TBLUNr) { Do NewPRNrInTerugname(RCPNr,TBNr,TBLUNr) Set NewPRNr=$P(^RCP("D",RCPNr,"D",TBNr,TBLUNr),D) If NewPRNr'=OldPRNr { Set $P(^HULP(%J,"L",LD("SELECT")),D,11)=NewPRNr Do LINE^vhLIST(.LD,LD("SELECT")) } } Quit ; Selectie van het nieuwe product NewPRNrInTerugname(RCPNr,TBNr,TBLUNr) New R,KLNr,OldPRNr,NewPRNr Set R=^RCP("D",RCPNr),KLNr=$P(R,D,2) Set R=^RCP("D",RCPNr,"D",TBNr,TBLUNr),OldPRNr=$P(R,D) Set NewPRNr=$$SELECT^PRODUKT6() If NewPRNr,NewPRNr'=OldPRNr { If $D(^PRLINK("D",NewPRNr)) Do WARN^vhTXTPOP($P(^KPR(NewPRNr,0),D)_" is een samengesteld product~en kan dus niet gebruikt worden!","") Quit Quit:'$$^vhTXTPOP("EWRCPST","MODPRODUCT","",TBNr,$P(^KKL(^KK1(KLNr),0),D,2),$P(^KPR(OldPRNr,0),D),$P(^KPR(NewPRNr,0),D)) Do UpdateProductOpToeLijn(RCPNr,TBNr,TBLUNr,NewPRNr) } Quit ; Mag een product gewijzigd worden (controle van de status) CheckNewPRNrInTerugname(RCPNr,TBNr,TBLUNr) New R,Ok,IsTerugname,PRNr,WMSStatus Set R=^RCP("D",RCPNr),IsTerugname=$P(R,D)="K" Set Ok=IsTerugname ; Terugname? If 'Ok { Set R=^RCP("D",RCPNr,"D",TBNr,TBLUNr),PRNr=$P(R,D) Do WARN^vhTXTPOP("Receptie "_RCPNr_" is geen terugname.~Product "_$P(^KPR(PRNr,0),D)_" kan dus niet gewijzigd worden!","") } If Ok { Set R=^RCP("D",RCPNr,"D",TBNr,TBLUNr),PRNr=$P(R,D),WMSStatus=$P(R,D,2) Set:Ok Ok="W"[WMSStatus ; Status '' of 'W'? Do:'Ok WARN^vhTXTPOP("Product "_$P(^KPR(PRNr,0),D)_" is reeds "_$S(WMSStatus="P":"partieel verwerkt",WMSStatus="C":"gecontroleerd" ,WMSStatus="S":"gestockeerd",WMSStatus="I":"ingeboekt",1:"verwerkt")_"~en kan dus niet gewijzigd worden!","") } If Ok { Set Ok='$D(^PRLINK("D",PRNr)) ; Bevat het product kinderen? Do:'Ok WARN^vhTXTPOP($P(^KPR(PRNr,0),D)_" is een samengesteld product~en kan dus niet gewijzigd worden!","") } Quit Ok ; Het uiteindelijk wijzigen van de lijn UpdateProductOpToeLijn(RCPNr, TBNr, TBLUNr, NewPRNr) New R,ObjType,ObjRef Set R=^RCP("D",RCPNr),ObjType=$P(R,D),ObjRef=$P(R,D,2) If ObjType="K" { Set BLNr=$$BLNR^FLOWBON3(TBNr, TBLUNr) Do NewProdInBon(ObjRef,TBNr,BLNr,NewPRNr) Do NewProdInRCP(RCPNr,TBNr,TBLUNr,NewPRNr) } Quit ; Wijzigen in de terugname NewProdInBon(KLNr,BONNr,BLNr,NewPRNr) New %TC,sFL,BonRec,OldPRNr,Aantal Set BonRec=^KUL(KLNr,"F",BONNr,BLNr),OldPRNr=$P(BonRec,D,2),Aantal=$P(BonRec,D,3) If NewPRNr'=OldPRNr,$D(^KPR(NewPRNr)) Do . Do FETCHKL^UTILI(KLNr,"sFL") . Set KlMunt=$P(sFL(0),D,11) . Set:KlMunt="" KlMunt=$$FADEF^vhRtn1() . For Do ADD^vhLock("^KUL(KLNr,""F"",BONNr,BLNr)") Quit:%TC Do LDISP^vhLock("^KUL(KLNr,""F"",BONNr,BLNr)","Terugname "_BONNr) . Do DELBON^FLOWBON3(KLNr,BONNr,BLNr),DELKUP^FLOWBON3(KLNr,BONNr,BLNr) . Set $P(^KUL(KLNr,"F",BONNr,BLNr),D,2)=NewPRNr . Set $P(^KUL(KLNr,"F",BONNr,BLNr),D,26)="" ; Steeds herrekenen . Do LRECALC^FLOWBON(KLNr,BONNr,BLNr,0) . Do BUILDBON^FLOWBON3(KLNr,BONNr,BLNr),BUILDKUP^FLOWBON3(KLNr,BONNr,BLNr) . Do REMOVE^vhLock("^KUL(KLNr,""F"",BONNr,BLNr)") Quit ; Wijzigen in de receptie NewProdInRCP(RCPNr, TBNr, TBLUNr, NewPRNr) New RcpRec,STBLUNr,Aantal,BOAantal,RCPBRef Set RcpRec=^RCP("D",RCPNr,"D",TBNr,TBLUNr),Aantal=$P(RcpRec,D,4),BOAantal=$P(RcpRec,D,6),RCPBRef=$P(RcpRec,D,10) Kill ^RCP("D",RCPNr,"D",TBNr,TBLUNr) Do BLDTL(RCPNr,TBNr,TBLUNr,NewPRNr,Aantal,BOAantal,RCPBRef) Do ##class(BL.MB.UGLYPicking.ReceptieOpkuis).UpdateProductOpToeLijn(RCPNr,TBNr,TBLUNr,NewPRNr) Quit BLDTL(RCPNr,TBNr,TBLUNr,PRNr,Qty,BOQty,RCPBRef) ; Verwerken van een toeleverings-, terugnamelijn met eventuele opslitsing in verschillende kindproducten New TLRec,KPRNr,OLCache If 'PRNr Do ERROR^EWLOG("NOPROD") Quit ;Opbouw OL in RCP Set TLRec="" Set $P(TLRec,D,1)=PRNr Set $P(TLRec,D,4)=Qty Set $P(TLRec,D,6)=BOQty Set $P(TLRec,D,10)=RCPBRef Set ^RCP("D",RCPNr,"D",TBNr,TBLUNr)=TLRec Set ^RCP("IT",TBNr,TBLUNr)=RCPNr ; If $D(^PRLINK("D",PRNr)) Do ; Opslitsen in kindproducten .Set KPRNr="" .For Set KPRNr=$O(^PRLINK("D",PRNr,KPRNr)) Quit:KPRNr="" Do ..Do BLDSUB(RCPNr,TBNr,TBLUNr,KPRNr,Qty*$P(^PRLINK("D",PRNr,KPRNr),D),RCPBRef) Else Do .Do BLDSUB(RCPNr,TBNr,TBLUNr,PRNr,Qty,RCPBRef) Quit BLDSUB(RCPNr,TBNr,TBLUNr,PRNr,Qty,RCPBRef) ; opbouw van een subreceptielijn New SubRec,SubTLNr,C,PRRec Set SubTLNr=$O(^RCP("D",RCPNr,"D",TBNr,TBLUNr,""),-1) Set SubTLNr=SubTLNr\100+1*100 Set SubRec="" Set $P(SubRec,D,1)=PRNr Set $P(SubRec,D,3)=Qty Set $P(SubRec,D,10)=RCPBRef Set ^RCP("D",RCPNr,"D",TBNr,TBLUNr,SubTLNr)=SubRec Quit