#include BL.Prod.OptiBox #include BL.Derde.KlantSpecifiek #include vhLib.Macro EWBON ;E'WMS Opmaken leveringsbon [ 11/06/2003 9:44 AM ] ;Quit ; ; ;Dit is eigenlijk een private method geworden. Niet meer rechtstreeks oproepen. Enkel nog via: Do ##class(BL.Legacy.EWBON).VerwerkConsolidatieNaarBon() BON(CONSNr,NoAsk) New R,KLNr,ORDNr,VerzW,VerzZone,VerzDat,LevAdr,Port,LevVw,Taal,FullBO,KlachtId,Behand,VerpTyp,TransfWV,BelDat,RembAfgehandeld,FactFreq,Iterator,BonLijnTeller,BonMaxTeller Do GETFBO(CONSNr,.FullBO) If $$LOCK(CONSNr,$G(NoAsk)) Else Do UNLOCK(CONSNr) Quit 0 If $P($G(^ORDW("D",CONSNr)),"\",20)="B" Do UNLOCK(CONSNr) Quit 0 ; Reeds op bon gezet dit kan voorkomen als de lock te lang blijft wachten op bv. een iteractief op bon zetten If '$$BACKORD(CONSNr,$G(NoAsk)) Do UNLOCK(CONSNr) Quit 0 Do CheckAantORDW(CONSNr) Set R=^ORDW("D",CONSNr),KLNr=$P(R,D),$P(R,D,19)=$H,^ORDW("D",CONSNr)=R Set ORDNr="",Behand("AUTO")=1 For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set KlachtId="" .For Set KlachtId=$O(^KlachtI("O",ORDNr,KlachtId)) Quit:KlachtId="" Do ..Set R=$G(^KlachtD(KlachtId)) ..Quit:$P(R,D)'="K" Quit:$P(R,D,2)'=KLNr ..Quit:$P(R,D,31)<$$CALCDATE^vhLib.DataTypes(,"J",-1) ; Klacht is meer dan een jaar oud (i.v.m. rotatie orders en leveringen) ..Set ^KlachtD(KlachtId,"R",$O(^KlachtD(KlachtId,"R",""),-1)+1)="B#"_CONSNr ..Do BEHAND^KLACHTO(KlachtId,.Behand),BLDIND^KLACHT(KlachtId) Set R=^ORDW("D",CONSNr),KLNr=$P(R,D),VerzW=$P(R,D,2),VerzZone=$P(R,D,4),RembAfgehandeld=$P(R,D,8) Set VerzDat=$P(R,D,5) Set:VerzDat="" VerzDat=+$H Set FactFreq=$$GetFactFreq^FactFreq(KLNr) Set R=^KKL(^KK1(KLNr),0),Taal=$P(R,D,9) Set:Taal="" Taal="N" Set LevAdr=$G(^ORDW("D",CONSNr,"A")),$P(LevAdr,D,31)=$P(LevAdr,D,31) Set ^KUL(KLNr,"F",CONSNr,0)=101,(ORDNr,BelDat)="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set R=$P(^KOD(KLNr,"F",ORDNr,1),D,16) .If $L(R) Set R=$$INTDATE^vhLib.DataTypes(R) Set:R>BelDat BelDat=R Set ORDNr=$O(^ORDW("D",CONSNr,"D","")),R=^KOD(KLNr,"F",ORDNr,1) Set $P(R,D,2)=$$EXTDATE^vhLib.DataTypes(VerzDat,"DKP"),$P(R,D,3)="" Set $P(R,D,7)=$G(^RES("KLANT","PI","VERZENDWIJZE","D",$S($P(VerzW,";")="":"*",1:$P(VerzW,";")),Taal)) Set:$P(R,D,7)="" $P(R,D,7)=$G(^RES("KLANT","PI","VERZENDWIJZE","D",$S($P(VerzW,";")="":"*",1:$P(VerzW,";")),"N")) Set $P(R,D,7)=VerzW_" #"_$P(R,D,7),$P(R,D,8)="",$P(R,D,16)=$$EXTDATE^vhLib.DataTypes(BelDat,"DKP") Set $P(R,D,19)=VerzZone,($P(R,D,12),$P(R,D,24),$P(R,D,28))="" Set:$L($TR(FactFreq,"#","")) $P(R,D,12)=1 ; Facturatiefrequentie verschillend van dagelijks dus facturatie uitgesteld Set $P(R,D,37)=RembAfgehandeld,^KUL(KLNr,"F",CONSNr,1)=R Set $P(^KUL(KLNr,"F",CONSNr,1),D,48)=$P(^ORDW("D",CONSNr),D,25) ; invullen wie bon heeft doorgestuurd naar EWMS Set:$L($P(^ORDW("D",CONSNr),D,25)) $P(^KUL(KLNr,"F",CONSNr,1),D,49)=$P(^ORDW("D",CONSNr),D,18) ; invullen wanneer bon doorgestuurd is geworden naar EWMS Set R="",$P(R,D,31)="",^KUL(KLNr,"F",CONSNr,2)=R,^KUL(KLNr,"F",CONSNr,3)=LevAdr Set ORDNr="",VerpTyp=$$ADDTYPE^VERPAK(,VerzW) Set ^KU1(CONSNr,"F") = KLNr_D Set BonLijnTeller=$S($G(NoAsk):"",1:0) Set BonMaxTeller=$$AantalLijnenInBon(CONSNr) For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set VerpTyp=$$ADDTYPE^VERPAK(VerpTyp,$$ORDER^VERPAK(ORDNr)) .Do ORDER(KLNr,CONSNr,ORDNr,.BonLijnTeller,BonMaxTeller) Do SORT(KLNr,CONSNr) Do STATBON(CONSNr) Kill ^ORDW("IW",CONSNr) Do UNLOCK(CONSNr) Set R=^KUL(KLNr,"F",CONSNr,1),TransfWV=$P(R,D,25)="T" If 'TransfWV,'$$EMPTY(KLNr,CONSNr) Do .Set ^KU2("F",KLNr,CONSNr)="",^KUB(CONSNr,"F")=KLNr_D .Set R=$$BON^PORT(CONSNr),Port=$P(R,D),LevVw=$P(R,D,2) .Set R=^KUL(KLNr,"F",CONSNr,1) .Set $P(R,D,13)=Port,$P(R,D,21)=LevVw,$P(R,D,23)="" .Set $P(R,D,24)=$$CALCVERP^EWBON4(KLNr,CONSNr),$P(R,D,30)=VerpTyp .If '$L($P(R,D,16)),$$AutoBelViaBon^EWBON4(CONSNr) Set $P(R,D,16)=$P(R,D,2),$P(R,D,23)="N" .Set $P(R,D,39)=$$ISREMB^REMBOURS(KLNr) .Set ^KUL(KLNr,"F",CONSNr,1)=R .Set ^KU3(-VerzDat,VerzW_" ",CONSNr)=KLNr_"\F" .If $$GETEXTRA^REMBOURS(KLNr) Do ..Do BONEXTRA^REMBOURS(KLNr,CONSNr,0) .Else If $$ISREMB^REMBOURS(KLNr) Do REMBBON^REMBOURS(KLNr,CONSNr) .Do MAILEXP^EWBON4(KLNr,CONSNr,LevAdr) .Do RCP(CONSNr) .Do ##class(BL.Flow.RecuPak.Main).AddVerpakToBon(CONSNr) Else Do:TransfWV ; Verwerking transfertorders .Set ^KU1(CONSNr,"F")=KLNr_D_CONSNr_"\T\",^KU1(CONSNr,"F",CONSNr)="" .If '$$ISTERUGN^FLOWBON5(CONSNr) Do ..Merge ^KUL(KLNr,"T",CONSNr)=^KUL(KLNr,"F",CONSNr) ..Do DELBON^FLOWBON3(KLNr,CONSNr),DELKUP^FLOWBON3(KLNr,CONSNr) ..Kill ^KUL(KLNr,"F",CONSNr) .Else Do ..Set ^KU2("F",KLNr,CONSNr)="" ..Do RCP(CONSNr) .Do:KLNr'=$$$KlantHalux TransfertOrderHalux(CONSNr) Do RecalcCommKort^FLOWMANL("KUL",KLNr,CONSNr) Do MoveOrdToBon^KLACHT4(CONSNr) Job ClassMethodSessie^vhLib.Thread(##class(TECH.Context.RuntimeContext).Instance().GeefSessieID(),##class("BL.Legacy.EWBON").%ClassName($$$True),"BerekenVerpakkingEnStapeling",1,CONSNr) // Job ... i.p.v. Do ##class(BL.Legacy.EWBON).BerekenVerpakkingEnStapeling(CONSNr) Do SetCheckSum^FLOWBON(CONSNr) Quit 1 ; AantalLijnenInBon(CONSNr) New Teller,ORDNr,OLUNr Set Teller=0 Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . Set OLUNr="" . For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do . . Set Teller=Teller+1 Quit Teller ORDER(KLNr,CONSNr,ORDNr,BonLijnTeller,BonMaxTeller) New R,OLUNr,OLNr,ULNr,IntPers,OrgalRef,KlasRef,EDINummer,VHisieVwCust,ComTegKom,PRNr,DocumentReferentiesID,SalesIdAX Set R=^KOD(KLNr,"F",ORDNr,1),OrdDat=$P(R,D,2),OrdRef=$P(R,D,3) Set IntPers=$P(R,D,8),VHisieVwCust=$P(R,D,9),OrgalRef=$P(R,D,19),KlasRef=$P(R,D,24),EDINummer=$P(R,D,40) Set DocumentReferentiesID = $P(R,D,57) Set SalesIdAX = $Piece(R,D,58) #dim Oorsprong As BL.Flow.Offerte.enu.Oorsprong = $P(R,D,53) #dim IsTekstlijn As %Boolean #dim OLSubscript As %String = "" Set OLLijst = ##class(%ListOfDataTypes).%New() Set R="" Set $P(R,D,4)=IntPers,$P(R,D,5)=ORDNr_" - "_OrdDat_" - "_OrdRef Set $P(R,D,17)="KF5",$P(R,D,19)=KlasRef,$P(R,D,20)=OrgalRef,$P(R,D,21)=EDINummer,$P(R,D,22)=VHisieVwCust,$P(R,D,26)="" set $P(R,D,27) = DocumentReferentiesID Set $P(R,D,28) = Oorsprong Set $Piece(R,D,29) = SalesIdAX Set ULNr=$$NEXTULNR(KLNr,CONSNr),^KUL(KLNr,"F",CONSNr,ULNr)=R Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) ; Copieren van tekst- en manuele lijnen vooraan in het order Set OLNr=99 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:PRNr . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . Quit:PRNr . If $P($P(R,D,17),"#")="KF1925",$P($P(R,D,17),"#",3) Set ComTegKom=R Quit ; Manuele lijn met commerciele korting moet blijven zitten . Set IsTekstlijn = $$$False . Set ULNr=$$NEXTULNR(KLNr,CONSNr),$P(R,D,15)="" . Set $P(R,D,41,42)=D,^KUL(KLNr,"F",CONSNr,ULNr)=R . Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) . Set IsTekstlijn=##class(TECH.StringUtils).StartsWith($P(R,"\",17),"KF11") . If $$$Not(IsTekstlijn) Set IsTekstlijn=##class(TECH.StringUtils).StartsWith($P(R,"\",18),"T") . If 'IsTekstlijn Kill ^KOD(KLNr,"F",ORDNr,OLNr) . If IsTekstlijn Set OLSubscript=KLNr_",""F"","_ORDNr_","_OLNr Do OLLijst.Insert(OLSubscript) Set (OLUNr,ComTegKom)="" For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do . Do OLU(KLNr,CONSNr,ORDNr,OLUNr,.ComTegKom) . If BonLijnTeller'="" Do ; indien NOT NoAsk . . Set FP=2401 . . Write @F,@FMTI,"Aantal lijnen op bon geplaatst: ", $I(BonLijnTeller), " / ", BonMaxTeller ,@FMTi,@F2 Do:ComTegKom="" ; Opzoeken eventuele commerciele korting indien nog niet gevonden . Set OLNr=100 . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:$L(ComTegKom) . . Set R=^KOD(KLNr,"F",ORDNr,OLNr) . . If $P($P(R,D,17),"#")="KF1925",$P($P(R,D,17),"#",3) Set ComTegKom=R Do:$L(ComTegKom) . Set ULNr=$$NEXTULNR(KLNr,CONSNr),$P(ComTegKom,D,15)="",^KUL(KLNr,"F",CONSNr,ULNr)=ComTegKom . Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) Do SAVEFBO(KLNr,CONSNr,ORDNr,.FullBO),DELORD^EWBON4(KLNr,CONSNr,ORDNr) Do:$D(^KOD(KLNr,"F",ORDNr)) RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr) Quit ; OLU(KLNr,CONSNr,ORDNr,OLUNr,ComTegKom) New R,ULNr,OLNr,TOLNr,SOLUNr,MPRNr,KPRNr,PRNr,AantWMS,OrdAant,Netto,StukPr,StockUpd,BLUNr,MdrIsKnd,WMS,ChargeTraceID,FSCHout ; Copieren van tekst- en manuele lijnen vooraan in het order Do:$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr),-1)="" .Set (OLNr,TOLNr)=^ORD("IU",ORDNr,OLUNr) .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Quit:OLNr<100 Do Quit:PRNr ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr=TOLNr Do ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) ..If $P($P(R,D,17),"#")="KF1925",$P($P(R,D,17),"#",3) Set ComTegKom=R Quit ; Manuele lijn met commerciele korting moet blijven zitten ..Set OLSubscript = KLNr_",""F"","_ORDNr_","_OLNr ..Quit:(##class(TECH.ListUtils).Contains(OLLijst,OLSubscript)) ..Set ULNr=$$NEXTULNR(KLNr,CONSNr),$P(R,D,15)="" ..Set $P(R,D,41,42)=$S($P(R,D,2):$$PICKDETAILLevering(CONSNr,ORDNr,OLUNr),1:D),^KUL(KLNr,"F",CONSNr,ULNr)=R ..Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) ..Kill ^KOD(KLNr,"F",ORDNr,OLNr) Set BLUNr=$$UNIEKLNR^FLOWBON(KLNr,CONSNr) Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),MPRNr=$P(R,D),AantWMS=$P(R,D,5),ChargeTraceID=$P(R,D,9) Set SOLUNr="",MdrIsKnd=0 For Set SOLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr)) Quit:SOLUNr="" Do .Quit:(SOLUNr#100) ; Lijnen worder gecumuleerd in de routine SOLU .Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr),KPRNr=$P(R,D) .Set:'MdrIsKnd MdrIsKnd=MPRNr=KPRNr .Do SOLU(KLNr,CONSNr,ORDNr,OLUNr,SOLUNr,.WMS,BLUNr) Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr),OrdAant=$P(R,D,3) Set:$L($P(R,D,48)) FSCHout=$P(R,D,48) Set Netto=$P(R,D,9),StukPr=$S(OrdAant:Netto/OrdAant,1:Netto) Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" If $P(R,D,2),'$$MAGHANDEL^PRODUKT2($P(R,D,2)) Set StockUpd=0 Set $P(R,D,17)="KF6" Set ULNr=$$NEXTULNR(KLNr,CONSNr),$P(R,D,15)=BLUNr Set $P(R,D,41,42)=$S($P(R,D,2):$$PICKDETAILLevering(CONSNr,ORDNr,OLUNr),1:D),$P(R,D,43)=ChargeTraceID,^KUL(KLNr,"F",CONSNr,ULNr)=R Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) Set BLUNr=$Piece($G(^KUL(KLNr,"F",CONSNr,ULNr)),D,15) I +BLUNr Set $Piece(^ORDW("D",CONSNr,"D",ORDNr,OLUNr),"\",10)=BLUNr Do:OrdAant'<0 HIST(KLNr,CONSNr,BLUNr,MPRNr,OrdAant,StukPr,StockUpd,.WMS,,,'MdrIsKnd,.FSCHout) Do WEEKSTAT(KLNr,CONSNr,ULNr) ;Do REMLINE^EWORDST(CONSNr,ORDNr,OLUNr) Do ADDRES(CONSNr,ORDNr,OLUNr) Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) Do:OrdAant>0 ProductLijnOpBon^EWORDS2(ORDNr,OLUNr,CONSNr) Do:OrdAant=0 ProductOrderLijnAnnulatie^FLOWORD2(KLNr,ORDNr,OLNr) Do:OrdAant<0 TerugnameLijnOpBon^EWORDS2(ORDNr,OLUNr,CONSNr) Kill ^KOD(KLNr,"F",ORDNr,OLNr) ; Copieren van tekst- en manuele lijnen na een productlijn For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:PRNr .Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) .If PRNr=MPRNr Set PRNr="" Quit .Quit:PRNr .If $P($P(R,D,17),"#")="KF1925",$P($P(R,D,17),"#",3) Set ComTegKom=R Quit ; Manuele lijn met commerciele korting moet blijven zitten .Set ULNr=$$NEXTULNR(KLNr,CONSNr),$P(R,D,15)="" .Set $P(R,D,41,42)=$S($P(R,D,2):$$PICKDETAILLevering(CONSNr,ORDNr,OLUNr),1:D),^KUL(KLNr,"F",CONSNr,ULNr)=R .Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) .Kill ^KOD(KLNr,"F",ORDNr,OLNr) Quit ; SOLU(KLNr,CONSNr,ORDNr,OLUNr,SOLUNr,WMS,BLUNr) New R,MPRNr,KPRNr,AantWMS,StukPr,StockUpd,Munt,Pariteit,BronPal,User,Date,DoelPal,SubHNr,FysMagaz,TempSOLUNr,SOPRPRNr,FSCHout Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),MPRNr=$P(R,D) Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr),AantWMS=$P(R,D,4) Do:AantWMS'<0 . Set KPRNr=$P(R,D),SOPRPRNr=$P(R,D,16) . Set DoelPal=$P(R,D,5),Date=$P(R,D,6),BronPal=$P(R,D,10),User=$P(R,D,12),FysMagaz=$P(R,D,14) . Set R=$P(R,D,4) Set:$L(R) $P(R,D,2)=-R,$P(R,D)="" ; AantalWMS invullen . Set:$L(BronPal) $P(R,D)=BronPal Set:$L(Date) $P(R,D,3)=Date Set:$L(User) $P(R,D,4)=User . Set:$L(DoelPal) $P(R,D,5)=DoelPal Set:$L(FysMagaz) $P(R,D,6)=FysMagaz . If KPRNr'=MPRNr New WMS Set:$L(R) WMS(1)=R . Else Set SubHNr=$O(WMS(""),-1)+1,WMS(SubHNr)=R . ; Cumuleren van sublijnen op basis van het SOLUNr . Set TempSOLUNr=SOLUNr . For Set TempSOLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,TempSOLUNr)) Quit:(TempSOLUNr\100)'=(SOLUNr\100) Do . . Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,TempSOLUNr) . . Quit:$P(R,D)'=KPRNr . . Set AantWMS=AantWMS+$P(R,D,4) . . Set DoelPal=$P(R,D,5),Date=$P(R,D,6),BronPal=$P(R,D,10),User=$P(R,D,12),FysMagaz=$P(R,D,14) . . Set R=$P(R,D,4) Set:$L(R) $P(R,D,2)=-R,$P(R,D)="" ; AantalWMS invullen . . Set:$L(BronPal) $P(R,D)=BronPal Set:$L(Date) $P(R,D,3)=Date Set:$L(User) $P(R,D,4)=User . . Set:$L(DoelPal) $P(R,D,5)=DoelPal Set:$L(FysMagaz) $P(R,D,6)=FysMagaz . . Set SubHNr=$O(WMS(""),-1)+1,WMS(SubHNr)=R . Quit:KPRNr=MPRNr ; Historiek wordt verwerkt op niveau OLU . Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr) . Set:$L($P(R,D,48)) FSCHout=$P(R,D,48) . Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" . If $P(R,D,2),'$$MAGHANDEL^PRODUKT2($P(R,D,2)) Set StockUpd=0 . Set StukPr=0 . If SOPRPRNr Do . . Do HIST(KLNr,CONSNr,BLUNr,SOPRPRNr,AantWMS,StukPr,StockUpd,.WMS,,MPRNr,,.FSCHout) . . Do HIST(KLNr,CONSNr,BLUNr,KPRNr,AantWMS,StukPr,StockUpd,.WMS,,SOPRPRNr,,.FSCHout) . Else Do . . Do HIST(KLNr,CONSNr,BLUNr,KPRNr,AantWMS,StukPr,StockUpd,.WMS,,MPRNr,,.FSCHout) Quit ; NEXTULNR(KLNr,CONSNr) New ULNr Set ULNr=^KUL(KLNr,"F",CONSNr,0),^KUL(KLNr,"F",CONSNr,0)=ULNr+1 Quit ULNr ; HIST(KLNr,CONSNr,BLUNr,PRNr,Aantal,StukPr,StockUpd,WMS,Histor,MPRNr,OverKind,FSCHout) New R,RTemp,Munt,PR,Pariteit,BonDat,Waarde,ModHist,IsEuro,TransfWV,Magazijn,OrdDat,BLNr,IsKind Set Histor=$G(Histor) Set:Histor="" Histor="ON" Set MPRNr=$G(MPRNr),IsKind=0 If MPRNr,MPRNr'=PRNr Set IsKind=1 Set:MPRNr=PRNr MPRNr="" Set OverKind=$G(OverKind) Set PR=PRNr,R=^KUL(KLNr,"F",CONSNr,1),BonDat=$P(R,D,2),Munt=$P(R,D,18),TransfWV=$P(R,D,25)="T" Set (OrdDat,BLNr)="" If CONSNr,BLUNr Set BLNr=$G(^BON("IU",CONSNr,BLUNr)) If KLNr,CONSNr,BLNr Set OrdDat=$P($$ORDGEG^FLOWBON(KLNr,CONSNr,BLNr),D,2) Set:$L(OrdDat) OrdDat=$$INTDATE^vhLib.DataTypes(OrdDat) Do:Histor["O" .Set IsEuro=$$ISEURO^vhRtn1() .Set R=^KPR(PRNr,0),ModHist=$P(R,D,15) .Set Pariteit=$$MUNT^vhRtn1(Munt,,12),Waarde=StukPr*Pariteit*Aantal .Set R=$$CONVDATE^vhLib.DataTypes(BonDat,"DK","DSN")_$S(TransfWV:4,1:2),$P(R,D,12)="" .Set $P(R,D,2)=$S(StockUpd:Aantal,1:0),$P(R,D,4)=1,$P(R,D,5)=$J($S(StockUpd:Waarde,1:0),0,$S(IsEuro:4,1:2)) .Set $P(R,D,7)=ModHist,$P(R,D,8)=$S(TransfWV:"T/W",1:$S(Aantal<0:"U",1:"")_CONSNr),RTemp=R .Do ^KPR10 .If TransfWV,'IsKind Do ..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=$P(RTemp,D),$E(R,9)=3,$P(RTemp,D)=R,R=RTemp ..Do WV^KPR10 Do:Histor["N" .Set Aantal=-Aantal,Magazijn=$S(OverKind:"K",'StockUpd:"Z",1:"M") Set:TransfWV (CONSNr,BLUNr)="" .Do PUT^PRHIST(PRNr,Aantal,$S(TransfWV:"T",Aantal>0:"R",1:"U"),Magazijn,KLNr,CONSNr,BLUNr,$$INTDATE^vhLib.DataTypes(BonDat),,,.WMS,,MPRNr,OrdDat,.FSCHout) .Set Aantal=$S(StockUpd:-Aantal,1:0),Magazijn="W" .Do:TransfWV PUT^PRHIST(PRNr,Aantal,$S(TransfWV:"T",1:"U"),Magazijn,KLNr,CONSNr,BLUNr,$$INTDATE^vhLib.DataTypes(BonDat),,,,,MPRNr,OrdDat,.FSCHout) Quit ; WEEKSTAT(KLNr,CONSNr,ULNr) New R,Munt,Pariteit,BonDat,PRNr,Aantal,Waarde,Netto,IsKom,StockUpd,TransfWV Set R=^KUL(KLNr,"F",CONSNr,ULNr),PRNr=$P(R,D,2) Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" If PRNr,'$$MAGHANDEL^PRODUKT2(PRNr) Set StockUpd=0 If PRNr,StockUpd Do .Set Aantal=$P(R,D,3),Netto=$P(R,D,9),IsKom=$P($P(R,D,28),";")="KOM" .Set R=^KUL(KLNr,"F",CONSNr,1),BonDat=$P(R,D,2),Munt=$P(R,D,18),TransfWV=$P(R,D,25)="T" .Set Pariteit=$$MUNT^vhRtn1(Munt,,12) .Set Waarde=Netto*Pariteit .Set R=PRNr_D_$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(BonDat),"DS"),D,"")_D_Aantal_D_Waarde_D_IsKom .Do ^Stat.Product.UpdateWeekStatistiek .Quit:'TransfWV .Set R=PRNr_D_$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(BonDat),"DS"),D,"")_D_-Aantal_D_-Waarde_D_IsKom .Do ^Stat.Product.UpdateWeekStatistiek Quit ; SORT(KLNr,BONNr) Do SORT^FLOWBON() Quit ; BACKORD(CONSNr,NoAsk) New %J,R,KLNr,ORDNr,OLUNr,SOLUNr,OLNr,MPRNr,KPRNr,EWProb,Count,OkCount,NOkCount New LD,Bold,Input,CheckBo,AantGevr,AantWMS,AantBo,OpBon,BoLevWk,Aantal Set Bold="B",R=^ORDW("D",CONSNr),KLNr=$P(R,D),EWProb=$TR($P(R,D,21),"tz","") Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Set (Count,NOkCount,OkCount)=0,ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set OLUNr="" .For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) ..Set MPRNr=$P(R,D),EWProb=$TR($P(R,D,3),"tz",""),AantGevr=$P(R,D,4),AantWMS=$P(R,D,5),AantBo=$P(R,D,6) ..If EWProb="" Do Quit ...Set R=0_D_CONSNr_D_ORDNr_D_OLUNr_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 $P(R,D,7)=$S($P(R,D,7)="":$$GETLEVWK(ORDNr,OLUNr),1:$$EXTDATE^vhLib.DataTypes($P(R,D,7),"DW")) ..Set $P(R,D,7)=$P(R,D,7)_"#"_$P(R,D,7),$P(R,D,10)=$$GETEDIGR^EWBON3(ORDNr,OLUNr,1) ..Set R=AantGevr-AantWMS_D_CONSNr_D_ORDNr_D_OLUNr_D_D_R ..Set:$P(R,D)'<0 NOkCount=NOkCount+1 Set:$P(R,D)'>0 $P(R,D)="" Set:'AantWMS!AantBo R=$P(R,D)_"#1\"_$P(R,D,2,99) ..If ORDNr,AantGevr'=AantWMS,$P(R,D),$P(R,D)'["#" Set $P(R,D)=$P(R,D)_"#1" ; Aanduiding Backorder steeds opzetten indien backorderaantal ..Set Count=Count+1,^HULP(%J,Count)=R,SOLUNr="" ..For Set SOLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr)) Quit:SOLUNr="" Do ...Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr) ...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=0_D_CONSNr_D_ORDNr_D_OLUNr_D_SOLUNr_D_R ...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("EWBON") .Do INIT^vhLIST("EWBON","BACKORD",.LD) .Do WRITE^vhLIST(.LD),CHKEDIGR^EWBON3(CONSNr) .Set R=^HULP(%J,LD("SELECT")),ORDNr=$P(R,D,3),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) .;If ORDNr,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("EWBON") ..Do EXEC^vhMenu("EWBON",.Input) .Set CheckBo='$D(^HULP(%J)) .Kill ^HULP(%J) .Do REFRESH^vhTERMINA() Else Do ; Er zijn geen fouten .Set CheckBo=0,OpBon=1 .Set:'$G(NoAsk) OpBon=$$^vhTXTPOP("EWBON","OPBON","",$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),0) .Quit:'OpBon .Do LEVPERF^EWBON4(CONSNr) .Set CheckBo=1,ORDNr="" .For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do ..Set OLUNr="" ..For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do ...Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),AantGevr=$P(R,D,4),AantWMS=$P(R,D,5),AantBo=$P(R,D,6),BoLevWk=$P(R,D,7) ...Set OLNr=^ORD("IU",ORDNr,OLUNr) ...If 'AantBo Do ....Set Aantal=$S(AantWMS="":AantGevr,1:AantWMS),R=^KOD(KLNr,"F",ORDNr,OLNr) ....Quit:Aantal=$P(R,D,3) ....Do MODAANT^FLOWORD6(KLNr,ORDNr,OLNr,Aantal) ...Else Do BACKORD^FLOWORD6(KLNr,ORDNr,OLNr,AantBo,,BoLevWk) Quit CheckBo ; MARKBO(Input) New I,R,ORDNr,AantBo,AantGevr,AantWMS,SOLUNr 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),ORDNr=$P(R,D,3),SOLUNr=$P(R,D,5),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) ..Quit:'ORDNr Quit:SOLUNr 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 MODLEVWK(Input) .Do MOVE^vhLIST(.LD,"DO",1) Quit ; SAVEBO(CONSNr) New I,R,CheckBev,Save,KLNr,ORDNr,OLUNr,SOLUNr,OLNr,AantBo,AantGevr,AantWMS,NextLine,BevBo,NP,OLevWk,NLevWk,Order,BackorderLijnen,AantalInOrder,BackorderLijn Set R=^ORDW("D",CONSNr),KLNr=$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),ORDNr=$P(R,D,3),AantGevr=$P(R,D,9),AantWMS=$P(R,D,10) .If ORDNr,AantGevr'=AantWMS,AantBo,'$P(AantBo,"#",2) Set CheckBev=1 Set Save=$$^vhTXTPOP("EWBON",$S(CheckBev:"BEVBO",1:"OPBON"),"",$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),1) If Save Do .Do LEVPERF^EWBON4(CONSNr) .Set NP=0 .For NextLine=1:1 Quit:'$D(^HULP(%J,NextLine)) Do ..Set R=^HULP(%J,NextLine),ORDNr=$P(R,D,3),OLUNr=$P(R,D,4),SOLUNr=$P(R,D,5) ..Set:R="NP" NP=1 ..Quit:'ORDNr Quit:SOLUNr ..Set AantGevr=$P(R,D,9),AantWMS=$P(R,D,10),AantBo=$P(R,D,11) ..Set OLevWk=$P($P(R,D,12),"#"),NLevWk=$P($P(R,D,12),"#",2) ..If AantBo Set AantBo=AantBo+$P(R,D) ..Else Set:$P($P(R,D),"#",2) AantBo=$P(R,D) ..Set OLNr=^ORD("IU",ORDNr,OLUNr) ..Set AantalInOrder = $P(^KOD(KLNr,"F",ORDNr,OLNr),D,3) ..If 'AantBo,'NP,AantWMS,AantWMS'=AantalInOrder Do MODAANT^FLOWORD6(KLNr,ORDNr,OLNr,AantWMS) ..Do:AantBo<0 MODAANT^FLOWORD6(KLNr,ORDNr,OLNr,AantWMS,$S(OLevWk'=NLevWk:NLevWk,1:"")) ..If (AantBo>0) Do ...Set Order = ##class(DOM.DomeinContext).Instance().GeefOrderAPI().GeefOrder(ORDNr) ...Set BackorderLijnen = Order.GeefBijhorendeBackorderLijnCodes(OLUNr) ...If (BackorderLijnen.Count()=0) Do BACKORD^FLOWORD6(KLNr,ORDNr,OLNr,+AantBo,,$S(OLevWk'=NLevWk:NLevWk,1:"")) ...Else Do ....Set BackorderLijn = Order.GeefOrderLijn(BackorderLijnen.GetAt(1)) ....Do MODAANT^FLOWORD6(KLNr,ORDNr,OLNr,AantalInOrder-AantBo,$S(OLevWk'=NLevWk:NLevWk,1:"")) ....Do MODAANT^FLOWORD6(KLNr,ORDNr,BackorderLijn.GeefLijnVolgNr(),BackorderLijn.GeefAantal()+AantBo,$S(OLevWk'=NLevWk:NLevWk,1:"")) .Kill ^HULP(%J) Set:$L(Save) Input="CANC" Quit ; GETFBO(CONSNr,FullBO) New R,KLNr,ORDNr,OLNr,PRNr,OLUNr Set R=^ORDW("D",CONSNr),KLNr=$P(R,D) Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set OLNr=100 .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ..Quit:'PRNr ..If $P(R,D,53) Set $P(^KOD(KLNr,"F",ORDNr,OLNr),D,53)=0 Quit // Lijnen die gesplitst waren voor backorder niet op bon zetten en ook de vlag terug op 0 zetten ..Set:($G(^ORDW("IO",ORDNr,OLUNr))="") FullBO(ORDNr,OLUNr)="" Quit ; SAVEFBO(KLNr,CONSNr,ORDNr,FullBO) New I,R,OLNr,OLUNr,ULNr Set OLUNr="" For Set OLUNr=$O(FullBO(ORDNr,OLUNr)) Quit:OLUNr="" Do .Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr) .Set $P(R,D,15)="",$P(R,D,23)=$P(R,D,3),$P(R,D,3)=0,$P(R,D,17)="KF6" .For I=9,10,16 Set $P(R,D,I)=$J(0,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) .Set ULNr=$$NEXTULNR(KLNr,CONSNr),^KUL(KLNr,"F",CONSNr,ULNr)=R .Do BUILDBON^FLOWBON3(KLNr,CONSNr,ULNr),BUILDKUP^FLOWBON3(KLNr,CONSNr,ULNr) Quit ; LOCK(CONSNr,NoAsk) New %TC,R,KLNr,ORDNr Set R=^ORDW("D",CONSNr),KLNr=$P(R,D) For Do ADD^vhLock($NA(^ORDW("D",CONSNr))) Quit:%TC Do Quit:'$G(NoAsk) . If $G(NoAsk) Hang 1 Quit ; wachten - Lock ^ORDW . Do LDISP^vhLock($NA(^ORDW("D",CONSNr)),"Consolidatie "_CONSNr_" in gebruik") Quit:'%TC %TC For Do ADD^vhLock($NA(^KUL(KLNr,"F",CONSNr))) Quit:%TC Do Quit:'$G(NoAsk) . If $G(NoAsk) Hang 1 Quit ; wachten - Lock ^KUL . Do LDISP^vhLock($NA(^KUL(KLNr,"F",CONSNr)),"Bon "_CONSNr_" in gebruik") Quit:'%TC %TC Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do Quit:'%TC .For Do ADD^vhLock($NA(^KOD(KLNr,"F",ORDNr))) Quit:%TC Do Quit:'$G(NoAsk) ..If $G(NoAsk) Hang 1 Quit ; wachten - Lock ^KOD ..Do LDISP^vhLock($NA(^KOD(KLNr,"F",ORDNr)),"Order "_ORDNr_" in gebruik") Quit %TC ; UNLOCK(CONSNr) New R,KLNr,ORDNr Set R=^ORDW("D",CONSNr),KLNr=$P(R,D) Do REMOVE^vhLock($NA(^ORDW("D",CONSNr))) Do REMOVE^vhLock($NA(^KUL(KLNr,"F",CONSNr))) Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do REMOVE^vhLock($NA(^KOD(KLNr,"F",ORDNr))) Quit ; ; Opmaken receptie RCP(BONNr,RCPNr) New R,Receive,KLNr,BLNr,PRNr,Aantal,RCPDate,RCPKRef,RCPBRef,RecLoc,StockUpd Set BONNr=$G(BONNr),RCPNr=$G(RCPNr) Quit:'BONNr Quit:$D(^RCP("IU",BONNr)) Set KLNr=$P(^KU1(BONNr,"F"),D),BLNr=100 If RCPNr Do Quit:'RCPNr .Set R=$G(^RCP("D",RCPNr)) .If $P(R,D)="K",$P(R,D,2)=KLNr Set:$L($P(R,D,20)) RCPNr="" .Else Set RCPNr="" For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do .Set R=^KUL(KLNr,"F",BONNr,BLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),BLUNr=$P(R,D,15) .Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" .If PRNr,'$$MAGHANDEL^PRODUKT2(PRNr) Set StockUpd=0 .Quit:'PRNr Quit:Aantal'<0 Quit:'StockUpd Quit:$$OPSLMAN^PRODUKT2(PRNr) .If 'BLUNr Do ..Set BLUNr=$$UNIEKLNR^FLOWBON(KLNr,BONNr) ..Set R=^KUL(KLNr,"F",BONNr,BLNr),$P(R,D,15)=BLUNr,^KUL(KLNr,"F",BONNr,BLNr)=R .Do BUILDBON^FLOWBON3(KLNr,BONNr,BLNr),BUILDKUP^FLOWBON3(KLNr,BONNr,BLNr) .Set Receive(BLUNr)=-Aantal_D If $D(Receive) Do .Set RCPDate=$H,(RCPKRef,RCPBRef)=BONNr .Merge RecLoc(BONNr)=Receive ; Door te geven referentie moet ook BONNr bevatten .Set:'RCPNr RCPNr=$$NEXTID^EWRCP() .Do BLDRCP^EWBON2(KLNr,BONNr,$NA(RecLoc),RCPNr,RCPDate,RCPKRef,RCPBRef) .Do SEND^EWRCPSW(RCPNr) Quit ; ; Afhandelen terugname RCPNR(RCPNr) New R,KLNr,WMSStat Set R=^RCP("D",RCPNr),KLNr=$P(R,D,2),WMSStat=$P(R,D,20) If WMSStat="A" Do .Set BONNr="" .For Set BONNr=$O(^RCP("D",RCPNr,"D",BONNr)) Quit:BONNr="" Do BONNR(RCPNr,BONNr) .Set R=^RCP("D",RCPNr),$P(R,D,20)="I",$P(R,D,24)=$H,^RCP("D",RCPNr)=R .Kill ^RCP("IO",RCPNr) Quit ; BONNR(RCPNr,BONNr) New R,KLNr,BLUNr,TransfWV Set R=^RCP("D",RCPNr),KLNr=$P(R,D,2) Set BLUNr="" For Set BLUNr=$O(^RCP("D",RCPNr,"D",BONNr,BLUNr)) Quit:BLUNr="" Do BLUNR(RCPNr,BONNr,BLUNr) Kill:$G(^RCP("IU",BONNr))=RCPNr ^RCP("IU",BONNr) Set R=$G(^KUL(KLNr,"F",BONNr,1)),TransfWV=$P(R,D,25)="T" Do:TransfWV .Merge ^KUL(KLNr,"T",BONNr)=^KUL(KLNr,"F",BONNr) .Do DELBON^FLOWBON3(KLNr,BONNr),DELKUP^FLOWBON3(KLNr,BONNr) .Kill ^KU2("F",KLNr,BONNr),^KUL(KLNr,"F",BONNr) Quit ; BLUNR(RCPNr,BONNr,BLUNr) New R,KLNr,WMSStat,RCPEDate,SBLUNr,AantWMS,AantBo,PRNr,DoelPal,EWProb Set R=^RCP("D",RCPNr),KLNr=$P(R,D,2),RCPEDate=$P(R,D,23) Set:'RCPEDate RCPEDate=$H Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr),WMSStat=$P(R,D,2),EWProb=$P(R,D,3) If WMSStat="S" Do .Do BUILDBON^FLOWBON3(KLNr,BONNr),BUILDKUP^FLOWBON3(KLNr,BONNr) .Set SBLUNr="" .For Set SBLUNr=$O(^RCP("D",RCPNr,"D",BONNr,BLUNr,SBLUNr)) Quit:SBLUNr="" Do ..Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr,SBLUNr),PRNr=$P(R,D),AantWMS=-$P(R,D,4),DoelPal=$P(R,D,5) ..Do RCPPAL^EWPAL(PRNr,DoelPal,"","",AantWMS) .Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr),AantWMS=-$P(R,D,5),AantBo=-$P(R,D,6) .Do BONLINE(RCPNr,BONNr,BLUNr,RCPEDate,AantWMS,AantBo) .Set SBLUNr="" .For Set SBLUNr=$O(^RCP("D",RCPNr,"D",BONNr,BLUNr,SBLUNr)) Quit:SBLUNr="" Do SBLUNR(RCPNr,BONNr,BLUNr,SBLUNr) .Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr),$P(R,D,2)="I",^RCP("D",RCPNr,"D",BONNr,BLUNr)=R Else If EWProb="G" Do ; Geen goederen .Do BUILDBON^FLOWBON3(KLNr,BONNr),BUILDKUP^FLOWBON3(KLNr,BONNr) .Do BONLINE(RCPNr,BONNr,BLUNr,RCPEDate,0,0) .Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr),$P(R,D,2)="I",^RCP("D",RCPNr,"D",BONNr,BLUNr)=R Do CHKISTAT(RCPNr) Quit ; SBLUNR(RCPNr,BONNr,BLUNr,SBLUNr) New R,KLNr,WMSStat,AantWMS,RCPEDate,MPRNr,KPRNr,BLNr,StockUpd,StukPr Set R=^RCP("D",RCPNr),KLNr=$P(R,D,2),WMSStat=$P(R,D,20),RCPEDate=$P(R,D,23) Set:'RCPEDate RCPEDate=$H If WMSStat="A" Do .Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr),MPRNr=$P(R,D) .Set R=^RCP("D",RCPNr,"D",BONNr,BLUNr,SBLUNr),KPRNr=$P(R,D),AantWMS=-$P(R,D,4) .If KPRNr'=MPRNr,AantWMS Do ..Set BLNr=$G(^BON("IU",BONNr,BLUNr)) Quit:'BLNr ..Set R=^KUL(KLNr,"F",BONNr,BLNr) ..Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" ..If $P(R,D,2),'$$MAGHANDEL^PRODUKT2($P(R,D,2)) Set StockUpd=0 ..Set R=$$KLANTPR^KPRIJS(KLNr,KPRNr),StukPr=$P(R,D)/$P(R,D,11) ..Do HIST(KLNr,BONNr,"",KPRNr,AantWMS,StukPr,StockUpd,,,MPRNr) Quit ; BONLINE(RCPNr,BONNr,BLUNr,RCPEDate,AantWMS,AantBo) New R,Rec,KLNr,BLNr,PRNr,ORDNr,OLNr,OrdDat,OrdRef,Netto,StukPr,StockUpd Set KLNr=$P($G(^KU1(BONNr,"F")),D) Quit:'KLNr Set BLNr=$G(^BON("IU",BONNr,BLUNr)) Quit:'BLNr Set Rec=^KUL(KLNr,"F",BONNr,BLNr),PRNr=$P(Rec,D,2) Quit:'PRNr For Do ADD^vhLock("^KPR(PRNr)") Quit:%TC Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) If $P(Rec,D,3)'=AantWMS Do .Set $P(Rec,D,9)=$J(($P(Rec,D,9)/$P(Rec,D,3)*AantWMS),0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) .Set $P(Rec,D,10)=$J(($P(Rec,D,10)/$P(Rec,D,3)*AantWMS),0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) .Set $P(Rec,D,16)=$J(($P(Rec,D,16)/$P(Rec,D,3)*AantWMS),0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) .Set $P(Rec,D,3)=AantWMS Set $P(Rec,D,41,42)=$$PICKDETAILTerugname(RCPNr,BONNr,BLUNr),^KUL(KLNr,"F",BONNr,BLNr)=Rec Set StockUpd=$P(Rec,D,14)'["S" Set:StockUpd StockUpd=$P(Rec,D,14)'["Z" If $P(Rec,D,2),'$$MAGHANDEL^PRODUKT2($P(Rec,D,2)) Set StockUpd=0 Set Netto=$P(Rec,D,9),StukPr=$S(AantWMS:Netto/AantWMS,1:Netto) Do HIST(KLNr,BONNr,BLUNr,PRNr,AantWMS,StukPr,StockUpd) If AantBo Do .Set R=$$ORDGEG^FLOWBON(KLNr,BONNr,BLNr),ORDNr=$P(R,D),OrdDat=$P(R,D,2),OrdRef=$P(R,D,3) .Do LSPLIT^FLOWBON(KLNr,BONNr,BLNr,ORDNr,OrdDat,OrdRef,AantBo) Do REMOVE^vhLock("^KPR(PRNr)") Quit ; STATBON(CONSNr) New R,ORDNr,OLUNr Set R=^ORDW("D",CONSNr),$P(R,D,20)="B",^ORDW("D",CONSNr)=R Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .Set OLUNr="" .For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),$P(R,D,2)="B",^ORDW("D",CONSNr,"D",ORDNr,OLUNr)=R ..Kill:$G(^ORDW("IO",ORDNr,OLUNr))=CONSNr ^ORDW("IO",ORDNr,OLUNr) Quit ; ADDRES(CONSNr,ORDNr,OLUNr) New R,OLNr,KLNr,MPRNr,KPRNr,Aantal,StockUpd Set KLNr=$P(^ORDW("D",CONSNr),D,1) Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr) Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" If $P(R,D,2),'$$MAGHANDEL^PRODUKT2($P(R,D,2)) Set StockUpd=0 Quit:'StockUpd Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) Set MPRNr=$P(R,D,1),Aantal=$P(R,D,4) Quit:Aantal<0 If $D(^PRLINK("D",MPRNr)) Do .Set KPRNr="" .For Set KPRNr=$O(^PRLINK("D",MPRNr,KPRNr)) Quit:KPRNr="" Do ..Do ADDRES^PRODUKT4(KPRNr,-Aantal*$P(^PRLINK("D",MPRNr,KPRNr),D)) Do ADDRES^PRODUKT4(MPRNr,-Aantal) ;Moederprodukt Quit ; ; Controle of alle lijnen v/d terugname ingeboekt zijn CHKISTAT(RCPNr) New R,BONNr,BLUNr,WMSStat,Quit Set R=^RCP("D",RCPNr),WMSStat=$P(R,D,20),Quit=0 If WMSStat="A" Do .Set BONNr="" .For Set BONNr=$O(^RCP("D",RCPNr,"D",BONNr)) Quit:BONNr="" Do Quit:Quit ..Set BLUNr="" ..For Set BLUNr=$O(^RCP("D",RCPNr,"D",BONNr,BLUNr)) Quit:BLUNr="" Do Quit:Quit ...Set Quit=$P(^RCP("D",RCPNr,"D",BONNr,BLUNr),D,2)'="I" ..Quit:Quit ..Kill:$G(^RCP("IU",BONNr))=RCPNr ^RCP("IU",BONNr) .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) Quit ; GETLEVWK(ORDNr,OLUNr) New R,KLNr,OLNr,LevWk Set KLNr=$P(^KO1(ORDNr,"F"),D),OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr) Set LevWk=$P(R,D,25) Quit LevWk ; MODLEVWK(Input) New %SC,R,sFL,LevWk Set sFL(1)=^HULP(%J,LD("SELECT")),LevWk=$P(sFL(1),D,12) If Input="V" Set $P(LevWk,"#",2)=$P(LevWk,"#"),$P(sFL(1),D,12)=LevWk,^HULP(%J,LD("SELECT"))=sFL(1) Else Do .Do STORE^vhTERMINA() .Do FIELD^vhScherm("EWBON","LEVWK") .Do REFRESH^vhTERMINA() .If %SC,$P(sFL(1),D,12)'=LevWk Do ..Set ^HULP(%J,LD("SELECT"))=sFL(1) ..Do:Input="L" LINE^vhLIST(.LD,LD("SELECT")) Quit ; EMPTY(KLNr,CONSNr) New R,BLNr,LCount,ECount,Empty Set BLNr=100,(LCount,ECount)=0 For Set BLNr=$O(^KUL(KLNr,"F",CONSNr,BLNr)) Quit:'BLNr Do Quit:LCount'=ECount .Set R=^KUL(KLNr,"F",CONSNr,BLNr),LCount=LCount+1 .Quit:"\KF5\KF6\"'[(D_$P(R,D,17)_D) .If $P(R,D,17)="KF6",$P(R,D,3) Quit .If $P(R,D,17)="KF6",'$P(R,D,23) Quit .Set ECount=ECount+1 Set Empty=LCount=ECount Quit Empty ; ; Bepalen van het aantal sublijnen en pickinngs van een leveringsbon PICKDETAILLevering(CONSNr,ORDNr,OLUNr) New SubLines,Pickings,SOLUNr Set (SubLines,Pickings)=0,SOLUNr="" For Set SOLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLUNr)) Quit:SOLUNr="" Do . Set Pickings=Pickings+1 Set:'(SOLUNr#100) SubLines=SubLines+1 Quit SubLines_D_Pickings ; ; Bepalen van het aantal sublijnen en pickinngs van een terugname PICKDETAILTerugname(RCPNr,BONNr,BLUNr) New SubLines,Pickings,SBLUNr Set (SubLines,Pickings)=0,SBLUNr="" For Set SBLUNr=$O(^RCP("D",RCPNr,"D",BONNr,BLUNr,SBLUNr)) Quit:SBLUNr="" Do . Set Pickings=Pickings+1 Set:'(SBLUNr#100) SubLines=SubLines+1 Quit SubLines_D_Pickings ; CheckAantORDW(CONSNr) New R,OrdRec,ConsRec,KLNr,ORDNr,TempORDNr,OLUNr,OLNr,OrdAant,ConsAant,Versch,PRNr,From,To,Subject,Body,KortText,Status,StockUpd Set ConsRec=^ORDW("D",CONSNr),KLNr=$P(ConsRec,D),ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . Set OLUNr="" . For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do . . Set ConsRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),PRNr=$P(ConsRec,D),ConsAant=$P(ConsRec,D,5) . . Quit:$$OPSLMAN^PRODUKT2(PRNr) ; Manuele opslag . . Set OrdAant=0,OLNr=$G(^ORD("IU",ORDNr,OLUNr)) . . If OLNr Set OrdRec=$G(^KOD(KLNr,"F",ORDNr,OLNr)),OrdAant=$P(OrdRec,D,3) . . Set StockUpd=$P($G(OrdRec),D,14)'["S" Set:StockUpd StockUpd=$P($G(OrdRec),D,14)'["Z" . . If $P($G(OrdRec),D,2),'$$MAGHANDEL^PRODUKT2($P(OrdRec,D,2)) Set StockUpd=0 . . If 'ConsAant,OrdAant<0 Quit ; Terugname . . If 'ConsAant,'StockUpd Quit ; Zonder stockupdate . . Set:+OrdAant'=+ConsAant Versch(ORDNr,OLUNr)=PRNr_D_ConsAant_D_OrdAant Do:$D(Versch) . Set From=$$$SystemMail("EWBON.mac") . Set To=$LB("ICT_Meldingen@vanhoecke.be") . Set Subject="Aantallen leveringsbon" . Set Body="Klant : "_KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2)_$C(13) . Set Body=Body_"Leveringsbon : "_CONSNr_$C(13)_$C(13) . Set Body=Body_"Er werden verschillen gevonden."_$C(13)_$C(13) . Set Body=Body_"Order | Korttekst | WMS aantal | Bon aantal"_$C(13) . Set Body=Body_"-------|---------------------------|------------|-----------"_$C(13) . Set ORDNr="" . For Set ORDNr=$O(Versch(ORDNr)) Quit:ORDNr="" Do . . Set TempORDNr=ORDNr,OLNr="" . . For Set OLNr=$O(Versch(ORDNr,OLNr)) Quit:OLNr="" Do . . . Set R=Versch(ORDNr,OLNr),PRNr=$P(R,D),ConsAant=$P(R,D,2),OrdAant=$P(R,D,3) . . . Set R=^KPR(PRNr,0),KortText=$P(R,D) . . . Set Body=Body_$J(TempORDNr,6)_" | "_KortText_$J("",25-$L(KortText))_" | "_$J(ConsAant,10)_" | "_$J(OrdAant,10)_$C(13) . . . Set TempORDNr="" . Set Body=Body_$$$CRLF_$$GetJobInfo^vhLib.System() . Set Status=$$SendMiniMail^vhLib(From,To,Subject,Body) Quit ; ; Controle - transfertorders enkel voor Halux TransfertOrderHalux(CONSNr) New ConsRec,KLNr,KlNaam,From,To,Subject,Body,Status Set ConsRec=^ORDW("D",CONSNr),KLNr=$P(ConsRec,D) If KLNr'=$$$KlantHalux,$D(^KUL(KLNr,"T",CONSNr)) Do . Set KlNaam=$P(^KKL(^KK1(KLNr),0),D,2),From=$$$SystemMail("EWBON.mac") . Set To=$LB("ICT_SysOp@vanhoecke.be"),Subject="Transfertorder foutief!!!" . Set Body="Voor "_KlNaam_" is de consolidatie "_CONSNr_" ten onrechte als transfertorder aangemaakt." . Set Body=Body_$$$CRLF_$$GetJobInfo^vhLib.System() . Set Status=$$SendMiniMail^vhLib(From,To,Subject,Body) Quit