Index: KPRIJS.mac.rou =================================================================== diff -u -r55343 -r62525 --- KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 55343) +++ KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 62525) @@ -73,7 +73,7 @@ New Korting1,Korting2,CheckKAT,KlantGrOrde KLANTPR3 New R,KatProd,IsKatPr,FaMunt,Munt,MuntPar,VkpPr,KortNiv,AkpEUR,VkpEUR,LijstEUR,KlMunt,KlTyp,NetBrutP,PrijsKl,IsKsCust,IsLidVan,%LidVan,LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork - New BTWfactor,LijstPr1,VkpEURIncl,VkpPr1,VkpPrIncl,VkpEURAX,LijstEURAX,InclBTW,PriceUnit, CachePPL, CacheMinuten + 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 @@ -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) { @@ -104,52 +105,58 @@ Set InclBTW=$LI(lb,5) } Else { Try { - New SalesPriceService, Result + New SalesPriceService, Result, ResultLine #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() - #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $S($G(SimPPL):SimPPL,1:""),.Aantal) + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $select($Get(SimPPL):SimPPL, 1:""), .Aantal) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) - Set VkpEURAX = Result.Price - Set LijstEURAX = Result.GrossPrice - Set PriceUnit=+Result.PriceUnit - Set InclBTW=SalesPriceService.PrijzenInclBTW() + Set VkpEURAX = ResultLine.Price + Set LijstEURAX = ResultLine.GrossPrice + Set PriceUnit = +ResultLine.PriceUnit + Set InclBTW = Result.InclVAT + Set:$$MagInPrijsCache(PRNr) ^AXPrijsCache(KLNr,PRNr,+CachePPL,$S($G(Aantal):Aantal,1:"*"))=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW) } Catch { New Exception Set (VkpEURAX,LijstEURAX)=99999 Set PriceUnit=1 - Set InclBTW=0 + Set InclBTW = $$$False + #dim Exception As TECH.Exceptions.Exception = ##class(TECH.ExceptionHandler).Catch() - do ##class(vhLib.Logger).LogExceptie(Exception) + Do ##class(vhLib.Logger).LogExceptie(Exception) } } - If (VkpEURAX>0)&&(VkpEURAX'=99999) { + If (VkpEURAX>0)&&(VkpEURAX'=99999) + { Set VkpEUR=VkpEURAX Set LijstEUR=LijstEURAX - If (InclBTW) { + If InclBTW + { Set VkpEUR=+$J(VkpEUR/1.21,0,10) } Set VkpPr = VkpEUR Set LijstPr = LijstEUR - If (PriceUnit>1) { + If PriceUnit>1 + { Set VkpEUR=VkpEUR/PriceUnit Set LijstEUR=LijstEUR/PriceUnit } Set GrOrde=$Case(PriceUnit,100:"H",:"E") Set GrOrdNum=$Case(GrOrde,"H":100,:1) - - Set Korting2=0 - If +LijstEUR=0 { - Set Korting1=0 - } else { - Set Korting1=(1-(VkpEUR/LijstEUR))*100 + Set Korting2 = 0 + If (+LijstEUR = 0) { + Set Korting1 = 0 + } Else { + Set Korting1 = (1 - (VkpEUR / LijstEUR)) * 100 } - } else { + } Else { 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 @@ -194,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 @@ -214,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() @@ -305,51 +313,55 @@ Quit R GeefLijstPrijsInAX(PRNr,SimCifPPL,AdminLijstPr) - New Result,CachePPL,VkpEURAX, VkpEUR,LijstEURAX,PriceUnit,IncBTW,KLNr - #Dim Result as AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + New CachePPL,VkpEURAX, VkpEUR,LijstEURAX,PriceUnit,IncBTW,KLNr + Quit:$$ProdViaAdmin(PRNr) AdminLijstPr Set KLNr=$$$CKlantL Set CachePPL=$S($G(SimPPL):SimPPL,1:$$CifPPL(PRNr)) Set CacheMinuten = $ListGet($Get(^AXPrijsCache(KLNr,PRNr,+CachePPL,"*")),1) + If (($$GeefMinuten($Horolog)-600) < CacheMinuten) { Set lb=^AXPrijsCache(KLNr,PRNr,+CachePPL,"*") Set VkpEURAX=$LI(lb,2) Set PriceUnit=$LI(lb,4) Set InclBTW=$LI(lb,5) } Else { Try { - New SalesPriceService, Result + New SalesPriceService, Result, ResultLine #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() - #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $S($G(SimPPL):SimPPL,1:""),.Aantal) + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $select($get(SimPPL):SimPPL,1:""),.Aantal) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) - Set VkpEURAX = Result.Price - Set LijstEURAX = Result.GrossPrice - Set PriceUnit=+Result.PriceUnit - Set InclBTW=SalesPriceService.PrijzenInclBTW() + Set VkpEURAX = ResultLine.Price + Set LijstEURAX = ResultLine.GrossPrice + Set PriceUnit = +ResultLine.PriceUnit + Set InclBTW = Result.InclVAT + Set:$$MagInPrijsCache(PRNr) ^AXPrijsCache(KLNr,PRNr,+CachePPL,"*")=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW,"LP") } Catch { - New Exception - Set (VkpEURAX)=99999 Set PriceUnit=1 - Set InclBTW=0 + Set InclBTW = $$$False + #dim Exception As TECH.Exceptions.Exception = ##class(TECH.ExceptionHandler).Catch() - do ##class(vhLib.Logger).LogExceptie(Exception) + Do ##class(vhLib.Logger).LogExceptie(Exception) } } - If (VkpEURAX>0)&&(VkpEURAX'=99999) { + If (VkpEURAX>0)&&(VkpEURAX'=99999) + { Set VkpEUR=VkpEURAX - If (InclBTW) { + If InclBTW + { Set VkpEUR=+$J(VkpEUR/1.21,0,10) } - If (PriceUnit>1) { + If PriceUnit>1 + { Set VkpEUR=VkpEUR/PriceUnit } - - } else { + } Else { Set VkpEUR=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)_"'") } @@ -405,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) @@ -426,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" @@ -445,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 @@ -458,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 } @@ -643,3 +662,4 @@ . Set J=$O(^KPR(PRNr,"J")),R=^(J),PPL=$P(R,D,19) . Set:+PPL=+SchaduwPPL SchaduwPPL="" Quit SchaduwPPL +