Proxy-klasse voor een Leveringsbon
BL.Sys.FOP.Common,BL.Flow.Doc.Common,%VHMacro,BL.Derde.KlantSpecifiek
1
%RegisteredObject,%XML.Adaptor
62201,53148.875446
60017,42885.748409
0
LEVERINGSBON
Datum van creatie van het document
%Library.String
Steeds "Leveringsbon"
%Library.String
Type van de leveringsbon: L/T/M/P (Leveringsbon/TerugnameBon/Monster/Proforma)
%String
%Library.String
%Library.String
%Library.String
%Library.String
%String
%Library.String
%Library.String
%Library.String
Type: Industrie of KS-klant
%Library.String
%Library.String
%Library.String
%Library.String
BL.FOP.Derde.pxLevAdres
BL.FOP.Derde.pxAfzenderHoofding
%Library.String
%String
%Integer
%Library.String
%Library.Integer
%String
%String
list
%String
%String
%String
BL.Flow.Proxy.pxFSC
BL.FOP.Basis.pxTekstHTML
list
BL.FOP.Basis.pxTekstHTML
list
%Integer
BL.FOP.Basis.pxAttribUnit
pxLevOrd
list
pxLevRecuPak
list
pxLevRembours
%String
%String
BL.Flow.Proxy.pxPPODfields
Header : contact gegevens
%String
Aanmaken van een Levering-proxy object (LeveringsBon)
s px=##class(BL.Flow.Proxy.pxLevering).Create(320305,0,"F","","",.status) do ProxyToXMLFile^vhLib(px,"\\notes01\shared\p v e\leveringsbon.xml","DOCS",1,1)
1
pxLevering
Leveringsbon invullen
BONNr:%String,blnShowRembours:%Boolean=0,FactSoort:%String,lbPPODKeywords:%List,Opties:%String
%Status
0)&&($TR(..VERZENDWIJZE," ")'=$$$VerzendwijzeGLS)&&(FactSoort="F") ..BuildRemboursData(BONNr)
// Lock terug afzetten
Lock -^UL("SORT",BONNr)
Quit $$$OK
flbAddNewOrder(Rec)
Set pxOrd=##class(pxLevOrd).%New()
Do pxOrd.FillViaRec(Rec)
Do ..ORDERS.Insert(pxOrd)
Quit pxOrd
flbSortOrder(KLNr,FactSoort,BONNr,Sort,CumulTBX)
; Sort via .Local
Kill Sort
Set OLNr=100,GroepCnt=$A("A"),(TempKlOL,TextBlock)=""
For Set OLNr=$O(^KUL(KLNr,FactSoort,BONNr,OLNr)) Quit:'OLNr Do
. Set RecL=^KUL(KLNr,FactSoort,BONNr,OLNr)
. If KLNr=$$$KlantKeller Do
. . Set CumulTBX=1 ; Tijdelijk voor Keller 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
. . . 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)
. . 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
flbAlgemeen ; (KLNr,KLID,Taal,FactSoort,BONNr)
Set Rec=$G(^KUL(KLNr,FactSoort,BONNr,1))
Set Rec3=$G(^KUL(KLNr,FactSoort,BONNr,3))
Set Taal=$S(+Rec3:$P(Rec3,"\",9), 1:$P($$$KLRec(0),"\",9)) ; Ophalen Taal uit Leveringsadres, indien aanwezig, anders uit klantdata
Set:(Taal="") Taal="N"
Set Munt=$P(Rec,"\",18)
Set blnBruto=$P(Rec,"\",27)
Set BonType=..CalcBonType(KLNr,BONNr,FactSoort)
Set ProfFact="" Set:($P(Rec,"\",25)?1(1"P",1"M")) ProfFact=$S($P(Rec,"\",29)["P":2, 1:1)
Set IsPlusMin=$$ISPLMIN^FLOWBON5(BONNr,FactSoort)
Set Rembours=$$flbCalcRembours(KLNr,BONNr,FactSoort)
Set CheckSumBon=$$flbCalcCheckSumBon(KLNr,BONNr,FactSoort)
;d WLIP^vhDBG(97,"LEV")
;d WLFMT^vhDBG("CheckSumBon: "_CheckSumBon,"W")
;Set MPBon=$P(Rec,"\",25)
;Do:(FactSoort="F") RecuPak^FLOWBON(BONNr) ; Enkel indien niet gefactureerd
Set RecuPak=($D(^KUL(KLNr,FactSoort,BONNr,"VP")))&&('IsBlum)&&('IsVH)&&('KlantIsAfzender)
Set ..BONTYPE=BonType
Set ..DOCDATUM=$$EXTDATE^vhDTyp($H)
Set ..LEVERINGSNR=BONNr ; $E(BONNr,2,99)
Set ..LEVERINGSDATUM=$P(Rec,"\",2)
Set ..CheckDigitLevNr=$$CalcCDigit6^vhRtn2(BONNr)
Set ..BarCodeBONNr=BONNr ; _$S(0:"."_CheckDigitLevNr, 1:"") ; Added by WimV on 22/07/2010
If 'KlantIsAfzender Do
. Set ..KlantTelefoon=$P($$$KLRec(0),"\",13)
Else Do
. Set ..KlantTelefoon=$P(^KUL(KLNr,FactSoort,BONNr,3),"\",13)
Set ..KlantType=$S($$ISKLANT^KS(KLNr):"K", 1:"I") ; KS of Industrie klant
Set ..MUNT=Munt
Set ..TAAL=Taal
Set ..BRUTONETTO=$S(blnBruto:"B",1:"N")
If 'KlantIsAfzender Set ..BTWNR=##class(BL.FOP.Derde.pxAdres).BtwNrTekst($P($$$KLRec(0),"\",16))
;Set Beloofd = $S($L($P(Rec,"\",16)): $S($P(Rec,"\",23)="N":"N",1:$S('$P(Rec,"\",36):"B",1:"")),1:"")
Set ..CodeBeloofd=$S($P(Rec,"\",16)="":"", $P(Rec,"\",23)="N":"N", '$P(Rec,"\",36):"B", 1:"")
Set ..ISORGALUX=IsOrgalux
Set ..ProfFact=ProfFact ; 1="Proforma", 2="Proforma volgt"
Set ..IsPlusMin=IsPlusMin
Set ..REMBOURS=Rembours ; 1="Te ontvangen", 2="Rembours"
Set:('Rembours) ..Kontant=($P($$$KLRec(0),"\",18)="") ; Geen BetalingsVw voor klant
If 'KlantIsAfzender Set ..CheckSumBon=CheckSumBon
; LEVADRES
Set pxLAdr=##class(BL.FOP.Derde.pxLevAdres).%New()
Do pxLAdr.FillViaKLNr(KLNr,Rec3,Taal)
Set ..LEVADRES=pxLAdr
If KlantIsAfzender Do ; bij de klant Scachmayer is de afzender SchacherMayer en niet Van Hoecke
. Set pxAfzenderHoofding=##class(BL.FOP.Derde.pxAfzenderHoofding).%New()
. Do pxAfzenderHoofding.FillViaKLNr(KLNr,Taal)
. Set ..AfzenderHoofding=pxAfzenderHoofding
. Set ..HeaderType="SCHACHERMAYER"
Do:('IsBlum)&&('IsVH)&&('IsOrgalux) ..BuildRecuPak(KLNr,BONNr,FactSoort) ; Niet voor Blum, Van Hoecke of Orgalux
Quit
flbLevBonEnd ; (KLNr,BONNr,Taal,Rec,Rec3)
; TotaalBedrag
If 'KlantIsAfzender Do
. If (($G(LandISOCode)="")||'$P($G(^ISO(0,"ISO.LAND",LandISOCode,0)),"\",5))&&('ProfFact) Do ; Alleen factuurwaarde bepalen voor NIET EEG-landen
. . Set Pariteit=$$MUNT^vhRtn1(Munt,,12)
. . Set ..TotBedragNetto=Netto*Pariteit ; $$FN(Netto*Pariteit,$$MUNT^vhRtn1(,4))
. ; Factuur Aan
. Set:(+Rec3)&&($$UPTRIMAN^vhRtn1(Naam)'=$$UPTRIMAN^vhRtn1($P(Rec3,"\",2))) ..FactuurAan=Naam ; $P(Rec3,"\",2)
. ; Voorwaarden/Memo's
. Do flbVoorWaarden ; (KLNr,BONNr,Taal,RecuPak) => geen tekstboodschappen bij Schachermayer
; Opmerkingen KL
Set KLRec5=$$$KLRec(5)
For I=3:1:5 Do:($L($P(KLRec5,"\",I))) ..Opmerkingen.Insert($P(KLRec5,"\",I))
; Verzendwijze
Set ..VERZENDWIJZE=$P($P(Rec,"\",7),"#",1)
Set ..VERZENDWIJZEOMS=$P($P(Rec,"\",7),"#",2)
; Tekst
Set ..VoorOntvangst=0 ; ($G(^KBA(156,Taal,1))'="") ; Boolean ; Handtekenen op afleveringsnota i.p.v. hier.
; Gewicht
Set ..Gewicht=##class(BL.FOP.Basis.pxAttribUnit).Create($P($P(Rec,"\",13),"#",3),"kg")
If Rembours Do ;Set T=T_$$TXT($S(Rembours=1:"Ontv",1:"Remb"))
Set ..FSCData=##class(BL.Flow.Proxy.pxFSC).%New()
Do ..FSCData.FSCViaLevering(BONNr,FactSoort,Taal)
/*** *** /
; Verpakking
Set VerpakType=$P(Rec,"\",30)
Set VerpTxt=0
;
; Port
Set Port=$P($P(Rec,"\",13),"#",1,2)
Set:(+Port)&&($P(Port,"#",2)) ..PORT=+Port
/*** ***/
Quit
flbCalcRembours(KLNr,BONNr,FactSoort)
Quit ..CalcRembours(KLNr,BONNr,FactSoort)
flbCalcCheckSumBon(KLNr,BONNr,FactSoort)
Set blLevDoc=##class(BL.Flow.Levering.Doc).%New() ; Instantiate()
Set CheckDigitBon=blLevDoc.CheckSumBon(BONNr,FactSoort,KLNr)
Set blnLevDoc=""
Quit CheckDigitBon
flbVoorWaarden ; (KLNr,BONNr,Taal,RecuPak)
Do ..BuildVoorWaarden(KLNr,BONNr,Taal,.RecuPak,.GlasProd)
Quit
flbPPODFields()
Quit:($G(lbPPODKeywords)=$LB())
Set Ref="BON;"_BONNr
Set pxPPOD=##class(BL.Flow.Proxy.pxPPODfields).Create($$$ppodtLevBon, $G(Regio," "), $G(Taal," "), $G(KLNr," "), Ref, " ", $G(Bijlage," "), $G(DocSort," "), $G(EnvelopKey," "), )
Do:($LL($G(lbPPODKeywords))) pxPPOD.FillFromLB(lbPPODKeywords)
Set ..PPODFIELDS=pxPPOD
Quit
]]>
Toevoegen van de PalletIDs aan de omschrijving
1
Uit ^ORDW ophalen van proxy info en toevoegen aan proxy object
1
Embedded object LevRembours invullen
BONNr:%String
0)
Set pxLev=%this
Set pxRemb=##class(pxLevRembours).%New()
Set pxRemb.Rembours=pxLev.REMBOURS
Set pxRemb.Taal=pxLev.TAAL
Set pxRemb.Datum=$$EXTDATE^vhDTyp($H)
Set pxRemb.LeveringsDatum=pxLev.LEVERINGSDATUM
Set pxRemb.LeveringsNr=pxLev.LEVERINGSNR
Set pxRemb.LevAdres=pxLev.LEVADRES
Set pxRemb.Munt=Munt ; pxLev.MUNT
Set pxRemb.Bedrag=$J(TeBet,0,2)
Set pxRemb.DocSigner="Hendrik"
Set ..RemboursData=pxRemb
Quit
/* * /
Set R=^KU1(BONNr,"F"),KLNr=$P(R,D)
Set IsRembKL=$$ISREMB^REMBOURS(KLNr)
Set KlantInd=^KK1(KLNr),R=^KKL(KlantInd,0)
Set Taal=$P(R,D,9) If Taal="" Set Taal="N"
;FTITEL
Write $$TXT($S('IsRembKL:"Ontv",1:"Remb"))
Write $$TXT("Date")_" "_$$EXTDATE^vhDTyp($H) ; $TR(DT,".","-")
Set BonDat=$P(^KUL(KLNr,"F",BONNr,1),"\",2) ; $TR($P(^KUL(KLNr,"F",BONNr,1),"\",2),".","-")
Set:(IsRembKL) T=$$TXT("Betr")_" : "_$$TXT("LevBon")_" "_$FN(BONNr,",")_" "_$$TXT("Van")_" "_BonDat
Set T=$$TXT("Bovic") ; Aan de chauffeurs
;BODY
Write $$TXT("Gel") ; Gelieve bij
Set:'LevAdr T=T_$$FIRMANM^DCALG("K",KLNr)
Set:LevAdr T=T_$$FIRMANM^DCALG(,,Naam,Aanspr,Land)
;Set LevAdr = LeveringsAdres van de LevBon
If KLNr=8545,$L(T),$L(Toenaam) Set R=T,T=Toenaam,Toenaam=R
If $L(Toenaam) Do
.Do CACHE(""),PASTE(PCount,LCount,Toenaam,Allign,"","")
Write Straat ; Do CACHE(""),PASTE(PCount,LCount,Straat,Allign,"","")
Write PostNr_" "_Woonpl ; Do CACHE(""),PASTE(PCount,LCount,PostNr_" "_Woonpl,Allign,"","")
If Land'="BE" Do CACHE(""),PASTE(PCount,LCount,$$LAND^vhRtn1(Land,2,Taal),Allign,"","")
Set R=$$BON^REMBOURS(BONNr)
Set TeBet=$P(R,D),Munt=$P(R,D,7)
If TeBet'>0 Kill C Quit
Set TeBet=$J(TeBet,0,2)
Write $$TXT("TOntv")
Write $$FN(TeBet,2)_Munt
;LFOOTER
Set T=$$TXT("Dank") ; Dank bij voorbaat,
Set T=$$TXT("Hendr")
/* */
]]>
BonRec is piece-delimited string met de berekende bedragen voor de levering:
[TeBet_D_Goederen_D_KontKrt_D_Btw_D_Port_D_Extra_D_Munt]
BONNr:%String
0
%String
Embedded object RecuPak invullen
KLNr:%String,BONNr:%String,FactSoort:%String="F"
Rembours bepalen voor deze bon:
Geeft 0, 1 of 2 terug. 2: rembours-klant; 1: éénmalig "Te ontvangen" van Niet-rembours klant; 0:niet-rembours
KLNr:%String,BONNr:%String,FactSoort:%String="F"
0
%Integer
Type van de LeveringsBon bepalen
Return values: L/T/M/P/
KLNr:%String,BONNr:%String,FactSoort:%String="F"
%String
LeveringsBon Voorwaarden
ProcedureBlock doesn't allow use of $NAME(...) function
KLNr:%String,BONNr:%String,Taal:%String,RecuPak:%String,GlasProd:%String
0
Is een Orgalux order ?
1
BONNr:%String
0
%Boolean