KLACHT4 ; Klachtenbehandeling [ 10/03/2002 4:40 PM ] ; KOPORD(KLNr,ORDNr,OLNr) New I,R,RegPar,Klant,KlachtId,Derde,Next,BtrRzt,Onderw,KlNaam,VerantW Set KLNr=$G(KLNr),ORDNr=$G(ORDNr),OLNr=$G(OLNr) Do STORE^vhTERMINA() If 'ORDNr Set:KLNr Klant("K")=KLNr Set ORDNr=$$SELECT^FLOW("KOD","KO1",1,,.Klant) If ORDNr,$D(^KO1(ORDNr,"F")) Do .Set KLNr=$P(^KO1(ORDNr,"F"),D) .For Set KlachtId=$$SELECT^KLACHTS("K",KLNr,"BR",,"-TY*") Quit:$P(KlachtId,D)'="Y" Do Quit:$P(KlachtId,D)="Y" ..Quit:'$D(^KlachtI("O",ORDNr,$P(KlachtId,D,2))) ..Set KlachtId=$P(KlachtId,D,2),BtrRzt=^KlachtI("O",ORDNr,KlachtId),BtrRzt=$S(BtrRzt="B":"registratie",1:"behandel") ..Set Onderw=$$ONOM^KLACHT(KlachtId,,1),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..Set R=$$^vhTXTPOP("KLACHT","GEKOPPELD","","Order",$$EXTNUM^vhLib.DataTypes(ORDNr,0,".",0),BtrRzt,Onderw,KlNaam) .If '$P(KlachtId,D),$P(KlachtId,D)'="*",$P(KlachtId,D)'="Y" Quit .Set RegPar("OPROEP")="ORD" .If 'KlachtId Do ..If $P(KlachtId,D)="*" Do ...Set R=$$ORDDATA^KLACHT2(KLNr,ORDNr,OLNr) ...Quit:R="" ...Set RegPar("KLNR")=KLNr ...For I=1:1:$L(R,";") Do ....If $P($P(R,";",I),"#")="W" Set RegPar("WAARDE")=$P($P(R,";",I),"#",2) ....Else Set RegPar("RZTELEM",$O(RegPar("RZTELEM",""),-1)+1)=$P(R,";",I) ...Set R=^KOD(KLNr,"F",ORDNr,1),VerantW=$P($P(R,D,24),"#"),RegPar("VERANTW")=VerantW ...Do NIEUW^KLACHT(.RegPar) ..Else Do ...Set Next=$O(^KlachtD($P(KlachtId,D,2),$P(KlachtId,D,3),""),-1)+1 ...Set ^KlachtD($P(KlachtId,D,2),$P(KlachtId,D,3),Next)="O#"_ORDNr ...Do BLDIND^KLACHT($P(KlachtId,D,2)) ...Set R=$$RAADPL^KLACHT($P(KlachtId,D,2),,,,"O") .Else Do EDIT^KLACHT(KlachtId) Do REFRESH^vhTERMINA() Quit ; ; Opkuisen van een order in een klacht (status verouderd) ResetOrderInKlacht(ORDNr,KlachtID) New R,BtrRzt,Element For BtrRzt="B","R" Do . Set Element="" . For Set Element=$O(^KlachtD(KlachtID,BtrRzt,Element)) Quit:Element="" Do . . Set R=^KlachtD(KlachtID,BtrRzt,Element) . . Quit:$P(R,"#")'="O" Quit:$P(R,"#",2)'=ORDNr . . Set $P(R,"#",5)=1 . . Set ^KlachtD(KlachtID,BtrRzt,Element)=R Kill ^KlachtI("O",ORDNr,KlachtID) Quit ; ; Opkuisen van een bon in een klacht (status verouderd) ResetBonInKlacht(BONNr,KlachtID) New R,BtrRzt,Element For BtrRzt="B","R" Do . Set Element="" . For Set Element=$O(^KlachtD(KlachtID,BtrRzt,Element)) Quit:Element="" Do . . Set R=^KlachtD(KlachtID,BtrRzt,Element) . . Quit:$P(R,"#")'="B" Quit:$P(R,"#",2)'=BONNr . . Set $P(R,"#",5)=1 . . Set ^KlachtD(KlachtID,BtrRzt,Element)=R Kill ^KlachtI("B",BONNr,KlachtID) Quit ; ; Opkuisen van een factuur in een klacht (status verouderd) ResetFactInKlacht(FANr,KlachtID) New R,BtrRzt,Element For BtrRzt="B","R" Do . Set Element="" . For Set Element=$O(^KlachtD(KlachtID,BtrRzt,Element)) Quit:Element="" Do . . Set R=^KlachtD(KlachtID,BtrRzt,Element) . . Quit:$P(R,"#")'="F" Quit:$P(R,"#",2)'=FANr . . Set $P(R,"#",5)=1 . . Set ^KlachtD(KlachtID,BtrRzt,Element)=R Kill ^KlachtI("F",FANr,KlachtID) Quit ; ; Opkuisen van een proforma in een klacht (status verouderd) ResetProfInKlacht(FANr,KlachtID) New R,BtrRzt,Element For BtrRzt="B","R" Do . Set Element="" . For Set Element=$O(^KlachtD(KlachtID,BtrRzt,Element)) Quit:Element="" Do . . Set R=^KlachtD(KlachtID,BtrRzt,Element) . . Quit:$P(R,"#")'="V" Quit:$P(R,"#",2)'=FANr . . Set $P(R,"#",5)=1 . . Set ^KlachtD(KlachtID,BtrRzt,Element)=R Kill ^KlachtI("V",FANr,KlachtID) Quit ; ; ; Overhevelen van order naar bon MoveOrdToBon(BONNr) New R,KLNr,ORDNr,BLNr,KlachtID Set KLNr=$P($G(^KU1(BONNr,"F")),D) Do:KLNr . Set BLNr=100 . For Set BLNr=$O(^KUL(KLNr,"F",BONNr,BLNr)) Quit:'BLNr Do . . Set R=^KUL(KLNr,"F",BONNr,BLNr) . . Quit:$P(R,D,17)'="KF5" . . Set ORDNr=$P($P(R,D,5)," - ") . . Quit:'ORDNr . . Set KlachtID="" . . For Set KlachtID=$O(^KlachtI("O",ORDNr,KlachtID)) Quit:KlachtID="" Do ResetOrderInKlacht(ORDNr,KlachtID) Quit ; ; Overhevelen van bon naar factuur MoveBonToFactuur(FANr) New R,KLNr,BONNr,BLNr,ORDNr,KlachtID Set KLNr=$P($G(^KFA("F",FANr,0,0)),D) Do:KLNr . Set BONNr="U" ; Verwijderen van de bons . For Set BONNr=$O(^KFA("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do . . Set KlachtID="" . . For Set KlachtID=$O(^KlachtI("B",$E(BONNr,2,9),KlachtID)) Quit:KlachtID="" Do ResetBonInKlacht($E(BONNr,2,9),KlachtID) . . Set BLNr=100 ; Verwijderen van de eventuele orders (kunnen nog bestaan indien de klacht opgemaakt is vanuit de bon i.p.v. het order) . . For Set BLNr=$O(^KFA("F",FANr,BONNr,BLNr)) Quit:'BLNr Do . . . Set R=^KFA("F",FANr,BONNr,BLNr) . . . Set ORDNr=$P($P(R,D,5)," - ") . . . Quit:'ORDNr . . . Set KlachtID="" . . . For Set KlachtID=$O(^KlachtI("O",ORDNr,KlachtID)) Quit:KlachtID="" Do ResetOrderInKlacht(ORDNr,KlachtID) Quit ; ; Overhevelen van bon naar proforma MoveBonToProforma(FANr) New R,KLNr,BONNr,BLNr,ORDNr,KlachtID Set KLNr=$P($G(^KFAP("F",FANr,0,0)),D) Do:KLNr . Set BONNr="U" ; Verwijderen van de bons . For Set BONNr=$O(^KFAP("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do . . Set KlachtID="" . . For Set KlachtID=$O(^KlachtI("B",$E(BONNr,2,9),KlachtID)) Quit:KlachtID="" Do ResetBonInKlacht($E(BONNr,2,9),KlachtID) . . Set BLNr=100 ; Verwijderen van de eventuele orders (kunnen nog bestaan indien de klacht opgemaakt is vanuit de bon i.p.v. het order) . . For Set BLNr=$O(^KFAP("F",FANr,BONNr,BLNr)) Quit:'BLNr Do . . . Set R=^KFAP("F",FANr,BONNr,BLNr) . . . Set ORDNr=$P($P(R,D,5)," - ") . . . Quit:'ORDNr . . . Set KlachtID="" . . . For Set KlachtID=$O(^KlachtI("O",ORDNr,KlachtID)) Quit:KlachtID="" Do ResetOrderInKlacht(ORDNr,KlachtID) Quit ; ; Opkuisen klacht bij het verwijderen van een order DelOrd(ORDNr) New R,KLNr,KlachtID Set KLNr=$P($G(^KO1(ORDNr,"F")),D) Do . If KLNr,$D(^KOD(KLNr,"F",ORDNr)) Quit . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("O",ORDNr,KlachtID)) Quit:KlachtID="" Do ResetOrderInKlacht(ORDNr,KlachtID) Quit ; ; Opkuisen klacht bij het verwijderen van een bon DelBon(BONNr) New R,KLNr,KlachtID Set KLNr=$P($G(^KU1(BONNr,"F")),D) Do . If KLNr,$D(^KUL(KLNr,"F",BONNr)) Quit . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("B",BONNr,KlachtID)) Quit:KlachtID="" Do ResetBonInKlacht(BONNr,KlachtID) Quit ; ; Opkuisen klacht bij het verwijderen van een factuur DelFact(FANr) New R,KLNr,KlachtID,BtrRzt,Element Set KLNr=$P($G(^KFA("F",FANr,0,0)),D) Do:'KLNr . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("F",FANr,KlachtID)) Quit:KlachtID="" Do ResetFactInKlacht(FANr,KlachtID) Quit ; ; Opkuisen klacht bij het verwijderen van een proforma DelProf(FANr) New R,KLNr,KlachtID,BtrRzt,Element Set KLNr=$P($G(^KFAP("F",FANr,0,0)),D) Do:'KLNr . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("V",FANr,KlachtID)) Quit:KlachtID="" Do ResetProfInKlacht(FANr,KlachtID) Quit ; Clean Do CleanOrder,CleanBon,CleanFact,CleanProf Quit ; ; Eenmalig opkuisen van de orders CleanOrder New R,ORDNr,KlachtID,OrdKLNr,KlachtKLNr Write !!,"Orders" Set ORDNr="" For Set ORDNr=$O(^KlachtI("O",ORDNr)) Quit:ORDNr="" Do . Set OrdKLNr=$P($G(^KO1(ORDNr,"F")),D) . If OrdKLNr,'$D(^KOD(OrdKLNr,"F",ORDNr)) Set OrdKLNr="" ; Het order bestaat niet meer . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("O",ORDNr,KlachtID)) Quit:KlachtID="" Do . . Set R=^KlachtD(KlachtID) . . Quit:$P(R,D)'="K" . . Set KlachtKLNr=$P(R,D,2) . . Quit:KlachtKLNr=OrdKLNr . . Write !,ORDNr,?10,KlachtID,?20,OrdKLNr,?25,KlachtKLNr . . ;Do ResetOrderInKlacht(ORDNr,KlachtID) Quit ; ; Eenmalig opkuisen van de bons CleanBon New R,BONNr,KlachtID,BonKLNr,KlachtKLNr Write !!,"Bons" Set BONNr="" For Set BONNr=$O(^KlachtI("B",BONNr)) Quit:BONNr="" Do . Set BonKLNr=$P($G(^KU1(BONNr,"F")),D) . If BonKLNr,'$D(^KUL(BonKLNr,"F",BONNr)) Set BonKLNr="" ; De bon bestaat niet meer . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("B",BONNr,KlachtID)) Quit:KlachtID="" Do . . Set R=^KlachtD(KlachtID) . . Quit:$P(R,D)'="K" . . Set KlachtKLNr=$P(R,D,2) . . Quit:KlachtKLNr=BonKLNr . . Write !,BONNr,?10,KlachtID,?20,BonKLNr,?25,KlachtKLNr . . ;Do ResetBonInKlacht(BONNr,KlachtID) Quit ; ; Eenmalig opkuisen van de facturen CleanFact New R,FANr,KlachtID,FaKLNr,KlachtKLNr Write !!,"Facturen" Set FANr="" For Set FANr=$O(^KlachtI("F",FANr)) Quit:FANr="" Do . Set FaKLNr=$P($G(^KFA("F",FANr,0,0)),D) . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("F",FANr,KlachtID)) Quit:KlachtID="" Do . . Set R=^KlachtD(KlachtID) . . Quit:$P(R,D)'="K" . . Set KlachtKLNr=$P(R,D,2) . . Quit:KlachtKLNr=FaKLNr . . Write !,FANr,?10,KlachtID,?20,FaKLNr,?25,KlachtKLNr . . ;Do ResetFactInKlacht(FANr,KlachtID) Quit ; ; Eenmalig opkuisen van de proforma's CleanProf New R,FANr,KlachtID,FaKLNr,KlachtKLNr Write !!,"Proforma's" Set FANr="" For Set FANr=$O(^KlachtI("V",FANr)) Quit:FANr="" Do . Set FaKLNr=$P($G(^KFAP("F",FANr,0,0)),D) . Set KlachtID="" . For Set KlachtID=$O(^KlachtI("V",FANr,KlachtID)) Quit:KlachtID="" Do . . Set R=^KlachtD(KlachtID) . . Quit:$P(R,D)'="K" . . Set KlachtKLNr=$P(R,D,2) . . Quit:KlachtKLNr=FaKLNr . . Write !,FANr,?10,KlachtID,?20,FaKLNr,?25,KlachtKLNr . . ;Do ResetProfInKlacht(FANr,KlachtID) Quit ;