KS ;KS (klant service) specifieke routines [ 05/09/2003 4:21 PM ] STAFFEL(PRNr,NoSa) ; Verpakking staffeling voor KS produkten New J,Rec,KSDB,KSKV,KSGV If "N"[$G(NoSa) Set NoSa="" Set J=$O(^KPR(PRNr,"J")) Quit:$E(J)'="J" "" Set Rec=^KPR(PRNr,J) Set KSDB=$P(Rec,D,10) Set KSKV=$P(Rec,D,11) Set KSGV=$P(Rec,D,12) If NoSa="S" Set Rec=^KPR(PRNr,2) Set:$P(Rec,D,10) KSDB=$P(Rec,D,10) Quit:'KSDB!'KSKV!'KSGV "" Quit KSGV_D_KSKV_D_1 ; Test is KS-produkt ISPROD(PRNr,NoSa) Quit $P($G(^KPR(PRNr,3)),"\",3) // Dit is een 'private method' en mag enkel vanuit deze routine opgeroepen worden. Dus geen externe calls hiernaar maken ! IsKSKlant(KLNr,ChkHand,NoSa) New KlantID #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) Quit '(##class(DOM.DomeinContext).Instance().GeefKlantTypeAPI().IsIndustriePoolKlant(KlantID)) ; Test is KS-klant en KS-produkt ISKLPR(KLNr,PRNr,ChkHand,NoSa) New IsKlant,IsProd,PrijsKl Set ChkHand=$G(ChkHand) If "N"[$G(NoSa) Set NoSa="" Set IsKlant=$$IsKSKlant(KLNr,ChkHand,NoSa),IsProd=$$ISPROD(PRNr,NoSa) If IsProd,$$ISORGAL^PRODUKT2(PRNr) Set IsProd=$$PRIJSKL^KLANT(KLNr,PRNr,NoSa)="P" If 'IsKlant,IsProd,$$ISORGAL^PRODUKT2(PRNr) Set IsKlant=$$PRIJSKL^KLANT(KLNr,PRNr,NoSa)="P" Quit IsKlant&IsProd ; Prijsberekings voor KS-staffel KSPRIJS(PRNr,KLNr,NoSa,RtnLoc,MetUtz,Munt,PrijsKL,IsHandel,IsBruto) ;PRNr : Verplicht ;KLNr : Niet verplicht, default="" ;NoSa : Niet verplicht, default="N" ;RtnLoc : De versch. prijzen worden per prijsklasse doorgeg. via de .RtnLoc. Voor een KS produkt zijn er dan drie records met Staffelaantal gevolgd met de PROD^KSPRIJS geg. ;MetUtz : Of er rekening moet gehouden worden met event. uitzonderingen ; default = Ja ;Munt : Niet verplicht, default=munt van de klant of Firmamunt ;PrijsKL : Niet verplicht, default=prijskl. van de klant of "P" ;IsHandel : Niet verplicht, default = KlantType van de klant>0 ;IsBruto : Niet verplicht, default = Brutoprijzen van de klant New KSPak,KsCust Set NoSa=$G(NoSa,"N") If $G(KLNr) Do .New KLId .Set KLId=^KK1(KLNr),KsCust=$$IsKSKlant(KLNr) .If $G(PrijsKL)="" Do ..Set PrijsKL=$P(^KKL(KLId,2),D,3) ..If NoSa="S",$L($P(^KKL(KLId,2),D,25)) Set PrijsKL=$P(^KKL(KLId,2),D,25) .Set IsBruto=$G(IsBruto,$P(^KKL(KLId,2),D,5)) .Set IsHandel=$G(IsHandel,$$IsHandel^KLANT5(KLNr)) .Set:$G(Munt)="" Munt=$P(^KKL(KLId,0),D,11) Else Do .Set:$G(PrijsKL)="" PrijsKL="P" .Set IsBruto=$G(IsBruto) .Set IsHandel=$G(IsHandel) .Set:$G(Munt)="" Munt=$$FADEF^vhRtn1() Set KSPak=$$STAFFEL(PRNr,NoSa) Set:'$L(KSPak)!(PrijsKL'="P") KSPak=0 Kill RtnLoc If $G(MetUtz,1),$G(KLNr),$$HeeftUitz^KORTING(KLNr,PRNr,NoSa) Do .Set RtnLoc=$$KLANTPR^KPRIJS(KLNr,PRNr,"") Else If 'KSPak Do .Set RtnLoc=$$PROD^KPRIJS(PRNr,PrijsKL,"",Munt,IsBruto,$S(KsCust:"P",1:IsHandel),NoSa) Else For I=1:1:3 Do .Set RtnLoc($E("LKE",I))=$P(KSPak,D,I)_D_$$PROD^KPRIJS(PRNr,$E("LKE",I),"",Munt,IsBruto,$S(KsCust:"P",1:IsHandel),NoSa) Quit RECALC(PRNr,Kort,NoSa) ; Van een bep. produkt vanaf de kroting de prijsklasse (E,K,L) berekenen. New KSDB,Key Set Key=$O(^KPR(PRNr,"J")) Quit:$E(Key)'="J" "" Set KSDB=$P(^KPR(PRNr,Key),D,10) Set Kort=$J(Kort,0,0) If Kort=0 Quit "L" If Kort>0 Quit "" ; Korting < 0 If Kort=$J(100-(10000/(100-KSDB)),0,0) Quit "E" If Kort=$J(100-(10000/(100-KSDB))/2.5,0,0) Quit "K" Quit "" POPUP(KLNr,PRNr,NoSa) New Txt Do FETCH(.Txt) Quit:'$D(Txt) Set Inp=$$WILD^vhTXTPOP("C;C","KS-staffeling","Txt",,,10) Quit TXTPOP(Id,NoRefr,P1,P2,P3,P4,P5) New I,R Set R="$$^vhTXTPOP(""KS"",Id,$G(NoRefr)" For I=1:1 Quit:'$D(@("P"_I)) Set R=R_","_@("P"_I) Set R=R_")" Quit @R SHOW(KLNr,PRNr,NoSa) New Txt,Pos,MaxLen,Top,Botom,Left,Right,Titel Do FETCH(.Txt) Quit:'$D(Txt) Set Inp=$$WILD^vhTXTPOP("C;C","KS-staffeling","Txt",,-1,0,1) Quit FETCH(Local) New PRec,Qty,Prijs,PrijsKl,GO,Munt Do KSPRIJS^KS(PRNr,KLNr,$G(NoSa),.PRec,1) If $D(PRec)<10 Write *7 Quit Set Local=0 Set Local=Local+1,Local(Local)=$P(^KPR(PRNr,0),D) Set Local=Local+1,Local(Local)="" For PrijsKl="L","K","E" Do .Set Qty=$P(PRec(PrijsKl),D) .Set Prijs=$P(PRec(PrijsKl),D,2) .Set GO=$P(PRec(PrijsKl),D,4) .Set Munt=$P(PRec(PrijsKl),D,3) .Set Local=Local+1,Local(Local)=$$EXTNUM^vhLib.DataTypes(Qty,6,"-.",0)_" : "_$$EXTNUM^vhLib.DataTypes(Prijs,10,"-.",2)_" "_$S(GO="H":"%",1:" ")_Munt Quit BRUTO(KLNr) New MagBruto Set MagBruto='$$IsKSKlant(KLNr) Set:'MagBruto MagBruto=$$ASK^vhWACHTW("MANAGER","","",0) Quit MagBruto ; Controle op aantal voor moederbon, order en offerte CheckMinQty(PRNr,Aantal) New J,R,Ok,IsProd,KleinVP,NormVP,GrootVP,MinimumVP Set Ok=1,IsProd=$$ISPROD(PRNr) Do:IsProd=-1 ; KS indien VP . Set J=$O(^KPR(PRNr,"J")),R=^KPR(PRNr,J),KleinVP=$P(R,"\",14),NormVP=$P(R,"\",15),GrootVP=$P(R,"\",16) . Set MinimumVP=GrootVP Set:NormVP MinimumVP=NormVP Set:KleinVP MinimumVP=KleinVP . Set:Aantal#MinimumVP Ok=0 ; Veelvoud van de kleinste verpakking? Quit Ok