Index: KPRIJSAX.mac.rou =================================================================== diff -u -r50299 -r50904 --- KPRIJSAX.mac.rou (.../KPRIJSAX.mac.rou) (revision 50299) +++ KPRIJSAX.mac.rou (.../KPRIJSAX.mac.rou) (revision 50904) @@ -90,11 +90,9 @@ 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 - // VHIP907: Verkoopprijzen - // VHIP907->MVI: voorlopig laat ik alles invullen in fase 2a en overschrijf ik enkel de waarden die ax teruggeeft - If $$IsAX(KLNr,PRNr) { Kill ^AXPrijsCache Set CacheMinuten=$LG($G(^AXPrijsCache(KLNr,PRNr,$S($G(SimPPL):SimPPL,1:"*"),$S($G(Aantal):Aantal,1:"*"))),1) @@ -106,19 +104,18 @@ Set PriceUnit=$LI(lb,4) Set InclBTW=$LI(lb,5) } Else { - Try - { - New SalesPriceService, Result,PriceUnit,InclBTW - 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() + Try { + New SalesPriceService, Result, ResultLine - Set it=SalesPriceService.GeefRequestIterator() - + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #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 = ResultLine.Price + Set LijstEURAX = ResultLine.GrossPrice + Set PriceUnit = +ResultLine.PriceUnit + Set InclBTW = Result.InclVAT + Set ^AXPrijsCache(KLNr,PRNr,$S($G(SimPPL):SimPPL,1:"*"),$S($G(Aantal):Aantal,1:"*"))=$LB($$GeefMinuten($H),VkpEUR,LijstEUR,PriceUnit,InclBTW) } Catch { Set (VkpEURAX,LijstEURAX)=99999 @@ -149,10 +146,10 @@ Set Korting2=0 If +LijstEUR=0 { Set Korting1=0 - } else { + } Else { Set Korting1=(1-(VkpEUR/LijstEUR))*100 } - } + } Else { Write "**** Prijs is NUL ****" Index: AX/Uitgaand/VKP/PrijsVerschilNrUitz/impl/PrijsUitzBuildCache.cls.xml =================================================================== diff -u -r48131 -r50904 --- AX/Uitgaand/VKP/PrijsVerschilNrUitz/impl/PrijsUitzBuildCache.cls.xml (.../PrijsUitzBuildCache.cls.xml) (revision 48131) +++ AX/Uitgaand/VKP/PrijsVerschilNrUitz/impl/PrijsUitzBuildCache.cls.xml (.../PrijsUitzBuildCache.cls.xml) (revision 50904) @@ -1,65 +1,17 @@ -BL.Derde.LevSpecifiek,Prod.Product,vhLib.Macro -TECH.RegisteredObject,TECH.Iterator +BL.Derde.LevSpecifiek,Prod.Product +TECH.RegisteredObject - -%Integer -1 - - - -PrijsUitzDixfConverter -1 - - - + TECH.Iterator -1 - -TECH.Query.QueryAPI -1 - - - -TECH.ResultSet -1 - - - -%String -1 - - - -%String -1 - - - -TECH.Iterator - - - -DOM.VKP.VanHoeckeKlant - - - -%String - - %String - -%String -1 - - %String @@ -82,110 +34,166 @@ AXimpl.Admin.VKP.SalesPriceService +1 + +AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory +1 + + + +AXimpl.MessageIdFormatter +1 + + %Status -1 %Status -1 ",TotaalAantalVerschillen,! + + Write "Tijd/Aantal overall vr build cache: ", $zhorolog - StartTijdstip, " / ", TotaalAantalAanvragen, " -> ", TotaalAantalVerschillen, ! ]]> +KlantNummer:%String +1 0) { + Do ..VoerUitPrijsCalculatieInAX(KlantNummer, ProductDataLijst) + Do ..VergelijkPrijzen(KlantNummer, ProductDataLijst) } - Write ..KLNr,*9,..AantalAanvragen," -> ",..AantalVerschillen,*9,$J(..OphalenTijd,0,1) - Write " / ", $J(..PrijsAXTijd,0,1)," / ",$J(..PrijsAdminTijd,0,1),! + + Write KlantNummer, * 9, ..AantalAanvragen, " -> ", ..AantalVerschillen, * 9, $justify(..OphalenTijd, 0, 1) + Write " / ", $justify(..PrijsAXTijd, 0, 1), " / ", $justify(..PrijsAdminTijd, 0, 1), ! ]]> - + +KlantNummer:%String +1 +%ListOfDataTypes +KlantNummer:%String,ProductDataLijst:%ListOfDataTypes +1 + +ProductDataLijst:%ListOfDataTypes,MessageId:%String +1 +%String + + + +KlantNummer:%String,ProductDataLijst:%ListOfDataTypes +1 Index: KPRIJS.mac.rou =================================================================== diff -u -r50831 -r50904 --- KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 50831) +++ KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 50904) @@ -103,23 +103,26 @@ Set PriceUnit=$LI(lb,4) Set InclBTW=$LI(lb,5) } Else { - Try - { + 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() + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #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 = ResultLine.Price + Set LijstEURAX = ResultLine.GrossPrice + 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) } Catch { 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) } } @@ -140,14 +143,13 @@ } Set GrOrde=$Case(PriceUnit,100:"H",:"E") Set GrOrdNum=$Case(GrOrde,"H":100,:1) - Set Korting2=0 If +LijstEUR=0 { Set Korting1=0 - } else { + } Else { Set Korting1=(1-(VkpEUR/LijstEUR))*100 } - } else { + } 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_"'") } } @@ -304,36 +306,40 @@ 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 - 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() + Try { + New SalesPriceService, Result, ResultLine + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #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 = ResultLine.Price + Set LijstEURAX = ResultLine.GrossPrice + Set PriceUnit = +ResultLine.PriceUnit + Set InclBTW = Result.InclVAT + Set ^AXPrijsCache(KLNr,PRNr,+CachePPL,"*")=$LB($$GeefMinuten($H),VkpEURAX,LijstEURAX,PriceUnit,InclBTW,"LP") } Catch { 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) } } @@ -348,10 +354,9 @@ { Set VkpEUR=VkpEUR/PriceUnit } - - } else { + } 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) ##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 @@ -643,3 +648,4 @@ . Set J=$O(^KPR(PRNr,"J")),R=^(J),PPL=$P(R,D,19) . Set:+PPL=+SchaduwPPL SchaduwPPL="" Quit SchaduwPPL + Index: AXimpl/Admin/VKP/SalesPriceService.cls.xml =================================================================== diff -u -r50886 -r50904 --- AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50886) +++ AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50904) @@ -2,23 +2,15 @@ Voor 1 product: -
Set Result = SalesPriceService.GeefPrice(KLNr, PRNr, optionele CifPPL) -
Voor meerdere producten via iterator: -
Do SalesPriceService.Initialisatie(KLNr) -
Do SalesPriceService.VoegToe(PRNr1, optionele CifPPL) -
Do SalesPriceService.VoegToe(PRNr2, optionele CifPPL) -
Do SalesPriceService.VoerUit() -
Set iterator=SalesPriceService.GeefResultaatIterator -
-
Voor meerdere producten via het onthouden van een reference: -
Do SalesPriceService.Initialisatie(KLNr) -
Set Reference1=SalesPriceService.VoegToe(PRNr1, optionele CifPPL) -
Set Reference2=SalesPriceService.VoegToe(PRNr2, optionele CifPPL) -
Do SalesPriceService.VoerUit() -
Do SalesPriceService.GeefResultaat(Reference1) -
Do SalesPriceService.GeefResultaat(Reference2)]]>
+SalesPrice voor één product: +
Set Result = SalesPriceService.GeefPrijs(KlantNummer, ProductNummer, CifPpl (optioneel), Aantal (optioneel), TransDate (optioneel)) +
+SalesPrice voor meerdere producten: +
Set ProductDataFactory = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory).%New() +
Set ProductDataLijst = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst).%New() +
Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(ProductNummer, CifPpl (optioneel)) +
Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(ProductNummer, CifPpl (optioneel)) +
Set Result = SalesPriceService.GeefPrijsVoorProducten(KlantNummer, ProductDataLijst)]]> Prod.Product,BL.Derde.LevSpecifiek TECH.Mockable @@ -37,29 +29,13 @@ 1
- -AX.Uitgaand.PM.impl.Convertor.Sopr.ProductConvertor + +AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler 1 - -AXif.Dynamics.SalesPriceOut.MessageParts.ADUSalesPriceHeaderInputDC -1 - - - -AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC -1 - - - -KlantNummer:%String,ProductNummer:%String,PrijsRec:%String - - - -SalesPriceService:AXimpl.Dynamics.SalesPriceOut.SalesPriceService="",MessageManager:AXimpl.MessageManager="",KlantIdConverter:AXimpl.Utils.KlantIdConverter="" +SalesPriceService:AXimpl.Dynamics.SalesPriceOut.SalesPriceService="",MessageManager:AXimpl.MessageManager="",KlantIdConverter:AXimpl.Utils.KlantIdConverter="",AxItemIdBepaler:AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler="" 1 1 %Status @@ -70,119 +46,98 @@ Set ..MessageManager = $$$Inject(MessageManager, ##class(AXimpl.MessageManager).%New()) Set ..KlantIdConverter = $$$Inject(KlantIdConverter, ##class(AXimpl.Utils.KlantIdConverter).%New()) - Set ..SoprConvertor = ##class(AX.Uitgaand.PM.impl.Convertor.Sopr.ProductConvertor).%New() + Set ..AxItemIdBepaler = $$$Inject(AxItemIdBepaler, ##class(AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler).%New()) Quit $$$OK ]]> - -KlantNummer:%String + +KlantNummer:%String,ProductDataLijst:%ListOfDataTypes +AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - -ProductNummer:%String,CifPPL:%String="",Aantal:%String=1,TransDate:%Date -%String + +KlantNummer:%String,ProductNummer:%String,CifPpl:%String,Aantal:%String=1,TransDate:%Date="" +AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - -Reference:%String -AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + +KlantNummer:%String,Lines:%ListOfDataTypes +1 +AXif.Dynamics.SalesPriceOut.MessageParts.ADUSalesPriceHeaderInputDC - - - - - - - - - -AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - - - - -KlantNummer:%String,ProductNummer:%String,CifPPL:%String,Aantal:%String,TransDate:%Date -AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - - - - -PRNr:%String + +ProductNummer:%String,CifPpl:%String,Aantal:%String=1,TransDate:%Date="" 1 -%String - - - wegwerken]]> -KLNr:%String -%String - -
Index: PVAX.mac.rou =================================================================== diff -u -r50299 -r50904 --- PVAX.mac.rou (.../PVAX.mac.rou) (revision 50299) +++ PVAX.mac.rou (.../PVAX.mac.rou) (revision 50904) @@ -52,22 +52,24 @@ PrijsDtl(KLNr,PRNr,SimPPL,Aantal) Set Tijd=$zh Write:'DiffOnly !,PRNr," ",$P(^KPR(PRNr,2),"\",25)," ",$P(^KPR(PRNr,0),"\"),! + If Detail - { - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - s x =$$$ProductGet(PRNr, $$$CifPPLEUR) - Set Result=SalesPriceService.GeefPrijs(KLNr,PRNr,$G(SimPPL),$G(Aantal)) - Set it=SalesPriceService.GeefRequestIterator() + { + New SalesPriceService, Result, ResultLine + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $get(SimPPL), $get(Aantal)) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) - d DumpObject^%apiOBJ(it.Next()) - d DumpObject^%apiOBJ(Result) + Do DumpObject^%apiOBJ(ResultLine) + Do DumpObject^%apiOBJ(Result) } + Set:$G(Aantal)'>0 PrijsRec=$$KLANTPR^KPRIJSADMIN(KLNr,PRNr,,.SimPPL) Set:$G(Aantal)>0 PrijsRec=$$KlantPrijs^KPRIJSADMIN(KLNr,PRNr,,,Aantal) Set:$G(Aantal)'>0 PrijsRecAX=$$KLANTPR^KPRIJSAX(KLNr,PRNr,,.SimPPL) Set:$G(Aantal)>0 PrijsRecAX=$$KlantPrijs^KPRIJSAX(KLNr,PRNr,,,Aantal) - ;Set:$G(Aantal)'>0 PrijsRecAX2=$$KLANTPR^KPRIJSAX(KLNr,PRNr,,.SimPPL) - ;Set:$G(Aantal)>0 PrijsRecAX2=$$KlantPrijs^KPRIJSAX(KLNr,PRNr,,,Aantal) + If '$G(DiffOnly)&&(KLNr=1614) ; incl BTW { Write "Admin prijs incl BTW: ",$J($P(PrijsRec,"\")*1.21,0,2),! @@ -148,16 +150,19 @@ Quit -PrijsOphalen(KLNr,PRNr,CifPPL,Aantal) - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - s x =$$$ProductGet(PRNr, $$$CifPPLEUR) +PrijsOphalen(KLNr,PRNr,CifPPL,Aantal) Write !,KLNr," ",$P(^KKL(^KK1(KLNr),0),"\",2),! Write PRNr," ",$P(^KPR(PRNr,2),"\",25)," ",$P(^KPR(PRNr,0),"\"),! - Set Result=SalesPriceService.GeefPrijs(KLNr,PRNr,.CifPPL,.Aantal) - Set it=SalesPriceService.GeefRequestIterator() + + New SalesPriceService, Result, ResultLine + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, CifPPL, Aantal) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) + + ;Do DumpObject^%apiOBJ(Result.Lines.GetAt(1)) + ;Do DumpObject^%apiOBJ(Result) - ;d DumpObject^%apiOBJ(it.Next()) - ;d DumpObject^%apiOBJ(Result) Set:'$G(Aantal) PrijsRec=$$KLANTPR^KPRIJSADMIN(KLNr,PRNr,,.CifPPL) Set:$G(Aantal) PrijsRec=$$KlantPrijs^KPRIJSADMIN(KLNr,PRNr,,,Aantal) Write !,"Admin prijs: ",$P(PrijsRec,"\")," lijstprijs : ",$P(PrijsRec,"\",4),! @@ -167,7 +172,7 @@ Write !,"Admin: ",PrijsRec,! Write "AX : ",PrijsRecAX,! - q + Quit All Set DiffOnly=0 @@ -188,10 +193,12 @@ Do Klant(11409,DiffOnly) ; Do Klant(13353,DiffOnly) ; Do Klant(13604,DiffOnly) ; - Q + + Quit + Klant(KLNr,DiffOnly) Set TijdStipStartLog=$zH - s DiffOnly=0 + Set DiffOnly=0 Set Dev=$$OPEN^vhDEV("e:\AX","PrijsVGL AX "_KLNr_" - "_$TR($ZDT($H,8),":")_".txt","W") Use Dev @@ -229,79 +236,99 @@ } Do CLOSE^vhDEV(Dev) Write "ALL=",$ZH-TijdStipStartAll,! - q + + Quit KlantCheck(KLNr,DiffOnly) - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - Do SalesPriceService.Initialisatie(KLNr) - Kill CacheId - Kill CacheCif + New ProductDataFactory, ProductDataLijst, SalesPriceService + + #dim ProductDataFactory As AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory).%New() + #dim ProductDataLijst As AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst).%New() + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + Set PRNr=$O(^KSTKL(KLNr,0)) - Set Count=0,CountAll=0 - While PRNr + Set CountAll=0 + + While (PRNr) { - If $D(^KPR(PRNr)) && ($O(^KSTKL(KLNr,PRNr,"2016.07 "))'="") && ('$D(^KPR(PRNr,"J"_$$$LevHalux))) && ($$$PRGet($$$GenProduct)="") && ($$$PRGet($$$NONAktief)'=1) && '$$IsOrgaluxOpMaat^PRODUKT2(PRNr) { If 1||($P($$KLANTPR^KPRIJSADMIN(KLNr,PRNr),"\",8)'="K") ; GEEN KAT omdat de klantgrp op AX klant nog niet is ingevuld { - Set MessageId=SalesPriceService.VoegToeProduct(PRNr) - Set Count=Count+1 + Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(PRNr)) + Set CountAll=CountAll+1 - Set CacheId(MessageId)=PRNr - If Count=100 { - Do Compare(KLNr,SalesPriceService) + + If (ProductDataLijst.Count() = 100) { + Do Compare(KLNr, SalesPriceService, ProductDataLijst) Use 0 - Write KLNr," ",Count," ",CountAll," ",$ZH-TijdStipStartLog,! + Write KLNr, " ", ProductDataLijst.Count(), " ", CountAll, " ", $zhorolog - TijdStipStartLog, ! Use Dev - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - Do SalesPriceService.Initialisatie(KLNr) - Set Count=0 + Set ProductDataLijst = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst).%New() Set TijdStipStartLog=$zh - Kill CacheId } } } - Set PRNr=$O(^KSTKL(KLNr,PRNr)) + Set PRNr= $O(^KSTKL(KLNr,PRNr)) } - Do:Count Compare(KLNr,SalesPriceService) + Do:(ProductDataLijst.Count()) Compare(KLNr, SalesPriceService, ProductDataLijst) + Quit CountAll -Compare(KLNr,SalesPriceService) - Do SalesPriceService.VoerUit() - Set it=SalesPriceService.GeefResultaatIterator() - While it.HasNext() - { - - Set Result=it.Next() - Set MessageId="{"_$zcvt(Result.MessageId,"U")_"}" - Set PRNr=$G(CacheId(MessageId)) - Set PrijsRec=$$KLANTPR^KPRIJSADMIN(KLNr,PRNr) - Set:SalesPriceService.PrijzenInclBTW() $P(PrijsRec,"\",1)=$J($P(PrijsRec,"\",1)*1.21,0,2) - Set Diff="" - Set:'$L(Result.ErrorTxt) Diff=$$$ExcelNum((Result.Price/Result.PriceUnit)-($P(PrijsRec,"\",1)/$P(PrijsRec,"\",11))) - If '$G(DiffOnly)||((Diff>0.01)||(Diff<-0.01))||$L(Result.ErrorTxt) - { - write Result.MessageId,*9 - Write KLNr,*9,$P(^KKL(^KK1(KLNr),0),"\",2),*9 - Write PRNr,*9,Result.ItemId,*9,$$$PRGet($$$KortTekst) - Write *9,$P(PrijsRec,"\",7),*9,$P(PrijsRec,"\",8) - Write *9,SalesPriceService.PrijzenInclBTW(),*9,$$$ExcelNum(Result.Price),*9,Result.PriceUnit - Write *9,$$$ExcelNum($P(PrijsRec,"\",1)),*9,$P(PrijsRec,"\",11) - Write *9,Diff - Write *9,Result.ErrorTxt - Write *9,$$$PRGet($$$SubGroep) - Write ! - } +Compare(KLNr, SalesPriceService, ProductDataLijst) + New Result, ResultLine, ResultLineIterator, MessageId, MessageIdFormatter, ProductNummer + + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijsVoorProducten(KLNr, ProductDataLijst) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + #dim ResultLineIterator As TECH.Iterator = ##class(TECH.ListIterator).%New(Result.Lines) + #dim MessageId As %String + #dim MessageIdFormatter As AXimpl.MessageIdFormatter = ##class(AXimpl.MessageIdFormatter).%New() + #dim ProductNummer As %String + + While (ResultLineIterator.HasNext()) { + Set ResultLine = ResultLineIterator.Next() + Set MessageId = MessageIdFormatter.Format(ResultLine.MessageId) + Set ProductNummer = ProductDataLijst.FindByMessageId(MessageId) + Set PrijsRec = $$KLANTPR^KPRIJSADMIN(KLNr, ProductNummer) + + If (Result.InclVAT) { + Set $piece(PrijsRec, "\", 1) = $justify($piece(PrijsRec, "\", 1) * 1.21, 0, 2) } + + Set Diff = "" + + If $$$Not($length(ResultLine.ErrorTxt)) { + Set Diff = $$$ExcelNum((ResultLine.Price / ResultLine.PriceUnit) - ($piece(PrijsRec, "\", 1) / $piece(PrijsRec, "\", 11))) + } + + If ($$$Not($get(DiffOnly)) || ((Diff > 0.01) || (Diff < -0.01)) || $length(ResultLine.ErrorTxt)) { + Write ResultLine.MessageId, *9 + Write KLNr, *9, $piece(^KKL(^KK1(KLNr), 0), "\", 2), *9 + Write ProductNummer, *9, ResultLine.ItemId, *9, $$$PRGet($$$KortTekst) + Write *9, $piece(PrijsRec, "\", 7), *9, $piece(PrijsRec, "\", 8) + Write *9, Result.InclVAT, *9, $$$ExcelNum(ResultLine.Price), *9, ResultLine.PriceUnit + Write *9, $$$ExcelNum($piece(PrijsRec, "\", 1)), *9, $piece(PrijsRec, "\", 11) + Write *9, Diff + Write *9, ResultLine.ErrorTxt + Write *9, $$$PRGet($$$SubGroep) + Write ! + } + } + Quit KlantSingle(KLNr) Set TijdStipStartLog=$zH Set PRNr=$O(^KSTKL(KLNr,0)) Set Count=0 - While PRNr + + New SalesPriceService, Result + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC + + While (PRNr) { If ($O(^KSTKL(KLNr,PRNr,"2016.07 "))'="") && ('$D(^KPR(PRNr,"J"_$$$LevHalux))) && ($$$PRGet($$$GenProduct)="") && ($$$PRGet($$$NONAktief)'=1) && '$$IsOrgaluxOpMaat^PRODUKT2(PRNr) { @@ -310,30 +337,37 @@ } Else { Set CifPPL="" } - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - Do SalesPriceService.Initialisatie(KLNr) - Set MessageId=SalesPriceService.VoegToeProduct(PRNr,CifPPL) - Do SalesPriceService.VoerUit() - Set it=SalesPriceService.GeefResultaatIterator() + + Set Result = SalesPriceService.GeefPrijs(KLNr, PRNr, CifPPL) Set Count=Count+1 } Set PRNr=$O(^KSTKL(KLNr,PRNr)) } - Write KLNr," #Prod:",Count," Ophalen:",$ZH-TijdStipStartLog,! + + Write KLNr, " #Prod:", Count, " Ophalen:", $zhorolog - TijdStipStartLog, ! + Quit + Multi - Set SalesPriceService=##class(AXimpl.Admin.VKP.SalesPriceService).%New() - Do SalesPriceService.Initialisatie(4810) - Do SalesPriceService.VoegToeProduct(3551) - Do SalesPriceService.VoegToeProduct(685017) - Do SalesPriceService.VoegToeProduct(675436,100) - Do SalesPriceService.VoerUit() - Set it=SalesPriceService.GeefResultaatIterator() - While it.HasNext() - { - Set Result=it.Next() - d DumpObject^%apiOBJ(Result) + New ProductDataFactory, ProductDataLijst, SalesPriceService, Result, ResultLine, ResultLineIterator + + #dim ProductDataFactory As AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataFactory).%New() + #dim ProductDataLijst As AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst = ##class(AXimpl.Admin.VKP.SalesPriceService.ProductDataLijst).%New() + + Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(3551)) + Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(685017)) + Do ProductDataLijst.Insert(ProductDataFactory.MaakProductData(675436, 100)) + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(4810, ProductDataLijst) + #dim ResultLineIterator As TECH.Iterator = ##class(TECH.ListIterator).%New(Result.Lines) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + + While (ResultLineIterator.HasNext()) { + Set ResultLine = ResultLineIterator.Next() + Do DumpObject^%apiOBJ(ResultLine) } + Quit KLANTPR Set PRNr=3551 Index: vhTest/Mock/AXimpl/Admin/VKP/SalesPriceService.cls.xml =================================================================== diff -u -r50699 -r50904 --- vhTest/Mock/AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50699) +++ vhTest/Mock/AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50904) @@ -9,58 +9,16 @@ right -KlantNummer:%String,ProductNummer:%String,CifPPL:%String,Aantal:%String,TransDate:%Date +KlantNummer:%String,ProductNummer:%String,CifPpl:%String,Aantal:%String=1,TransDate:%Date="" AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - - - - - - -Reference:%String -AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC - - - - - - - - -KlantNummer:%String - - - - -KlantNummer:%String,ProductNummer:%String,PrijsRec:%String - - - - -KLNr:%String -%String - - - - -ProductNummer:%String,CifPPL:%String="",Aantal:%String=1,TransDate:%Date -%String - - - - + +KlantNummer:%String,ProductDataLijst:%ListOfDataTypes AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC - Index: vhTest/Fake/AXimpl/Admin/VKP/SalesPriceService.cls.xml =================================================================== diff -u -r50718 -r50904 --- vhTest/Fake/AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50718) +++ vhTest/Fake/AXimpl/Admin/VKP/SalesPriceService.cls.xml (.../SalesPriceService.cls.xml) (revision 50904) @@ -14,6 +14,20 @@ ]]> + +KlantNummer:%String,ProductNummer:%String,CifPPL:%String,Aantal:%String,TransDate:%Date +AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC + + + + +KlantNummer:%String,ProductData:%ListOfDataTypes +AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC + + + Index: vhUnitTest/AXimpl/Admin/VKP/SalesPriceService/Test.cls.xml =================================================================== diff -u -r49398 -r50904 --- vhUnitTest/AXimpl/Admin/VKP/SalesPriceService/Test.cls.xml (.../Test.cls.xml) (revision 49398) +++ vhUnitTest/AXimpl/Admin/VKP/SalesPriceService/Test.cls.xml (.../Test.cls.xml) (revision 50904) @@ -9,17 +9,24 @@ #dim RandomProductNummer As %String = "RandomProductNummer" #dim RandomPrice As %String = "RandomPrice" - #dim AxItemIdBepalerMock As vhTest.Mock.AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler = ##class(vhTest.Mock.AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler).%New() - Do AxItemIdBepalerMock.IndienMethodCall("GeefAxItemId", RandomProductNummer).DanReturn("AxProductNummer") - #dim SalesPriceServiceMock As vhTest.Mock.AXimpl.Dynamics.SalesPriceOut.SalesPriceService = ##class(vhTest.Mock.AXimpl.Dynamics.SalesPriceOut.SalesPriceService).%New() - Do SalesPriceServiceMock.IndienMethodCall("getPrice", $$$ElkeWaarde).DanReturn(..GeefSalesPriceResult(RandomPrice)) + Do SalesPriceServiceMock.VerwachtMethodCall("getPrice", $$$ElkeWaarde).DanReturn(..GeefSalesPriceResult(RandomPrice)) - #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New(SalesPriceServiceMock, "", AxItemIdBepalerMock) + #dim KlantIdConverterMock As vhTest.Mock.AXimpl.Utils.KlantIdConverter = ##class(vhTest.Mock.AXimpl.Utils.KlantIdConverter).%New() + Do KlantIdConverterMock.VerwachtMethodCall("ConvertToAx", RandomKlantNummer, ##class(DOM.common.enu.Personality).VanHoecke()).DanReturn("RandomAxKlantNummer") + + #dim AxItemIdBepalerMock As vhTest.Mock.AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler = ##class(vhTest.Mock.AXimpl.Admin.VKP.SalesPriceService.AxItemIdBepaler).%New() + Do AxItemIdBepalerMock.VerwachtMethodCall("GeefAxItemId", RandomProductNummer).DanReturn("AxProductNummer") + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New(SalesPriceServiceMock, "", KlantIdConverterMock, AxItemIdBepalerMock) #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(RandomKlantNummer, RandomProductNummer, "CifPPL") #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) Do $$$AssertEquals(ResultLine.Price, RandomPrice) + + Do SalesPriceServiceMock.Verifieer() + Do KlantIdConverterMock.Verifieer() + Do AxItemIdBepalerMock.Verifieer() ]]> Index: KPRIJSADMIN.mac.rou =================================================================== diff -u -r48610 -r50904 --- KPRIJSADMIN.mac.rou (.../KPRIJSADMIN.mac.rou) (revision 48610) +++ KPRIJSADMIN.mac.rou (.../KPRIJSADMIN.mac.rou) (revision 50904) @@ -90,34 +90,32 @@ 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 - // VHIP907: Verkoopprijzen - // VHIP907->MVI: voorlopig laat ik alles invullen in fase 2a en overschrijf ik enkel de waarden die ax teruggeeft + Do KKORTING, CALC 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:"")) - Set VkpEUR = Result.Price - Set LijstEUR = Result.GrossPrice - Set PriceUnit=Result.PriceUnit + New SalesPriceService, Result, ResultLine + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs(KLNr, PRNr, $select($get(SimPPL):SimPPL,1:"")) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) + + Set VkpEUR = ResultLine.Price + Set LijstEUR = ResultLine.GrossPrice - If SalesPriceService.PrijzenInclBTW() - { + If (Result.InclVAT) { Set VkpEUR=VkpEUR/1.21 Set LijstEUR=LijstEUR/1.21 } Set VkpPr = $J(VkpEUR,0,2) Set LijstPr = $J(LijstEUR,0,2) - If Result.PriceUnit>1 - { - Set VkpEUR=VkpEUR/PriceUnit - Set LijstEUR=LijstEUR/PriceUnit - - } - Set GrOrde=$Case(+Result.PriceUnit,100:"H",:"E") + + If (ResultLine.PriceUnit > 1) { + Set VkpEUR = VkpEUR / ResultLine.PriceUnit + Set LijstEUR = LijstEUR / ResultLine.PriceUnit + } + + Set GrOrde = $Case(+ResultLine.PriceUnit, 100:"H", :"E") Set GrOrdNum=$Case(GrOrde,"H":100,:1) Set Korting2=0 @@ -270,13 +268,14 @@ Quit R GeefLijstPrijsInAX(PRNr,SimCifPPL) - New Result - #Dim Result as AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + New SalesPriceService, Result, ResultLine + + #dim SalesPriceService As AXimpl.Admin.VKP.SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() + #dim Result As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceHeaderOutputDC = SalesPriceService.GeefPrijs($$$KlantLVanHoecke, PRNr, .SimCifPPL) + #dim ResultLine As AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC = Result.Lines.GetAt(1) + + Quit ResultLine.GrossPrice - Set Result=##class(AXimpl.Admin.VKP.SalesPriceService).%New().GeefPrijs($$$KlantLVanHoecke,PRNr,.SimCifPPL) - Quit Result.GrossPrice - - GETPROD(PRNr,NoSa,SimPPL) ; Ophalen productgegevens New J,R,FaMunt,EenhAank,PPL,%Korting,%DB,%Cif Do GetProdBasis