Index: KPRIJS.mac.rou =================================================================== diff -u -r48610 -r49060 --- KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 48610) +++ KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 49060) @@ -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 + New BTWfactor,LijstPr1,VkpEURIncl,VkpPr1,VkpPrIncl,VkpEURAX,LijstEURAX,InclBTW,PriceUnit ; 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 @@ -96,46 +96,79 @@ // VHIP907->MVI: voorlopig laat ik alles invullen in fase 2a en overschrijf ik enkel de waarden die ax teruggeeft If $$IsAX(KLNr,PRNr) { - New SalesPriceService, Result,PriceUnit - Set SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() - #Dim Result as AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC - Set Result = SalesPriceService.GeefPrijs(KLNr, PRNr, $S($G(SimPPL):SimPPL,1:""),.Aantal) - Set VkpEUR = Result.Price - Set LijstEUR = Result.GrossPrice - Set PriceUnit=+Result.PriceUnit - If SalesPriceService.PrijzenInclBTW() - { - Set VkpEUR=+$J(VkpEUR/1.21,0,10) - } - Set VkpPr = VkpEUR - Set LijstPr = LijstEUR - If PriceUnit>1 - { - Set VkpEUR=VkpEUR/PriceUnit - Set LijstEUR=LijstEUR/PriceUnit - + Set CacheMinuten = $ListGet($Get(^AXPrijsCache(KLNr,PRNr,$S($G(SimPPL):SimPPL,1:"*"),$S($G(Aantal):Aantal,1:"*"))),1) + + If (($$GeefMinuten($Horolog)-600) < CacheMinuten) { + Set lb=^AXPrijsCache(KLNr,PRNr,$S($G(SimPPL):SimPPL,1:"*"),$S($G(Aantal):Aantal,1:"*")) + Set VkpEURAX=$LIST(lb,2) + Set LijstEURAX=$LI(lb,3) + Set PriceUnit=$LI(lb,4) + Set InclBTW=$LI(lb,5) + } Else { + Try + { + New SalesPriceService, Result + Set SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #Dim Result as AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + Set Result = SalesPriceService.GeefPrijs(KLNr, PRNr, $S($G(SimPPL):SimPPL,1:""),.Aantal) + Set VkpEURAX = Result.Price + Set LijstEURAX = Result.GrossPrice + Set PriceUnit=+Result.PriceUnit + Set InclBTW=SalesPriceService.PrijzenInclBTW() + Set ^AXPrijsCache(KLNr,PRNr,$S($G(SimPPL):SimPPL,1:"*"),$S($G(Aantal):Aantal,1:"*"))=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW) + } Catch { + Set (VkpEURAX,LijstEURAX)=99999 + Set PriceUnit=1 + Set InclBTW=0 + #dim Exception As TECH.Exceptions.Exception = ##class(TECH.ExceptionHandler).Catch() + do ##class(vhLib.Logger).LogExceptie(Exception) + } } - Set GrOrde=$Case(PriceUnit,100:"H",:"E") - Set GrOrdNum=$Case(GrOrde,"H":100,:1) + + If (VkpEURAX>0)&&(VkpEURAX'=99999) + { + Set VkpEUR=VkpEURAX + Set LijstEUR=LijstEURAX + If InclBTW + { + Set VkpEUR=+$J(VkpEUR/1.21,0,10) + } + Set VkpPr = VkpEUR + Set LijstPr = LijstEUR + 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 { + do ##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 ; 1:prijs,2:munt,3:eenheid,4:lijstprijs,5:korting1,6:korting2,7:codex,8:katprijs,9:pariteit,10:afrondingsregel,11:eenheid(numeriek),12:round,13:aankpr(EUR),14:prijs(EUR),15:lijstprijs(EUR) PrijzenViaAdmin(KLNr) { - Quit $$$MaatwerkKlantenMetWildcardUitz[(";"&KLNr&";") + Quit $$$MaatwerkKlantenMetWildcardUitz[(";"_KLNr_";") } - +GeefMinuten(DatumEnTijd) + Quit $P(DatumEnTijd,".")*24*60+($P(DatumEnTijd,".",2)\60) + +KillAXCache + Kill ^AXPrijsCache + Quit + // Set twee kortingen om van in % (*100) naar ��n korting in % OneKorting(Korting1,Korting2) Quit (1-((1-(Korting1/100))*(1-(Korting2/100))))*100