KONTAKT ;Selectie van een klant, leverancier of derde [ 10/25/2001 3:08 PM ] ; SELECT(Type,Optie,DefInp,Titel,DLabel,RetKey,CB,Other) ; Type : {L,K,D,A} = {Leverancier, Klant, Derde, Andere} ; Optie : A = Aktieve klanten ; P = Produkt leveranciers ; D = Derde/Prospekt volledig adres vragen ; G = Derde/Prospekt Gemeente vragen ; V = Vrije ingave (er wordt niet gevraagd naar Voor akkoord bij Derde) ; R = Refresh ; Z = Zonder (ook blanko toegelaten) ; DefInp : Default input zodat het vanuit vhScherm kan opgeroepen worden ; Default input kan ook een bestaande ingave zijn. Dan ziet die DefInp eruit als bv.: "K;11708" ; Titel : Tekst te plaatsen ipv. "Betreft :" ; DLabel : Kode + Label bv.: "P;Prospect" ; Toetsen waarmee de ingave onderbroken wordt ; CB : Opgeroepen via .Local ; Other : Xecute + Label (indien type["A") bv.: "KLETIKET;Etiketten" ; New X,Y,Inp,Test,Help,Derde,InitT,NoAsk,DefGem,Exit Set Optie=$G(Optie),DefInp=$G(DefInp) Set NoAsk=$L(DefInp) Set DefGem="" Set:$L(DefInp,";")>1 DefGem=$P(DefInp,";",3),DefInp=$P(DefInp,";",2),NoAsk=0 If '$L($G(Titel)) Set Titel="Betreft : " Set:'$L($G(DLabel)) DLabel="D;Derde" Set:'$L($G(Other)) Type=$TR(Type,"A","") Set InitT=Type Set Exit="" Set:NoAsk Inp=DefInp SEL2 Set Help="" Set:Type["K" Help=Help_"/Klant" Set:Type["L" Help=Help_"/Leverancier" Set:Type["D" Help=Help_"/"_$P(DLabel,";",2) Set Help="Ingave van "_$E(Help,2,99)_" via naam of nummer" Set:'NoAsk Inp=$$ASK^vhINP(Titel,20,DefInp,Help) Set NoAsk="" Quit:Inp="-"!(Inp=".") Inp Set Derde=Inp,Inp=$$UPTRIMAN^vhRtn1(Inp) If Inp="" Do SELTYPE Quit:X="Z" "" Do Goto SEL2:'$D(Exit),EXIT .Kill Exit .Set Type=InitT Set:$L(X) Type=X .Quit:Type'="A" .Xecute "Set Exit="_$P(Other,";") .If Exit="-" Set Type=InitT Kill Exit If Type["K",Inp?1.N,$D(^KK1(Inp)) Set Exit="K;"_Inp Goto SEL2:'$$CHECK(),EXIT If Type["L",Inp?1.N,$D(^KL1(Inp)) Set Exit="L;"_Inp Goto SEL2:'$$CHECK(),EXIT ;Set Test=$O(^KKL(Inp)) ;If Type["K",$E(Test,1,$L(Inp))=Inp If $E($O(^KKL(Test)),1,$L(Inp))'=Inp Set Exit="K;"_+^KKL(Test,0) Goto EXIT:$$CHECK() ;Set Test=$O(^KLE(Inp)) ;If Type["L",$E(Test,1,$L(Inp))=Inp If $E($O(^KLE(Test)),1,$L(Inp))'=Inp Set Exit="L;"_+^KLE(Test,0) Goto EXIT:$$CHECK() Set Exit="" SELKLE Do LISTKLE(Inp) Goto EXIT:$L(Exit),SELD:X=$E(DLabel),SEL2:X="I" SELD If Type["D",$L(Inp)>2 Do DERDE(Derde) Goto EXIT:$L(Exit) Goto SEL2 EXIT Quit Exit ; CHECK() If Exit="",Optie'["Z" Quit 0 If $E(Exit)="K" Quit:Optie'["A" 1 Quit '$P(^KKL(^KK1($P(Exit,";",2)),2),D,10) If $E(Exit)="L" Quit:Optie'["P" 1 Quit $P(^KLE(^KL1($P(Exit,";",2)),0),D,27) Quit 1 ; SELTYPE New Y Set Y=0 If Optie["Z" Set Y=Y+1,Y(Y)="Zonder\Z" If InitT["K" Set Y=Y+1,Y(Y)="Klant\K" If InitT["L" Set Y=Y+1,Y(Y)="Leverancier\L" If InitT["D" Set Y=Y+1,Y(Y)=$P(DLabel,";",2)_"\D" If InitT["A" Set Y=Y+1,Y(Y)=$P(Other,";",2)_"\A" If Y=1 Set X=1 Else Do .Set Y(0)=Y,Y="22\BF\Selecteer kontakt type" .Do ^POP Set X=$S(X:$P(Y(X),"\",2),1:"") Quit ; DERDE(Inp) New Gem Set Exit="" Set Gem="" If Optie["G" Set Gem=$$ASK^vhINP("Gemeente voor "_$P(DLabel,";",2)_" '"_Inp_"' : ",20,DefGem,"I[] = Ingave") Quit:$L(Gem)<2 If Optie'["V",Optie'["G" Do If 'Gem,$$UPCASE^vhRtn1(Gem)'=$E("JA",1,$L(Gem))!'$L(Gem) Quit .Set Gem=$$ASK^vhINP("Akkoord voor ingave "_$P(DLabel,";",2)_" '"_Inp_"' : ",20,"","1[]="_$P(DLabel,";",2)_" []=Terug naar ingave") Set Exit=$E(DLabel)_";"_Inp Set:Optie["G" $P(Exit,";",3)=Gem Quit ; LISTKLE(Kode) New Y,TKl,Kl,IsAkt,TLev,Lev,IsProd Set (X,Exit)="" Set (KlLev,TKlLev)=Kode Set IsAkt=Optie["A" Set IsProd=Optie["P" If '$L(KlLev) Set KlLev="ZZZZZ" Set Y="5\B\Selecteer een " Set:Type["K" Y=Y_"klant" If Type["K",Type["L" Set Y=Y_" of " Set:Type["L" Y=Y_"Leverancier" Set Y=Y_" "_$S(Type["D":$E(DLabel)_"="_$P(DLabel,";",2)_" ",1:"") Set Y=Y_"I=Ingave\\MORE^KONTAKT\KONTAKT\KLI"_$E(DLabel,1) X "Set Y(0)=$$"_$P(Y,"\",5)_"(0,3)" Quit:'Y(0) Do ^POP If X Do .If $D(^KKL(Y(X))) Set Exit="K;"_+^KKL(Y(X),0) .Else Set Exit="L;"_+^KLE(Y(X),0) Quit ; MORE(Max,Len,Ref) If Max>200 w *7 Quit Max Set Count=0 If Max,TKlLev="" Quit Max For Do FETCH Quit:TKlLev=""!($E(TKlLev,1,$L(KlLev))'=KlLev) Do STORE Quit:Count>Len Set:$E(TKlLev,1,$L(KlLev))'=KlLev TKlLev="" Quit Max+Count ; FETCH New NextKl,NextLev If Type'["K",Type'["L" Set (NextKl,NextLev)="" Set:Type["K" NextKl=$O(^KKL(TKlLev)) Set:Type["L" NextLev=$O(^KLE(TKlLev)) Set TKlLev=$S(Type'["L":NextKl,Type'["K":NextLev,NextKl="":NextLev,NextLev="":NextKl,NextKl]NextLev:NextLev,1:NextKl) Quit ; STORE If 'IsAkt,'IsProd Else If IsAkt,$D(^KKL(TKlLev)) Quit:$P(^KKL(TKlLev,2),D,10) Else If IsProd,$D(^KLE(TKlLev)) Quit:'$P(^KLE(TKlLev,0),D,27) Set Count=Count+1,Y(Max+Count)=TKlLev Quit ; DISPLAY(Ref,Optie,Separ,DerdeOms) ;Ref = Reference als bv.:"K;11708" ;Optie : K = Met kode ; F = Met volledige kode ; N = Met nummer ; G = Gemeente ; Z = Zonder ;Separ : Scheiding tussen Kode en Nr/Naam, default blanko ;DerdeOms : Omschrijving bij volledige kode voor derde If Ref="" Quit $S(Optie["Z":"Zonder",1:"") Set Exit="" If Optie["K" Set Exit=$E(Ref)_$G(Separ," ") If Optie["F",Optie'["K" Set Exit=$S($E(Ref)="K":"Klant",$E(Ref)="L":"Leverancier",1:$G(DerdeOms,"Derde"))_$G(Separ," :") If Optie["N",$E(Ref)="L"!($E(Ref)="K") Set Exit=Exit_$P(Ref,";",2) If $E(Ref)="K" Set Exit=Exit_" "_$S($P(Ref,";",2):$P($G(^KKL($G(^KK1($P(Ref,";",2)),"*"),0),D_"Onbekend"_$P(Ref,";",2)),D,2),1:"Onbekend "_$P(Ref,";",2)) If $E(Ref)="L" Set Exit=Exit_" "_$S($P(Ref,";",2):$P($G(^KLE($G(^KL1($P(Ref,";",2)),"*"),0),D_"Onbekend"_$P(Ref,";",2)),D,2),1:"Onbekend "_$P(Ref,";",2)) If $E(Ref)'="L",$E(Ref)'="K" Set Exit=Exit_" "_$P(Ref,";",2) Set:$E(Exit)=" " $E(Exit)="" If Optie["G" Do .If $E(Ref)="K" Set Exit=Exit_" "_$S($P(Ref,";",2):$P($G(^KKL($G(^KK1($P(Ref,";",2)),"*"),0)),D,7),1:"") .If $E(Ref)="L" Set Exit=Exit_" "_$S($P(Ref,";",2):$P($G(^KLE($G(^KL1($P(Ref,";",2)),"*"),0)),D,7),1:"") .If $E(Ref)'="L",$E(Ref)'="K" Set Exit=Exit_" "_$P(Ref,";",3) Quit Exit ; ; Selecteer een telefoonnummer TELEFOON(ObjType,ObjRef,InclExtVw) New zb,D,T,G,LD,TelTab,TelefoonTrimN,Rec,ObjKey,ObjNaam,Telefoon,Telefoon1,Telefoon2,GSM,SortKey,SelCount,Select New ContactType,Contact,PersNr,PersName,Functie,Connect,IntVw,Count,sFmt,Select,NLength,TLength,UserId,WinUser,SerchTab Set D="\",(Select,NLength,TLength)=0,ObjKey=@("^K"_$S(ObjType="L":"L1",1:"K1")_"(ObjRef)") Set Rec=@("^K"_$S(ObjType="L":"LE",1:"KL")_"(ObjKey,0)") Do:'$P(Rec,D,30) ; Verwijderd of buiten gebruik . Set UserId=$$LoggedInUser^vhUSER() . Set ObjNaam=$P(Rec,D,2),Telefoon1=$P(Rec,D,13),Telefoon2=$P(Rec,D,14) . Set Rec=@("^K"_$S(ObjType="L":"LE",1:"KL")_"(ObjKey,2)") . If ObjType="K" Quit:$P(Rec,D,10) ; Klant Commercieel niet actief . Set GSM=$P(Rec,D,20),IntVw="" Set:ObjType="K" IntVw=$$INTVW^KLOPV(ObjRef) . ; Algemene gegevens . For ContactType="Telefoon1","Telefoon2","GSM" Do . . Set SortKey=$S(ContactType="Telefoon1":1,ContactType="Telefoon2":2,ContactType="GSM":3,1:"") . . Set TelefoonTrimN=$$TRIMN^vhRtn1(@ContactType) . . Do:$L(TelefoonTrimN) . . . Set SelCount=$G(^TAPI("IP",UserId,ObjType,ObjRef,"*",TelefoonTrimN_" ")) . . . Do SORTTAB(.TelTab,ContactType,0,,@ContactType,TelefoonTrimN,(ContactType="GSM"),SelCount,SortKey) . . . Do CALCDIM(ContactType,@ContactType,.NLength,.TLength) . ; Individuele gegevens uit ^PERS . Set PersNr="" . For Set PersNr=$O(^PERS(ObjType,ObjRef,PersNr)) Quit:PersNr="" Do . . Set Rec=^PERS(ObjType,ObjRef,PersNr),Contact=$P(Rec,D,2) Set:$L($P(Rec,D,3)) Contact=Contact_" "_$P(Rec,D,3) . . Set Functie=$P(Rec,D,5) Set:$L(Functie,";")>1 Functie=$P(Functie,";")_"*" . . Set PersName=$$GETNAME^PERS(ObjType,ObjRef,PersNr,"V") . . Set Connect=$P(Rec,D,15,99) . . For Do:$L($P(Connect,D)) Set Connect=$P(Connect,D,2,99) Quit:Connect="" . . . Set ContactType=$P($P(Connect,D),";") . . . If ContactType'="T",ContactType'="G" Quit ; Geen telefoon of GSM . . . Set TelefoonTrimN=$$TRIMN^vhRtn1($P($P(Connect,D),";",2)) . . . Do:$L(TelefoonTrimN) . . . . Set SelCount=$G(^TAPI("IP",UserId,ObjType,ObjRef,PersNr,TelefoonTrimN_" ")) . . . . Do SORTTAB(.TelTab,PersName,PersNr,Functie,$P($P(Connect,D),";",2),TelefoonTrimN,($P($P(Connect,D),";")="G"),SelCount) . . . . Do CALCDIM(PersName,$P($P(Connect,D),";",2),.NLength,.TLength) . Set (Count,SelCount)=0,PersNr="",Select=1 . For Set PersNr=$O(TelTab("S",PersNr)) Quit:PersNr="" Do . . Set SortKey="" . . For Set SortKey=$O(TelTab("S",PersNr,SortKey)) Quit:SortKey="" Do . . . Set Rec=TelTab("S",PersNr,SortKey),Count=Count+1,TelTab(Count)=Rec . . . If $P(Rec,D,7)>SelCount Set SelCount=$P(Rec,D,7),Select=$P(Rec,D) . . . Set SerchTab("S",-$P(Rec,D,7),PersNr,SortKey)=Count . Set SelCount="",Count=0 . For Set SelCount=$O(SerchTab("S",SelCount)) Quit:SelCount="" Do . . Set PersNr="" . . For Set PersNr=$O(SerchTab("S",SelCount,PersNr)) Quit:PersNr="" Do . . . Set SortKey="" . . . For Set SortKey=$O(SerchTab("S",SelCount,PersNr,SortKey)) Quit:SortKey="" Do . . . . Set Rec=SerchTab("S",SelCount,PersNr,SortKey),Count=Count+1,SerchTab(Count)=Rec . . . . Set $P(TelTab(Rec),D,8)=Count . Kill TelTab("S"),SerchTab("S") . Quit:'$D(TelTab) . Set SerchTab=1,Select=$P(TelTab(SerchTab(SerchTab)),D) . If ObjType="K",$G(InclExtVw) Do ; Externe vertegenwoordiger toeveoegen . . New I,R,Connect,ExtVw,UniekPersNr,ConRef,PersNr,PersName . . Set ExtVw=$$EXTVW^KLOPV(ObjRef) . . Quit:'ExtVw . . Set UniekPersNr=$P($G(^vhUSER("D",ExtVw)),D,18) . . Quit:'UniekPersNr . . Set ConRef=$$GetRef^PERS(UniekPersNr) . . Set PersNr=$LI(ConRef,3) . . Quit:'PersNr . . Set Connect=$$GetConnect^PERS(UniekPersNr,"G") . . Quit:Connect="" . . Set PersName=$$GETNAME^PERS($LI(ConRef),$LI(ConRef,2),$LI(ConRef,3),"V") . . Quit:PersName="" . . Set Count=$O(TelTab(""),-1) . . Set:Count Count=Count+1,TelTab(Count)="&S" . . For I=1:1:$LL(Connect) Do . . . Set R=$LI(Connect,I) . . . Set Count=Count+1,TelTab(Count)=PersName_D_PersNr_"\VTW\"_$LI(R,2)_D_$$TRIMN^vhRtn1($LI(R,2))_"\1\\"_Count_D_$LI(ConRef)_D_$LI(ConRef,2) . . . Set:NLength<$L(PersName) NLength=$L(PersName) . . . Set:TLength<$L($LI(R,2)) TLength=$L($LI(R,2)) . Merge LD=^RES("KONTAKT","LD","TELEFOON") . Set sFmt="LD",$P(LD(1),"`",4)=NLength,$P(LD(4),"`",4)=TLength . Set CB("K")="D`CB^"_$ZN . Set Rec=$$WILD^vhPOPUP("C;C","-1KORL","",.TelTab,Select,.CB),Telefoon=$P(Rec,"`",5),PersNr=$P(Rec,"`",2) . Set:$L($P(Rec,"`",9)) ObjType=$P(Rec,"`",9) Set:$L($P(Rec,"`",10)) ObjRef=$P(Rec,"`",10) . Set:$G(zb)="CANC" Telefoon="" . Do:$L(Telefoon) . . Do:##class(TECH.Config.ConfigMgr).Instance().GetBoolean("KONTAKT_MagBellen") . . . Set WinUser=##class(WS.TAPI.Router).TranslateUser(UserId) . . . Set Status=##class(WS.TAPI.Dialer).DialByLogon(Telefoon,WinUser) . . . If $L($$UPTRIMAN^vhRtn1(Status)) Do WARN^vhTXTPOP(Status,"TAPI fout") . . Set SelCount=$G(^TAPI("IP",UserId,ObjType,ObjRef,$S(PersNr:PersNr,1:"*"),Telefoon_" "))+1 . . Set ^TAPI("IP",UserId,ObjType,ObjRef,$S(PersNr:PersNr,1:"*"),Telefoon_" ")=SelCount Quit ; Opslaan telefoonnummers in locale tabel SORTTAB(TelTab,PersName,PersNr,Functie,Telefoon,TelefoonTrimN,IsGSM,SelCount,SortKey) New Rec Set PersName=$$REPLACENAME(PersName) Set SortKey=$G(SortKey) Set:SortKey="" SortKey=TelefoonTrimN_" " Set Rec=PersName_D_PersNr_D_$G(Functie)_D_Telefoon_D_TelefoonTrimN_D_IsGSM_D_SelCount Set TelTab("S",PersNr,SortKey)=Rec Quit ; Berekenen afmetingen popup CALCDIM(PersName,Telefoon,NLength,TLength) Set PersName=$$REPLACENAME(PersName) Set:NLength<$L(PersName) NLength=$L(PersName) Set:TLength<$L(Telefoon) TLength=$L(Telefoon) Quit ; Vervangen van tekst REPLACENAME(PersName) Set PersName=$$REPLACE^vhRtn1(PersName,"Telefoon","Algemeen nummer ") Set PersName=$$REPLACE^vhRtn1(PersName,"GSM","Algemeen GSM nummer") Quit PersName CB(Par) If sActie="²" Do . Set SerchTab=$O(SerchTab(SerchTab)) Set:SerchTab="" SerchTab=$O(SerchTab(SerchTab)) . Kill sX . Set sSelect=SerchTab(SerchTab),sLD("SELECT")=sSelect,sX(sSelect)=1 . Do SELECT^vhLIST(0) Else Set zb="" Set:sActie="-" zb="CANC" Set:sActie="." zb="CANC" Set:sActie=" " zb="SEL" Quit