Index: KPRIJS.mac.rou =================================================================== diff -u -r47864 -r48131 --- KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 47864) +++ KPRIJS.mac.rou (.../KPRIJS.mac.rou) (revision 48131) @@ -1,8 +1,10 @@ KPRIJS ;Produkt prijs - +#define CheckAXFase (##class(TECH.Config.ConfigMgr).Instance().GetString("AX_SalesPriceOut_Fase") = "2A") +#define MaatwerkKlantenMetWildcardUitz ";19485;14604;" #include vhLib.Macro #include Prod.Product #include BL.Derde.LevSpecifiek +#include BL.Derde.KlantSpecifiek #define CodexList "LRSBG" #define CodexDeelVork "0;25;50;75;100" #define CodexDeelVorkOL "0;27.27272727;45.45454545;72.72727272;100" @@ -92,28 +94,56 @@ // VHIP907: Verkoopprijzen // VHIP907->MVI: voorlopig laat ik alles invullen in fase 2a en overschrijf ik enkel de waarden die ax teruggeeft - New Fase, SalesPriceService, Output, OutputLine - Set Fase = ##class(TECH.Config.ConfigMgr).Instance().GetString("AX_SalesPriceOut_Fase") + New SalesPriceService, Output, OutputLine - If (Fase = "2A") { - Set SalesPriceService = ##class(AXimpl.Admin.VKP.SalesPriceService).%New() - Set Output = SalesPriceService.GeefPrijs(KLNr, PRNr, CifPPL) - Set OutputLine = Output.Lines.GetAt(1) + If $$IsAX(KLNr,PRNr) { + 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):CifPPL,1:"")) - Set VkpEUR = OutputLine.Price + Set VkpEUR = Result.Price + Set VkpPr = VkpEUR + Set LijstEUR = Result.GrossPrice + Set LijstPr = LijstEUR + Set Korting2=0 + Set Korting1=(VkpEUR/LijstEUR-1)*100 } 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) + + // Set twee kortingen om van in % (*100) naar ��n korting in % OneKorting(Korting1,Korting2) Quit (1-((1-(Korting1/100))*(1-(Korting2/100))))*100 - + +IsAX(KLNr,PRNr) + New Fase,IsAX + Set IsAX=0 + If ($$$CheckAXFase) { + Set IsAX=1 + If $$$MaatwerkKlantenMetWildcardUitz[(";"&KLNr&";") { + If PRNr,$$$PRGet($$$LeveranciersNr)=$$$LevHalux { + Set IsAX=0 + } + } + } + ;w "KLNr",KLNr," PRNr",PRNr," = ",IsAX,! + Quit IsAX + 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":6819,"R":6820,"S":6821,"B":6822,"G":29391,"P":13854,"C":15876) + Quit:'$D(^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 @@ -123,6 +153,9 @@ New R,KatPr,CorFakt,KatProd,IsKatPr,FaMunt,Munt,MuntPar,IsKsCust,PrijsKl,VkpPr,KortNiv,AkpEUR,VkpEUR,LijstEUR,LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,PrMunt,CifPPL,LijstPr,Vork,%Vork New BTWfactor,LijstPr1,VkpEURIncl,VkpPr1,VkpPrIncl + If ($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() @@ -134,6 +167,9 @@ Set KlTyp=$G(KlTyp),IsKsCust=0 ;KlTyp="P" Set:$G(NoSa)'="S" NoSa="" Do GETPROD(PRNr,NoSa) + If ($$$CheckAXFase) { + Set LijstPr=$$GeefLijstPrijsInAX(PRNr,$S($G(SimPPL):SimPPL,1:"")) + } Set Munt=KlMunt If KlMunt="MTL" Do ; Munt leverancier .Set Munt=PrMunt @@ -192,6 +228,9 @@ Do GetProdBasis ;Set Decimal=$$MUNT^vhRtn1(FaMunt,4),%DB=$J(%DB*GrOrdNum,0,Decimal) Set R=CifPPL/(100-%DB/100)*%DB/100,R=$J(R,1,4),LijstPr=CifPPL+R + If ($$$CheckAXFase) { + Set LijstPr=$$GeefLijstPrijsInAX(PRNr,$S($G(SimPPL):CifPPL,1:"")) + } Set LijstPr=LijstPr*GrOrdNum Set GrtPr=LijstPr*(100-%Vork/100) Set GrtPr=$J($$ROUND(GrtPr),0,2) @@ -203,9 +242,16 @@ Set R=PPL_D_PrMunt_D_$S(EenhAank=1:"E",EenhAank=100:"H",EenhAank=1000:"M",1:"")_D_EenhAank Set R=R_D_%Korting_D_CifPPL_D_FaMunt_D_GrOrde_D_GrOrdNum_D_%Cif_D_DB_D_%DB_D_Vork_D_%Vork_D_LijstPr Set R=R_D_KatPrInd_D_KatPrHan_D_KatPrKs_D_LEVNr_D_CorFakt - Set R=##class(AXimpl.Admin.Context).Instance().GeefSalesPriceService().ModifyPrijsGeg($G(KLNr),$G(PRNr),R) Quit R +GeefLijstPrijsInAX(PRNr,SimCifPPL) + New Result + #Dim Result as AXif.Dynamics.SalesPriceIn.MessageParts.ADUSalesPriceLineOutputDC + + 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 @@ -243,7 +289,9 @@ Quit CifPPL(PRNr,NoSa) - Quit $P($$PRIJSGEG(PRNr,.NoSa),D,6) + New I,J,R,LEVNr,KatPrHan,KatPrInd,KatPrKs,GrOrde,GrOrdNum,GrtPr,PrMunt,CifPPL,LijstPr,Vork,DB,FaMunt,Decimal,EenhAank,PPL,%Korting,%Vork,%DB,%Cif,CorFakt + Do GetProdBasis + Quit CifPPL BUILD() Quit 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) @@ -450,24 +498,3 @@ . Set J=$O(^KPR(PRNr,"J")),R=^(J),PPL=$P(R,D,19) . Set:+PPL=+SchaduwPPL SchaduwPPL="" Quit SchaduwPPL - - -HeeftNietAlleenKinderen(PRNr,NoSa) - New HeeftNietAlleenKinderen,BSKey,BSNode - - Quit:($$$ProductGet(PRNr,$$$LinkType)="S") 1 ; stock over kinderen -> de kinderen bepalen de prijs - - If $G(NoSa)="S" Do - . Set BSNode="BSS" - . Set:'$D(^PRBS(BSNode,PRNr)) BSNode="BS" - Else Do - . Set BSNode="BS" - - ; als er alleen kinderen zijn dan gaat het over een ministuck liste en dan bepaald de moeder de prijs en niet de som van de bouwstenen - Set HeeftNietAlleenKinderen=0 - Set BSKey="" - For Set BSKey=$O(^PRBS(BSNode,PRNr,BSKey)) Quit:BSKey="" Do Quit:HeeftNietAlleenKinderen - . Set HeeftNietAlleenKinderen=$P(^PRBS(BSNode,PRNr,BSKey),"\",3)?1(1"H",1"S",1"T") - Quit HeeftNietAlleenKinderen - -