FLOWORD3 ;Order [ 09/25/2003 10:44 AM ] ; DELLINE(ORDNr,OLNr,Extern,CheckHaluxOrder) New %TC,R,KLNr,PRNr,TOENr,TLLNr,OLUNr,IsActiefHaluxOrder Set CheckHaluxOrder=$G(CheckHaluxOrder,1) Set Extern=$G(Extern),KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) If CheckHaluxOrder,PRNr Set IsActiefHaluxOrder=$$IsActiefOrder^HADOPV(ORDNr,OLUNr) For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr,OLNr)") Quit:%TC Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr,OLNr)","Order "_ORDNr) If PRNr Do .Do STOREDEL^LEVPERF(ORDNr,OLUNr,"D") .For Do ADD^vhLock("^KPR(PRNr)") Quit:%TC Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) .Set TOENr=$P(R,D,27),TLLNr=$P($P(R,D,28),";") .Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) .Do REMOVE^vhLock("^KPR(PRNr)") .If 'Extern,TOENr Do DELLINE^FLOWTOE3(TOENr,TLLNr,1),CHKDEL^FLOWTOE3(TOENr) .Kill AkpVkpVerlies(OLUNr) Do ProductOrderLijnAnnulatie^FLOWORD2(KLNr,ORDNr,OLNr) Kill ^KOD(KLNr,"F",ORDNr,OLNr) Do:PRNr .Set:$L($G(FBRef)) $P(@FBRef@(PRNr),D,2)="" .Do:Extern KSTBXKWK^FLOWORD4(KLNr,ORDNr) If Extern,$O(^KOD(KLNr,"F",ORDNr,100))="" Do .Kill ^KO1(ORDNr,"F"),^KOB(ORDNr,"F"),^KO2("F",KLNr,ORDNr),^KOD(KLNr,"F",ORDNr) .Do DelOrd^KLACHT4(ORDNr),DelVRIJGAVE^FLOW2(KLNr,"O",ORDNr) Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr,OLNr)") Do:$G(IsActiefHaluxOrder) ModOrderMailToHalux("DL",KLNr,ORDNr,TOENr,PRNr) Quit ; DELOBJ(ORDNr) New %TC,R,KLNr,OLNr,TOENr,IsActiefHaluxOrder Set IsActiefHaluxOrder=$$IsActiefOrder^HADOPV(ORDNr) Set KLNr=$P(^KO1(ORDNr,"F"),D),OLNr=100,TOENr="" For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set:'TOENr R=^KOD(KLNr,"F",ORDNr,OLNr),TOENr=$P(R,D,27) .Do DELLINE(ORDNr,OLNr,,0) ; Controle Haluxorder = 0 (moet slechts een keer gebeuren) Kill ^KO1(ORDNr,"F"),^KOB(ORDNr,"F"),^KO2("F",KLNr,ORDNr),^KOD(KLNr,"F",ORDNr) Do DelOrd^KLACHT4(ORDNr),DelVRIJGAVE^FLOW2(KLNr,"O",ORDNr) Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Do:IsActiefHaluxOrder ModOrderMailToHalux("DO",KLNr,ORDNr,TOENr) Quit ; BUILDOBJ(KLNr,AutoMb,OrdRef,PRNr,EDIORDNr,BackGrnd,OrdTyp,FBRef,Offerte) New R,LogNr Set KLNr=$G(KLNr),AutoMb=$G(AutoMb) If AutoMb Set LogNr=AutoMb Quit:'$D(^MBLOG("T",KLNr,LogNr)) Set OrdRef=$G(OrdRef),EDIORDNr=$G(EDIORDNr),BackGrnd=$G(BackGrnd),OrdTyp=$G(OrdTyp) Do:BackGrnd BUILDBGR^FLOWORD7(KLNr,AutoMb,OrdRef,.PRNr,EDIORDNr,OrdTyp,$G(FBRef)) Do:'BackGrnd FOA^KF9(KLNr,AutoMb,OrdRef,.PRNr,EDIORDNr,OrdTyp,$G(FBRef),.Offerte) Quit ; ;Herzetten van het OLUNr naar stappen van 10 ipv 100 RESETOLUNR(KLNr,ORDNr) New OLNr,Cnt,Rec,OLUNr,OldOLULink,NewOLULink,OldOLUNr,NewOLUNr,TmpOLNr,BlockId ; Eerst alles verwijderen, anders worden nieuw gecreerde indexen verwijderd door volgende lijnen Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set Rec=^KOD(KLNr,"F",ORDNr,OLNr) . Set OLUNr=$P(Rec,D,15) . Do:OLUNr . . Set OldOLULink(OLUNr)=OLNr . . Do DELORD(KLNr,ORDNr,OLNr) Set OLNr=100 Set Cnt=0 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set Rec=^KOD(KLNr,"F",ORDNr,OLNr) . Set $P(Rec,D,15)=$I(Cnt)*10+100 . Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec,NewOLULink(OLNr)=$P(Rec,D,15) . Do BUILDORD(KLNr,ORDNr,OLNr) ; De link tussen product- en tekstlijnen terug instellen Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set Rec=^KOD(KLNr,"F",ORDNr,OLNr) . Quit:$P($P(Rec,D,17),"#")'="KF11" . Set BlockId=$P(Rec,D,18) . Quit:$P(BlockId,";",2)'="P" . Set OldOLUNr=$P(BlockId,";",3) . Quit:'OldOLUNr . Set TmpOLNr=$G(OldOLULink(OldOLUNr)) . Quit:'TmpOLNr . Set NewOLUNr=$G(NewOLULink(TmpOLNr)) . Quit:'NewOLUNr . Set $P(BlockId,";",3)=NewOLUNr,$P(Rec,D,18)=BlockId . Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec Quit BUILDORD(KLNr,ORDNr,OLNr) Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Do BUILDIU(KLNr,ORDNr,OLNr) Do BUILDIP(KLNr,ORDNr,OLNr) Quit ; BUILDIU(KLNr,ORDNr,OLNr) New R,OneCust,OneOrd,OneLine,PRNr,OLUNr Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Set (OneCust,OneOrd,OneLine)=0 Set:KLNr OneCust=1 Set:ORDNr OneOrd=1 Set:OLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOD(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOrd ORDNr=0 .For Set:'OneOrd ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OneOrd ..Set:'OneLine OLNr=100 ..For Set:'OneLine OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:OneLine ...Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ...If 'OLUNr Set OLUNr=$$UNIEKLNR^FLOWORD(KLNr,ORDNr),$P(R,D,15)=OLUNr,^KOD(KLNr,"F",ORDNr,OLNr)=R ...Quit:'PRNr ...Set ^ORD("IU",ORDNr,OLUNr)=OLNr Quit ; BUILDIP(KLNr,ORDNr,OLNr) New R,OneCust,OneOrd,OneLine,OLUNr,PRNr Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Set (OneCust,OneOrd,OneLine)=0 Set:KLNr OneCust=1 Set:ORDNr OneOrd=1 Set:OLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOD(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOrd ORDNr=0 .For Set:'OneOrd ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OneOrd ..Set:'OneLine OLNr=100 ..For Set:'OneLine OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:OneLine ...Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ...If 'OLUNr Set OLUNr=$$UNIEKLNR^FLOWORD(KLNr,ORDNr),$P(R,D,15)=OLUNr,^KOD(KLNr,"F",ORDNr,OLNr)=R ...Quit:'PRNr ...Set ^ORD("IP",PRNr,ORDNr,OLUNr)=OLNr Quit ; DELORD(KLNr,ORDNr,OLNr) Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Do DELIU(KLNr,ORDNr,OLNr) Do DELIP(KLNr,ORDNr,OLNr) Quit ; DELIU(KLNr,ORDNr,OLNr) New R,OneCust,OneOrd,OneLine,OLUNr Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Set (OneCust,OneOrd,OneLine)=0 Set:KLNr OneCust=1 Set:ORDNr OneOrd=1 Set:OLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOD(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOrd ORDNr=0 .For Set:'OneOrd ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OneOrd ..Set:'OneLine OLNr=100 ..For Set:'OneLine OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:OneLine ...Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ...If 'OLUNr Set OLUNr=$$UNIEKLNR^FLOWORD(KLNr,ORDNr),$P(R,D,15)=OLUNr,^KOD(KLNr,"F",ORDNr,OLNr)=R ...Quit:'PRNr ...Kill ^ORD("IU",ORDNr,OLUNr) Quit ; DELIP(KLNr,ORDNr,OLNr) New R,OneCust,OneOrd,OneLine,OLUNr,PRNr Set KLNr=$G(KLNr,0),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Set (OneCust,OneOrd,OneLine)=0 Set:KLNr OneCust=1 Set:ORDNr OneOrd=1 Set:OLNr OneLine=1 For Set:'OneCust KLNr=$O(^KOD(KLNr)) Quit:KLNr="" Do Quit:OneCust .Set:'OneOrd ORDNr=0 .For Set:'OneOrd ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OneOrd ..Set:'OneLine OLNr=100 ..For Set:'OneLine OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:OneLine ...Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ...If 'OLUNr Set OLUNr=$$UNIEKLNR^FLOWORD(KLNr,ORDNr),$P(R,D,15)=OLUNr,^KOD(KLNr,"F",ORDNr,OLNr)=R ...Quit:'PRNr ...Kill ^ORD("IP",PRNr,ORDNr,OLUNr) Quit ; CHECKORD Do .New Check .Set Q="K" .Do ^cA604 If '$D(Check) Write !!,"*** WMS ord ***" Set KLNr=0 For Set KLNr=$O(^KOD(KLNr)) Quit:'KLNr Do .Set ORDNr="" .For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:'ORDNr Do ..Kill OLUNr ..Set OLNr=100 ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ...Set R=^KOD(KLNr,"F",ORDNr,OLNr),ZR=$ZR,PRNr=$P(R,D,2),OLUNr=$P(R,D,15) ...If 'OLUNr Do Quit ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,R,!,"OLUNr onbekend" ...Set OLUNr(OLUNr)="" ...Quit:'PRNr ...If '$D(^ORD("IU",ORDNr,OLUNr)) Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,R,!,$ZR," onbekend" ...If $D(^ORD("IU",ORDNr,OLUNr)),^ORD("IU",ORDNr,OLUNr)'=OLNr Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,R,!,^ORD("IU",ORDNr,OLUNr),!,$ZR," Verschillend" ...If '$D(^ORD("IP",PRNr,ORDNr,OLUNr)) Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,R,!,$ZR," onbekend" ...If $D(^ORD("IP",PRNr,ORDNr,OLUNr)),^ORD("IP",PRNr,ORDNr,OLUNr)'=OLNr Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,R,!,^ORD("IP",PRNr,ORDNr,OLUNr),!,$ZR," Verschillend" ..If $G(^KOD(KLNr,"F",ORDNr,4))*100'>$O(OLUNr(""),-1) Do ...If $D(Check) Set Check=0 ...Else Write !!,$ZR," OLUNr" Set ORDNr="" For Set ORDNr=$O(^ORD("IU",ORDNr)) Quit:'ORDNr Do .Set OLUNr="" .For Set OLUNr=$O(^ORD("IU",ORDNr,OLUNr)) Quit:'OLUNr Do ..Set R=^ORD("IU",ORDNr,OLUNr),ZR=$ZR,OLNr=$P(R,D) ..Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ..If 'KLNr Do Quit ...If $D(Check) Set Check=0 ...Else Write !!,ZR,!,"Order onbekend" ..If '$D(^KOD(KLNr,"F",ORDNr)) Do Quit ...If $D(Check) Set Check=0 ...Else Write !!,ZR,!,"Order onbekend" ..Set R=$G(^KOD(KLNr,"F",ORDNr,OLNr)) ..If R="" Do Quit ...If $D(Check) Set Check=0 ...Else Write !!,ZR,!,"Orderlijn onbekend" ..If $P(R,D,15)'=OLUNr Do ...If $D(Check) Set Check=0 ...Else Write !!,ZR,!,"OLUNr verschillend" Set PRNr="" For Set PRNr=$O(^ORD("IP",PRNr)) Quit:'PRNr Do .Set ORDNr="" .For Set ORDNr=$O(^ORD("IP",PRNr,ORDNr)) Quit:'ORDNr Do ..Set OLUNr="" ..For Set OLUNr=$O(^ORD("IP",PRNr,ORDNr,OLUNr)) Quit:'OLUNr Do ...Set R=^ORD("IP",PRNr,ORDNr,OLUNr),ZR=$ZR,OLNr=$P(R,D) ...Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ...If 'KLNr Do Quit ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,"Order onbekend" ...If '$D(^KOD(KLNr,"F",ORDNr)) Do Quit ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,"Order onbekend" ...Set R=$G(^KOD(KLNr,"F",ORDNr,OLNr)) ...If R="" Do Quit ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,"Orderlijn onbekend" ...If $P(R,D,2)'=PRNr Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,"PRNr verschillend" ...If $P(R,D,15)'=OLUNr Do ....If $D(Check) Set Check=0 ....Else Write !!,ZR,!,"OLUNr verschillend" Quit ; CHECK() New Set Check=1 Do CHECKORD Quit Check ; BUILDKOP New Do INIT^vhTERMINA Kill ^KOP Set KLNr=0 For Set KLNr=$O(^KOD(KLNr)) Quit:'KLNr Do .Set ORDNr="" .For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:'ORDNr Do ..Set OLNr=100 ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ...Set PRNr=$P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) ...Quit:'PRNr Quit:'$D(^KPR(PRNr)) ...Set ^KOP(PRNr,ORDNr,OLNr)=KLNr Quit ; CHECKKOP New Do INIT^vhTERMINA Set KLNr=0 For Set KLNr=$O(^KOD(KLNr)) Quit:'KLNr Do .Set ORDNr="" .For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:'ORDNr Do ..Set OLNr=100 ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Quit:OLNr'?.N Do ...Set PRNr=$P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) ...Quit:'PRNr ...If '$D(^KPR(PRNr)) Write:$D(^KOP(PRNr,ORDNr,OLNr)) !,$ZR,!,"Produkt onbekend" ...Else If '$D(^KOP(PRNr,ORDNr,OLNr)) Write !,$ZR,!,"Onbekend" ...Else If ^KOP(PRNr,ORDNr,OLNr)'=KLNr Write !,$ZR,!,"Klant verschillend" Set PRNr="" For Set PRNr=$O(^KOP(PRNr)) Quit:'PRNr Do .Set ORDNr="" .For Set ORDNr=$O(^KOP(PRNr,ORDNr)) Quit:'ORDNr Do ..Set OLNr="" ..For Set OLNr=$O(^KOP(PRNr,ORDNr,OLNr)) Quit:'OLNr Do ...Set KLNr=^KOP(PRNr,ORDNr,OLNr) ...If '$D(^KOD(KLNr,"F",ORDNr,OLNr)) Write !,$ZR,!,"Onbekend" ...Else If PRNr'=$P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) Write !,$ZR,!,"Produkt verschillend" Quit ; AUTOORD New I,R,Next,Aantal,LevTerm,Prijs,Text,BlockId,AfdrFakt,NoRecalc,LDefault Set Next="" For Set Next=$O(PRNr(Next)) Quit:Next="" Do .Set ScrolOrd=1 .Set R=PRNr(Next) .If $P(R,D)="T" Do ..Set Text=$P(R,D,2),BlockId=$P(R,D,3),AfdrFakt=$P(R,D,4) ..Do TINSERT^FLOWORD(,,Text,,BlockId,AfdrFakt) .Else Do ..Kill LDefault ..Set PRNr=$P(R,D),Aantal=$P(R,D,2),LevTerm=$P(R,D,3),Prijs=$P(R,D,4) ..If $L($G(PRNr(Next,"Default"))) For I=1:1:$L(PRNr(Next,"Default"),D) Set:$L($P(PRNr(Next,"Default"),D,I)) LDefault(I)=$P(PRNr(Next,"Default"),D,I) ; De default waarden instellen ..Set NoRecalc=''$L(Prijs) Set:'NoRecalc NoRecalc="" ..Do PINSERT^FLOWORD(,,PRNr,Aantal,Prijs,,,LevTerm,,,NoRecalc,,,.LDefault) Kill PRNr Quit ; EXTERN(ORDNr) New Locals,UR Set (Locals("ORDNr"),UR)=ORDNr,Locals("Extern")=1 Do DO^vhPROGRAM("FOE^KF9","","",$G(NoMod)) Quit ; ; Versturen van een mail naar JDB bij het wijzigen van een haluxorder ModOrderMailToHalux(Actie,Param1,Param2,Param3,Param4,Param5,Param6) New TUserId,TUser,FUserId,FUser,MailId,Text Set TUserId=$$USERID^vhUSER(##Class(TECH.Config.ConfigMgr).Instance().GetString("FLOWORD3_ModOrderMailToHalux_TUser")) Set FUserId=$G(CUserId,$G(QU(1),$P($$DEVUSER^vhUSER(),";"))),FUser=$$USERNAME^vhUSER(FUserId) Set Text(1)="Order "_$$EXTNUM^vhDTyp(Param2,0,".",0)_" (toelevering "_Param3_")" Set Text(1)=Text(1)_" van "_$P(^KKL(^KK1(Param1),0),D,2)_"~gewijzigd door "_FUser_".~" If Actie="DL" Do ; Orderlijn verwijderen . ; Param1=KLNr, Param2=ORDNr, Param4=PRNr . Set Text(2)="~Het product "_$P(^KPR(Param4,0),D)_" is verwijderd!" If Actie="DO" Do ; Order verwijderen . ; Param1=KLNr, Param2=ORDNr . Set Text(2)="~Het order is volledig verwijderd!" If Actie="MA" Do ; Aantal wijzigen . ; Param1=KLNr, Param2=ORDNr, Param4=PRNr, Param5=Oude aantal, Param6=Nieuwe aantal . Set Text(2)="~Wijziging aantal product "_$P(^KPR(Param4,0),D) . Set Text(3)="~van "_Param5_" naar "_Param6_"." If Actie="MP" Do ; Product wijzigen . ; Param1=KLNr, Param2=ORDNr, Param4=Oude PRNr, Param5=Nieuwe PRNr . Set Text(2)="~Wijzigen product "_$P(^KPR(Param4,0),D) . Set Text(3)="~ naar "_$P(^KPR(Param5,0),D) Set MailId=$$SYSTEM^vhMAIL("","","Wijziging order",TUserId,.Text,"","U","A") Set TUser=$$USERNAME^vhUSER(TUserId) Do:$L(TUser,";")>1 . For Quit:$L(TUser,";")=2 Set TUser=$P(TUser,";")_", "_$P(TUser,";",2,99) . Set TUser=$P(TUser,";")_" en "_$P(TUser,";",2) Do TXTPOP^FLOW("MODHALUX","",TUser,$S($L(TUserId,";")=1:"is",1:"zijn")) Quit ; ; Lijnnummer via uniek lijnnummer OLNR(ORDNr,OLUNr) Quit ^ORD("IU",ORDNr,OLUNr) ;