Index: KPRIJS.mac.rou =================================================================== diff -u -r50958 -r66287 --- KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 50958) +++ KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 66287) @@ -76,7 +76,7 @@ New BTWfactor,LijstPr1,VkpEURIncl,VkpPr1,VkpPrIncl,VkpEURAX,LijstEURAX,InclBTW,PriceUnit,CachePPL ; Opgezet via GETCUST : KlMunt,KlTyp,NetBrutP,PrijsKl,IsKsCust,IsLidVan,%LidVan ; Opgezet via GETPROD : LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork - New LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork,BusinessType,Klant,KlantID, CorFakt,KortRec + New LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork,BusinessType,Klant,KlantID, CorFakt,KortRec,CacheMinuten Set:$G(NoSa)'="S" NoSa="" Set FaMunt=$$FADEF^vhRtn1() Do GETCUST(KLNr,NoSa,PRNr),GETPROD(PRNr,NoSa,$G(SimPPL)) @@ -90,6 +90,7 @@ Set KlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) Set Klant = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefKlant(KlantID) Set BusinessType = Klant.GeefBusinessType() + Do KKORTING, CALC If $$IsAX(KLNr,PRNr) { @@ -115,7 +116,7 @@ Set PriceUnit = +ResultLine.PriceUnit Set InclBTW = Result.InclVAT - Set ^AXPrijsCache(KLNr,PRNr,+CachePPL,$S($G(Aantal):Aantal,1:"*"))=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW) + Set:$$MagInPrijsCache(PRNr) ^AXPrijsCache(KLNr,PRNr,+CachePPL,$S($G(Aantal):Aantal,1:"*"))=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW) } Catch { New Exception @@ -145,16 +146,17 @@ } Set GrOrde=$Case(PriceUnit,100:"H",:"E") Set GrOrdNum=$Case(GrOrde,"H":100,:1) - Set Korting2=0 - If +LijstEUR=0 { - Set Korting1=0 + Set Korting2 = 0 + If (+LijstEUR = 0) { + Set Korting1 = 0 } Else { - Set Korting1=(1-(VkpEUR/LijstEUR))*100 + Set Korting1 = (1 - (VkpEUR / LijstEUR)) * 100 } } Else { - Do:(+VkpEUR>0)||(+VkpEURAX>0) ##class(vhLib.Logger).%New().Warning("Prijsberekening AX Fallback","Klant : '"_KLNr_"' Product : '"_PRNr_"' SimPPL : '"_$G(SimPPL)_"' -> Prijs : "_VkpEURAX_" -> fallback naar cache berekening '"_VkpEUR_"'") + Do:(+VkpEUR>0)||(+VkpEURAX>0)&&'($P(^KPR(PRNr,1),"\",25)) ##class(vhLib.Logger).%New().Warning("Prijsberekening AX Fallback","Klant : '"_KLNr_"' Product : '"_PRNr_"' SimPPL : '"_$G(SimPPL)_"' -> Prijs : "_VkpEURAX_" -> fallback naar cache berekening '"_VkpEUR_"'") } } + Quit $$BUILD ; Build = VkpPr_D_Munt_D_GrOrde_D_LijstPr_D_Korting1_D_Korting2_D_$G(PrijsKl)_D_$G(KortNiv)_D_+$J(1/MuntPar,0,8)_D_GrOrde_1_D_GrOrdNum_D_1_D_AkpEUR_D_VkpEUR_D_LijstEUR @@ -170,6 +172,8 @@ Quit:$P(^KPR(PRNr,1),"\",25)=1 0 ; Niet actief Quit 1 +MagInPrijsCache(PRNr) + Quit 1 ;'$$IsOrgaluxOpMaat^PRODUKT2(PRNr) GeefMinuten(DatumEnTijd) Quit $P(DatumEnTijd,".")*24*60+($P(DatumEnTijd,".",2)\60) @@ -187,7 +191,7 @@ Set IsAX=0 If ($$$CheckAXFase)&&$$ProdViaAdmin(PRNr) { Set IsAX=1 - If $$PrijzenViaAdmin(KLNr) { + If $$PrijzenViaAdmin(KLNr)&&0 { If PRNr,$$$PRGet($$$LeveranciersNr)=$$$LevHalux { Set IsAX=0 } @@ -197,16 +201,19 @@ PRODINCLBTW(PRNr,Land,KlMunt,Korting1,Korting2,NetBrutP,KlTyp,NoSa,SimPPL,KlantGrOrde,CheckKAT,BusinessType) New R + Set R = $$PROD(.PRNr,.Korting1,.Korting2,.KlMunt,.NetBrutP,.KlTyp,.NoSa,.SimPPL,.KlantGrOrde,.CheckKAT,.BusinessType) Set $P(R,"\") = $P(R,"\")*$$GETBTWFACTOR(.Land) Quit R ProdViaCodex(PRNr,Codex) - New KLNr - Set KLNr=$Case(Codex,"L":$$$CKlantL,"R":$$$CKlantR,"S":$$$CKlantS,"B":$$$CKlantB,"G":$$$CKlantG,"P":$$$CKlantP,"C":$$$CKlantCExcl) + New KLNr - Quit:'$D(^KK1(KLNr)) "" - Quit $$KLANTPR(KLNr,PRNr) + Set KLNr=$Case(Codex,"L":$$$CKlantL,"R":$$$CKlantR,"S":$$$CKlantS,"B":$$$CKlantB,"G":$$$CKlantG,"P":$$$CKlantP,"C":$$$CKlantCExcl) + + Quit:'$Data(^KK1(KLNr)) "" + Quit $$KLANTPR(KLNr,PRNr) + PROD(PRNr,Korting1,Korting2,KlMunt,NetBrutP,KlTyp,NoSa,SimPPL,KlantGrOrde,CheckKAT,BusinessType) ; KlTyp 0=Industrie, 1=handel, P=prijslijst @@ -217,8 +224,6 @@ New BTWfactor,LijstPr1,VkpEURIncl,VkpPr1,VkpPrIncl If $$$CheckAXFase&&($G(Korting1)'="")&&("CPLRSBG"[Korting1) Quit $$ProdViaCodex(PRNr,Korting1) - - ; Opgezet via GETPROD : LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork Set:$Get(BusinessType)="" BusinessType = ##class(DOM.VKP.enu.BusinessType).B2B() @@ -308,7 +313,7 @@ Quit R GeefLijstPrijsInAX(PRNr,SimCifPPL,AdminLijstPr) - New CachePPL,VkpEURAX, VkpEUR,LijstEURAX,PriceUnit,IncBTW,KLNr + New CachePPL,VkpEURAX, VkpEUR,LijstEURAX,PriceUnit,IncBTW,KLNr,CacheMinuten Quit:$$ProdViaAdmin(PRNr) AdminLijstPr Set KLNr=$$$CKlantL @@ -334,7 +339,7 @@ Set PriceUnit = +ResultLine.PriceUnit Set InclBTW = Result.InclVAT - Set ^AXPrijsCache(KLNr,PRNr,+CachePPL,"*")=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW,"LP") + Set:$$MagInPrijsCache(PRNr) ^AXPrijsCache(KLNr,PRNr,+CachePPL,"*")=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW,"LP") } Catch { Set (VkpEURAX)=99999 Set PriceUnit=1 @@ -358,7 +363,7 @@ } } Else { Set VkpEUR=AdminLijstPr - Do:(+VkpEUR>0)||(+VkpEURAX>0) ##class(vhLib.Logger).%New().Warning("Prijsberekening AX Fallback","LIJSTPRIJS Klant : '"_KLNr_"' Product : '"_PRNr_"' SimPPL : '"_$G(SimPPL)_"' -> Prijs : "_VkpEURAX_" -> fallback naar cache berekening '"_$G(AdminLijstPr)_"'") + do:(+VkpEUR>0)||(+VkpEURAX>0)&&'($P(^KPR(PRNr,1),"\",25)) ##class(vhLib.Logger).%New().Warning("Prijsberekening AX Fallback","LIJSTPRIJS Klant : '"_KLNr_"' Product : '"_PRNr_"' SimPPL : '"_$G(SimPPL)_"' -> Prijs : "_VkpEURAX_" -> fallback naar cache berekening '"_$G(AdminLijstPr)_"'") } Quit VkpEUR @@ -412,9 +417,14 @@ GetProdBasis Set:$G(NoSa)="" NoSa="N" Set:($G(D)="") D = "\" - Set R=^KPR(PRNr,1),KatPrHan=$P(R,D,18),KatPrInd=$P(R,D,19) - Set R=^KPR(PRNr,2),KatPrKs=$P(R,D,24) - Set R="",J=$O(^KPR(PRNr,"J")) Set:$E(J)="J" R=^KPR(PRNr,J) + Set R = ^KPR(PRNr,1) + Set KatPrHan = $Piece(R, D, 18) + Set KatPrInd = $Piece(R, D, 19) + Set R = ^KPR(PRNr, 2) + Set KatPrKs = $Piece(R, D, 24) + Set R = "" + Set J = $Order(^KPR(PRNr, "J")) + Set:$E(J)="J" R=^KPR(PRNr,J) Set LEVNr=$P(R,D),PrMunt=$P(R,D,17) Set EenhAank=$P(R,D,28),EenhAank=$S("E"[EenhAank:1,EenhAank="H":100,EenhAank="M":1000,1:0) Set PPL=$P(R,D,19),%Korting=$P(R,D,9),%Vork=$P(R,D,27),%DB=$P(R,D,24),%Cif=$P(R,D,21) @@ -433,7 +443,9 @@ Set PPL=PPL/EenhAank If FaMunt'[PrMunt S R=$$MUNT^vhRtn1(PrMunt,,11,NoSa),PPL=PPL*R Set CifPPL=PPL*(100-%Korting)/100*(100+%Cif)/100,CifPPL=$J(CifPPL,1,4) Set:'CifPPL %DB=0 - Set R=CifPPL/(100-%DB/100)*%DB/100,R=$J(R,1,4),LijstPr=CifPPL+R + Set R = CifPPL / (100 - %DB / 100) * %DB / 100 + Set R = $Justify(R,1,4) + Set LijstPr = CifPPL + R Set Vork=CifPPL+R*%Vork/100,Vork=$J(Vork,1,4) Set GrOrde=$$GRORDE^PRODUKT2(PRNr,NoSa) Set:GrOrde="" GrOrde="E" @@ -452,7 +464,7 @@ If $L($G(KlantGrOrde)) Do . Set GrOrde=KlantGrOrde . Set GrOrdNum=$S(GrOrde="M":1000,GrOrde="H":100,1:1) - + If (BusinessType = ##class(DOM.VKP.enu.BusinessType).B2B()) { Set LijstPr=LijstPr*GrOrdNum If NetBrutP Do ; Bruto @@ -465,18 +477,18 @@ Set AkpEUR=+$J(CifPPL,0,4) Set LijstEUR=+$J(LijstPr/GrOrdNum/MuntPar,0,4) Set VkpEUR=+$J(VkpPr/GrOrdNum/MuntPar,0,4) - If $G(%LidVan) S VkpEUR=+$J(VkpEUR*(100-%LidVan/100),0,4) ; De verkoopprijs wordt verlaagd met de commissie vergoeding van de aankoopgroep + If $G(%LidVan) S VkpEUR=+$J(VkpEUR*(100-%LidVan/100),0,4) ; De verkoopprijs wordt verlaagd met de commissie vergoeding van de aankoopgroep } Else { Set LijstEUR = +$J(LijstPr,0,4) // Lijstprijs excl BTW in euro, per eenheid Set LijstPr1=LijstPr*GrOrdNum Set BTWfactor = $$GETBTWFACTOR("BE", PRNr) Set VkpPr1=LijstPr1*(100-Korting1/100)*(100-Korting2/100) // Verkoopprijs excl BTW in euro - Set VkpEURIncl=$$B2CROUND(VkpPr1*BTWfactor) // Verkoopprijs incl BTW in euro + Set VkpEURIncl=$$B2CROUND(VkpPr1*BTWfactor) // Verkoopprijs incl BTW in euro Set VkpEUR=+$J(VkpEURIncl/BTWfactor/GrOrdNum,0,4) // Verkoopprijs excl BTW via terugrekenen van de inclusiefprijs, in euro, per eenheid Set VkpPrIncl=$J(VkpEURIncl*MuntPar,0,2) // Verkoopprijs incl BTW in de gevraagde munt Set VkpPr=VkpPrIncl/BTWfactor // Verkoopprijs excl BTW via terugrekenen van de inclusiefprijs, in de gevraagde munt // Niet afgerond voor maximale precisie bij opnieuw bijtellen an de BTW - Set LijstPr=$J($$ROUND(LijstPr1)*MuntPar,0,2) // Lijstprijs excl BTW volgens bestaande afronding, in de gevraagde munt + Set LijstPr=$J($$ROUND(LijstPr1)*MuntPar,0,2) // Lijstprijs excl BTW volgens bestaande afronding, in de gevraagde munt Set AkpEUR=+$J(CifPPL,0,4) // Aankoopprijs in euro excl BTW, per eenheid Set VkpEURIncl=+$J(VkpEURIncl/GrOrdNum,0,4) // Verkoopprijs incl BTW in euro, per eenheid }