KORTING ;Klant korting ; Normale lijnkorting KORTPC(KLNr,PRNr,NoSa,RefDat,Aantal,LevTerm) New Rec Set Rec=$$GetKorting(KLNr,PRNr,.NoSa,.RefDat,.Aantal,.LevTerm) Quit $LG(Rec,2)_D_$LG(Rec,3)_D_$LG(Rec,6)_D_D_D_$S($LG(Rec,6)="O":"O",1:"") // Bepalen van de korting GetKorting(KLNr,PRNr,NoSa,RefDat,Aantal,LevTerm,Optie) ; Optie : T = Geen TANDEMBOX korting berekening ; Optie : D = Display van optionele kortingen New I,R,Korting,Korting1,Korting2,DTyp,HoofdGroep,Groep,SubGroep,Niveau,PrijsGegRec New GrootVp,OptMin,OptPlus,OptKort,IsKatPr,PrijsKl,KlantInd,KYW,GenPRNr New KatPrijs,Result,OptKortList,HeeftUitz,DispOption,KortRec Do InitKORTPC ; ophalen van HoofdGroep, groep, subgroep, PrijsGegRec en defaulten option variabelen Set PrijsKl=$$PRIJSKL^KLANT(KLNr,PRNr,NoSa) ;Prijsklasse Beslag of Orgalux Set KatPrijs=$$KATPrijs(KLNr,PRNr,NoSa,PrijsGegRec) ; Katprijs zonder uitzonderingen If $L(PrijsKl),"CP"[PrijsKl Set KatPrijs="" ; Geen katprijs indien "C" of "P" klant Set Result="" Set OptKortList=0 ; De verschillende kortingnivo's aflopen totdat een korting gevonden wordt, volgorde is ZEER belangrijk Set:(HeeftUitz) Result=$$GetUitz(KLNr,NoSa,"P",HoofdGroep,Groep,SubGroep,PRNr,RefDat,Aantal,LevTerm,.OptKortList) ; Product Set:('$LL(Result))&&(HeeftUitz) Result=$$GetUitz(KLNr,NoSa,"W",HoofdGroep,Groep,SubGroep,PRNr,RefDat,Aantal,LevTerm,.OptKortList) ; Product via WILDCARDING Set:('$LL(Result))&&(KatPrijs?1A) Result=$LB("K",KatPrijs,"",,,"K") ; KATPrijs Set:('$LL(Result))&&(HeeftUitz) Result=$$GetUitz(KLNr,NoSa,"S",HoofdGroep,Groep,SubGroep,0,RefDat,Aantal,LevTerm,.OptKortList) ; Subgroep Set:('$LL(Result))&&(HeeftUitz) Result=$$GetUitz(KLNr,NoSa,"G",HoofdGroep,Groep,0,0,RefDat,Aantal,LevTerm,.OptKortList) ; Groep Set:('$LL(Result))&&(HeeftUitz) Result=$$GetUitz(KLNr,NoSa,"H",HoofdGroep,0,0,0,RefDat,Aantal,LevTerm,.OptKortList) ; HoofdGroep Set:('$LL(Result)) Result=$LB("K",PrijsKl,"",,,"C") ; Prijsklasse klant If $G(OptKortList),$G(Optie)["D" Do ; Er zijn optionele uitzonderingen . Do FilterOptioneleUitz(Result,.OptKortList) ; alle kleinere uitzonderingen wegfilteren . Quit:'$G(OptKortList) ; ze zijn allemaal weggefilterd . Set ResultOpt=$$DisplayOptioneleUitz(KLNr,PRNr,.OptKortList) . Set:$LL(ResultOpt) Result=ResultOpt,$LI(Result,6)="O" ;geforceerde optionele uitzondering If $LI(Result,2)?1A Do . Set $LI(Result,2)=$$TranslateCodex^KPRIJS(PRNr,$LI(Result,2),NoSa,$P(PrijsGegRec,D,14)) . Set $LI(Result,3)="" ;Result : ; 1 TypeKorting (K=Korting,E=Extra korting,P=Vaste prijs) ; 2 Korting1 (percentage*100) ; 3 Korting2 (percentage*100) ; 4 Extra korting (percentage * 100) ; 5 Vaste prijs ; 6 Kortingsnivo (K=KATprijs,P=Product,W=Product wildcarding,H=Hoofdgroep,G=Groep,S=SubGroep,C=Codexklant,O=geforceerde optionele uitzondering ; 7 KlantGrootteOrde Quit Result // Ophalen van de geldige uitzonderingen en die maximale korting behouden, // de niet geledige uitzonderingen worden in de OptKortList gestoken voor later verwerking GetUitz(KLNr,NoSa,Nivo2,HoofdGroep,Groep,SubGroep,PRNr,RefDat,Aantal,LevTerm,OptKortList) New Korting,Geldig,MaxKorting,MaxRec,UitzRec,Product,VolgNr,Ongeldig Set MaxKorting=-999 Set (MaxRec,VolgNr)="" Set Product=$S(Nivo2="W":0,1:PRNr) ; Wildcarding is ingesteld op subgroep nivo For Set VolgNr=$O(^KLPUTZ(NoSa,KLNr,HoofdGroep,Groep,SubGroep,Product,VolgNr)) Quit:VolgNr="" Do . Set UitzRec=^KLPUTZ(NoSa,KLNr,HoofdGroep,Groep,SubGroep,Product,VolgNr) . If Nivo2="W",'$L($P(UitzRec,D,15)),'$L($P(UitzRec,D,16)) Quit ; wildcarding of callback maar deze zijn niet ingevuld . Set Korting=$$OneKorting^KPRIJS($P(UitzRec,D,1),$P(UitzRec,D,2)) . Set Ongeldig=$$OngeldigUitz(KLNr,PRNr,UitzRec,RefDat,Aantal,LevTerm) . If Ongeldig="",MaxKortingAantal)||(Aantal="") Set Ongeldig=Ongeldig_$S(Aantal="":"a",1:"A") ; Probleem met aantal If $P(UitzRec,D,6),($P(UitzRec,D,6)>LevTerm)||(LevTerm="") Set Ongeldig=Ongeldig_$S(LevTerm="":"t",1:"T") ; Probleem met leveringstermijn If $P(UitzRec,D,7),($P(UitzRec,D,7)>RefDat)||(RefDat="") Set Ongeldig=Ongeldig_$S(RefDat="":"s",1:"S") ; Probleem met startdatum If $P(UitzRec,D,8),($P(UitzRec,D,8)