vhLib.Macro,BL.Derde.KlantSpecifiek 1 %RegisteredObject,%XML.Adaptor right LEVERING %Library.String %Library.String %Library.String %Library.String %Library.String BL.FOP.Derde.pxLevAdres pxFactOrd list %String %String %String KLNr:%String,KLID:%String,Taal:%String,FactType:%String,FANr:%String,BONNr:%String,IsOrgalux:%Boolean controle bonklant t.o.v. factuurklant . Set FactKLNr=$P($G(@GlobRef@(FactSoort,FANr,0,3)),"\",6) . If FactKLNr,FactKLNr'=KLNr Set Rec2=^KKL(^KK1(FactKLNr),0) Set ..LEVERINGSNR=$E(BONNr,2,99) Set ..LEVERINGSDATUM=$P(Rec,"\",2) Set ..VERZENDWIJZE=$P($P(Rec,"\",7),"#",1) Set ..VERZENDWIJZEOMS=$P($P(Rec,"\",7),"#",2) Set ..EDIBron = $P(Rec,"\",53) Set Port=$P($P(Rec,"\",13),"#",1,2) If (+Port)&&($P(Port,"#",2)) Set ..PORT=+Port If FactType="F" { #dim Factuur As DOM.VKP.Factuur = ##class(DOM.DomeinContext).Instance().GeefOrderAPI().GeefFactuur(FANr) If Factuur.GeefFacturatieWijze() = ##class(DOM.VKP.enu.FacturatieWijze).Incl() { Set ..PORT = ..PORT * (1 + Factuur.GeefBTWPercentage()) } }ElseIf FactType="P" { #dim Proforma As DOM.VKP.Proforma = ##class(DOM.DomeinContext).Instance().GeefOrderAPI().GeefProforma(FANr) If Proforma.GeefFacturatieWijze() = ##class(DOM.VKP.enu.FacturatieWijze).Incl() { Set ..PORT = ..PORT * (1 + Proforma.GeefBTWPercentage()) } } ; LEVADRES If $L($P(Rec2,"\",2)) Do . Set pxLAdr=##class(BL.FOP.Derde.pxLevAdres).%New() . Do pxLAdr.FillViaKLNr(KLNr,Rec2) . Set ..LEVADRES=pxLAdr Set pxOrd="",LijnObj="" Do SortOrder(FactSoort,FANr,BONNr,.Sort) Set SortKey="",OrdTotaal=0 For Set SortKey=$O(Sort(SortKey)) Quit:(SortKey="") Do . Set PrevObj=$G(LijnObj) . Set PrevRec=$G(RecL) . Set RecL=Sort(SortKey) . Set LijnSoort=$P(RecL,"\",17) . If LijnSoort="KF5" Do Quit . . Set OrdTotaal=$S(KLNr=$$$KlantTotaalInterieurNL:$$OrdTotaal(.Sort,SortKey),1:"") . . Set pxOrd=$$fvbLevAddNewOrder(RecL,OrdTotaal) . . Set LijnObj=pxOrd . Set:('$IsObject(pxOrd)) pxOrd=$$fvbLevAddNewOrder("") ; Create Dummy order, if not yet initialized . If LijnSoort="KF6" Do ; ProductLijn . . Set LijnObj=##class(pxProductLijn).BuildFromRec("F",RecL,KLNr,Taal,blnBruto,,$LB(FANr)) . . Do pxOrd.AppendLijn(LijnObj) . Else If $P(LijnSoort,"#",1)="KF11" Do ; TekstLijn ; If (LijnSoort="KF11#1") . . Set LijnObj=##class(pxTekstLijn).BuildFromRec("F",RecL,PrevObj,PrevRec) . . If LijnObj=PrevObj Quit ; TekstItem added to Previous LijnObj . . Else Do pxOrd.AppendLijn(LijnObj) . Else If $P(LijnSoort,"#",1)="KF1925" Do ; Manuele Lijn / manuele ProductLijn ; If (LijnSoort?1"KF1925#".E) . . Set LijnObj=##class(pxManueleLijn).BuildFromRec("F",RecL,KLNr,Taal,blnBruto,,$LB(FANr)) . . Do pxOrd.AppendLijn(LijnObj) . Else Do ; nothing . . Set LijnObj="" Set ..CheckSumBon=$$fvbCalcCheckSumBon(FANr,$E(BONNr,2,9),FactType) Set:($$$ISERR(..CheckSumBon)) ..CheckSumBon="" Set ..CheckSumBonOK=$S(..CheckSumBon>0:1, 1:"") Quit SortOrder(FactSoort,FANr,BONNr,Sort,CumulTBX) ; Sort via .Local Kill Sort #dim Oorsprong As BL.Flow.Offerte.enu.Oorsprong Set KLNr=$P(@GlobRef@(FactSoort,FANr,0,0),"\") Set OLNr=100,GroepCnt=$A("A"),(TempKlOL,TextBlock)="" For Set OLNr=$O(@GlobRef@(FactSoort,FANr,BONNr,OLNr)) Quit:'OLNr Do . Set RecL=@GlobRef@(FactSoort,FANr,BONNr,OLNr) . Set Oorsprong = $P(@GlobRef@(FactSoort,FANr,BONNr,1),"\",53) . If $$fvbHeeftSpecialeSortering(KLNr,Oorsprong) Do . . Set CumulTBX=1 ; Tijdelijk TBX vast op cumul . . Set KlOLNr=$P(RecL,"\",35) Set:$P(RecL,"\",17)="KF5" GroepCnt=GroepCnt+1 . . Do:KlOLNr="" . . . If $P($P(RecL,"\",17),"#")="KF11" Set:TextBlock="" TextBlock=$P($P(RecL,"\",18),";") . . . Else If $P(RecL,"\",17)="KF5" Set KlOLNr=" " . . . Else If $P($P(RecL,"\",17),"#")="KF1925" Set KlOLNr=TempKlOL . . Set $P(KlOLNr,".")=$J($P(KlOLNr,"."),3),PRNr=$P(RecL,"\",2) . . If $G(CumulTBX),PRNr,$$ISTBX^PRODUKT2(PRNr) Do . . . If (KLNr=$$$KlantDedecker) { Set $P(RecL, "\", 5) = "" } // Referenties leegmaken . . . Set SortKey=$C(GroepCnt)_"~"_$$SORTKEY^PRODUKT(PRNr)_"~"_$P(RecL,"\",6) ; Indien prijs verschillend, dan opsplitsen . . . For I=3,9,10,16 Set $P(RecL,"\",I)=$P(RecL,"\",I)+$P($G(Sort(SortKey)),"\",I) . . . Set $P(RecL,"\",37) = ##class(TECH.ListUtils).UnieVanPieces($P(RecL,"\",37), $P($G(Sort(SortKey)),"\",37), ";") . . Else Set SortKey=$C(GroepCnt)_"~"_KlOLNr_"~"_OLNr . . Set Sort(SortKey)=RecL . . Set TempKlOL=KlOLNr . . If $P($P(RecL,"\",17),"#")="KF11",TextBlock'=$P($P(RecL,"\",18),";") Set GroepCnt=GroepCnt+1 . Else Do ; Alle andere klanten . . Set Sort(OLNr)=RecL Quit fvbHeeftSpecialeSortering(KlantID , Oorsprong) #dim HeeftSpecialeSortering As %Boolean = (Oorsprong = ##class(BL.Flow.Offerte.enu.Oorsprong).EDIBestand()) if HeeftSpecialeSortering { #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) Set HeeftSpecialeSortering = ##class(TECH.StringUtils).Equals(KlantID,##class(DOM.VKP.enu.Klant).Keller() ,##class(DOM.VKP.enu.Klant).DKGDeKeukenfabriek() ,##class(DOM.VKP.enu.Klant).DeDecker()) } quit HeeftSpecialeSortering fvbLevAddNewOrder(Rec,OrdTotaal) Set pxOrd=##class(pxFactOrd).%New() Do pxOrd.FillViaRec(Rec,$G(OrdTotaal)) Do ..ORDERS.Insert(pxOrd) Quit pxOrd fvbCalcCheckSumBon(FANr,BONNr,FactType) Set blLevDoc=##class(BL.Flow.Levering.Doc).%New() ; Instantiate() If FactType="P" Do . Set CheckDigitBon=blLevDoc.CheckSumProforma(FANr,BONNr) Else Do . Set CheckDigitBon=blLevDoc.CheckSumFactuur(FANr,BONNr) ; Controle : vergelijken met de CheckSum van de leveringsbon. Indien niet gelijk, dan de waarde leeg teruggeven. Set:(0) CheckDigitBon="" Set blnLevDoc="" Quit CheckDigitBon OrdTotaal(Sort,SortKey) Set VNR=SortKey,Stop=0,OrdTotaal=0 For Set VNR=$O(Sort(VNR)) Quit:VNR=""!Stop Do . Set Rec=Sort(VNR) . Set LijnSoort=$P(Rec,"\",17) . If LijnSoort="KF5" Set Stop=1 Quit . If LijnSoort="KF6"!$F(LijnSoort,"KF1925") Set OrdTotaal=OrdTotaal+$P(Rec,"\",9) Quit OrdTotaal ]]>