Proxy-klasse voor een TransportLijst
BL.Sys.FOP.Common,%VHMacro
1
%RegisteredObject,%XML.Adaptor
62201,53161.860504
60017,42885.748409
0
TRANSPORTLIJST
Datum van creatie van het document
%String
%String
%String
%String
%String
%String
%String
Wordt herhaald op ieder TPAdres (pxTranspAdres)
%String
Wordt herhaald op ieder TPAdres (pxTranspAdres)
%String
Type TransportLijst: OD/GLS/EXT
%String
BL.FOP.Derde.pxLevAdres
%String
Wordt herhaald op ieder TPAdres (pxTranspAdres)
%String
%String
%String
%String
%String
%String
%String
BL.FOP.Basis.pxTekstHTML
list
pxTranspAdres
list
BL.FOP.Basis.pxAttribUnit
BL.Flow.Proxy.pxPPODfields
s xml=##class(BL.Flow.Proxy.pxTransportLijst).Create($LB("TOER",+$H+1,+$H+1,"OD3"))
s xml=##class(BL.Flow.Proxy.pxTransportLijst).Create($LB("BONS",$LB(335250)))
s d=$$OPEN^vhDEV(,"Levnota.xml","W") u d d xml.Export(,"literal,indent") c d
Aanmaken van het TransportLijst-proxy object
Als $LI(lbCrit)="TRANSP"
- 2de item : Transportnr
Als $LI(lbCrit)="TOER"
- 2de item : VanDatum ($H format)
- 3de item : TotDatum ($H format)
- 4de item : VerzendWijze
Als $LI(lbCrit)="BONS"
- 2de item : List van BONNr
1
pxTransportLijst
TransportLijst invullen
VanDatum:%Date,TotDatum:%Date,Vzw:%String,lbBONNrs:%List,lbPPODKeywords:%List,Opties:%String
1
%Status
$LG(lbTranspAdres,$$$pAdrBeloofd) $LI(lbTranspAdres,$$$pAdrBeloofd)=Beloofd
Set ^HULP(%J,AdresKey)=lbTranspAdres
Set ^HULP(%J,AdresKey,"B",BONNr)=$LB(FakSoort,TerugName,Rembours,$P(BonRec,"\",42))
Quit
; Transportkey definieren en eventueel de reeds gedefinieerde (bij een voirge afdruk) transportkey hergebruiken als de volledige bon gelijk is.
ftlDefineTranspKeys(TranspKeyStart)
Set TranspKeyLen=$L(TranspKeyStart,";")
Set AdresKey=""
For Set AdresKey=$O(^HULP(%J,AdresKey)) Quit:AdresKey="" Do
. Set KLNr=$LG(^HULP(%J,AdresKey),2)
. Set KeyMem=""
. Set lbBONNrs=""
. Set CheckSumMem=""
. Set BONNr=""
. Set New=0
. For Set BONNr=$O(^HULP(%J,AdresKey,"B",BONNr)) Quit:BONNr="" Do
. . Set lbBONNrs=lbBONNrs_$LB(BONNr) ; voor bereken checksum
. . Set FakSoort=$LG(^HULP(%J,AdresKey,"B",BONNr),1)
. . Set TranspKeyOld=$LG(^HULP(%J,AdresKey,"B",BONNr),4)
. . If $P(TranspKeyOld,";",1,TranspKeyLen)'=TranspKeyStart Set New=1
. . Set:KeyMem="" KeyMem=$P(TranspKeyOld,";",TranspKeyLen+1)
. . Set:CheckSumMem="" CheckSumMem=$P(TranspKeyOld,";",TranspKeyLen+2)
. . If $P(TranspKeyOld,";",TranspKeyLen+1)'=KeyMem Set New=99
. Set CheckSum=..CheckSumLevBons(lbBONNrs) ; checksum is nodig om na te gaan of er eventueel leveringsbonnen verwijderd zijn
. If CheckSumMem'=CheckSum Set New=2
. ; controle of in ANDERE bonnen van de klant dezelfde sleutel is gebruikt
. Set BONNr=""
. For Set BONNr=$O(^KUL(KLNr,"F",BONNr)) Quit:BONNr="" Do
. . Quit:$D(^HULP(%J,AdresKey,"B",BONNr)) ; terug opgenomen in lijst
. . Set TranspKeyOld=$P(^KUL(KLNr,"F",BONNr,1),"\",42)
. . If $P(TranspKeyOld,";",1,$L(TranspKeyStart,";"))=TranspKeyStart Do
. . . Set New=3 ; er zijn andere met dezelfde startkey (vzw en datum)
. . . Lock +^KUL(KLNr,"F",BONNr):10
. . . Set $P(^KUL(KLNr,"F",BONNr,1),"\",42)="" ; wissen van de oude sleutel
. . . Lock -^KUL(KLNr,"F",BONNr)
.
. If New Do ;nieuwe nrs toekennen
. . ; nieuw nr
. . Lock +^KUL(0,"F","FG","AL")
. . Set KeyMem=$P(^KUL(0,"F","FG","AL"),"\")
. . Set $P(^KUL(0,"F","FG","AL"),"\")=$I(KeyMem)
. . Set KeyMem=KeyMem_(KeyMem#7) ; incl. checkdigit
. . Lock -^KUL(0,"F","FG","AL")
. . ;Toepassen op bon
. . Set BONNr=""
. . For Set BONNr=$O(^HULP(%J,AdresKey,"B",BONNr)) Quit:BONNr="" Do
. . . Set FakSoort=$LG(^HULP(%J,AdresKey,"B",BONNr),1)
. . . Lock +^KUL(KLNr,FakSoort,BONNr):10
. . . Set $P(^KUL(KLNr,FakSoort,BONNr,1),"\",42)=TranspKeyStart_";"_KeyMem_";"_CheckSum
. . . Set $LI(^HULP(%J,AdresKey,"B",BONNr),4)=$P(^KUL(KLNr,FakSoort,BONNr,1),"\",42)
. . . Lock -^KUL(KLNr,FakSoort,BONNr)
. Set $LI(^HULP(%J,AdresKey),$$$pAdrLevNr)=KeyMem
Quit
ftlBuildProxy ; proxy aanmaken
Do ftlAlgemeen(%this,Vzw,TotGewicht)
Set AdresKey=""
For Set AdresKey=$O(^HULP(%J,AdresKey)) Quit:AdresKey="" Do
. Set lbTranspAdres=^HULP(%J,AdresKey)
. Set pxTranspAdres=$$ftlAdresProxy(lbTranspAdres)
. Set KLNr=$LG(lbTranspAdres,2)
. Kill arRecuPak
. Set BONNr=""
. For Set BONNr=$O(^HULP(%J,AdresKey,"B",BONNr)) Quit:BONNr="" Do
. . Set FakSoort=$LG(^HULP(%J,AdresKey,"B",BONNr),1)
. . Set TerugName=$LG(^HULP(%J,AdresKey,"B",BONNr),2)
. . Set Rembours=$LG(^HULP(%J,AdresKey,"B",BONNr),3)
. . Set Groep=$$ftlGroep(KLNr,FakSoort,BONNr,TerugName) ; bepalen tot welke afdrukgroep de bon behoort (Beslag, Orgalux of Terugname)
. . Set Type=$$ftlType(KLNr,FakSoort,BONNr,TerugName) ; bepalen tot welke afdrukgroep de bon behoort (Beslag, Orgalux of Terugname)
. . Set pxTranspBon=##class(pxTranspDoc).Create(BONNr,Type,Groep,,Rembours) ; creatie van document met bon info
. . Do pxTranspBon.AddOrderRefs(KLNr,FakSoort,BONNr) ; toevoegen van orderrefenties
. . Do pxTranspAdres.Docs.Insert(pxTranspBon)
. . Do ftlGetRecuPak(.arRecuPak,KLNr,FakSoort,BONNr)
. Do fltAddRecuPak(pxTranspAdres,.arRecuPak)
. Do pxTranspAdres.BuildOpmerkingen(pxTranspAdres.Taal, ($$$aHasSubNodes(arRecuPak("P"))))
. Do ..TPAdressen.Insert(pxTranspAdres)
Quit
ftlAdresProxy(lpTranspAdres)
Set pxTranspAdres=##class(pxTranspAdres).%New()
Set pxTranspAdres.Adres=##class(BL.FOP.Derde.pxKlantAdres).%New()
Do pxTranspAdres.Adres.FillFromRec($LG(lbTranspAdres,$$$pAdrBonRec))
Set pxTranspAdres.KlantNr=$LG(lbTranspAdres,$$$pAdrKLNr)
Set pxTranspAdres.Taal=$S($P($LG(lbTranspAdres,$$$pAdrBonRec),"\",9)="":"N",1:$P($LG(lbTranspAdres,$$$pAdrBonRec),"\",9))
Set pxTranspAdres.Gewicht=$S($LG(lbTranspAdres,$$$pAdrGewicht):##class(BL.FOP.Basis.pxAttribUnit).Create($LG(lbTranspAdres,$$$pAdrGewicht),"kg"), 1:"")
Set pxTranspAdres.Rembours=(+$LG(lbTranspAdres,$$$pAdrRembours)'=0)
Set pxTranspAdres.TotNettoBedrag=$LG(lbTranspAdres,$$$pAdrRembours)
Set pxTranspAdres.Munt="EUR"
Set pxTranspAdres.HasTerugName=$LG(lbTranspAdres,$$$pAdrTerugName)
Set pxTranspAdres.Beloofd=$Case($LG(lbTranspAdres,$$$pAdrBeloofd),9:"N",1:"B",:"")
Set pxTranspAdres.AfleveringsNr=$LG(lbTranspAdres,$$$pAdrLevNr)
Set pxTranspAdres.Telefoon=$P($LG(lbTranspAdres,$$$pAdrBonRec),"\",13)
Set KLID=^KK1($LG(lbTranspAdres,$$$pAdrKLNr))
Set:$$UPTRIMAN^vhRtn1(pxTranspAdres.Adres.NAAM)'=$$UPTRIMAN^vhRtn1($P(^KKL(KLID,0),"\",2)) pxTranspAdres.FactuurKlant=$P(^KKL(KLID,0),"\",2) ; naam leveringsadres is verschillend, daarom klantnaam van het facturatieadres (=hoofdadres) toevoegen
Set:pxTranspAdres.Telefoon="" pxTranspAdres.Telefoon=$P(^KKL(KLID,0),"\",13)
Set pxTranspAdres.GSM=$P(^KKL(KLID,2),"\",20)
; Over te nemen uit parent-proxy (TPLijst)
Set pxTranspAdres.Transporteur=$LG(lbTranspAdres,$$$pAdrVzwBon) ; verzendwijze
Set pxTranspAdres.TransporteurOms=$G(^RES("KLANT","PI","VERZENDWIJZE","D",$LG(lbTranspAdres,$$$pAdrVzwBon),pxTranspAdres.Taal))
Set pxTranspAdres.LeverDatum=$$FormatDateTime^vhLib("dddd dd mmmm jj",$LG(lbTranspAdres,$$$pAdrLevDatum),pxTranspAdres.Taal)
Quit pxTranspAdres
;Someren van de recupaks uit de verschillende leveringsbons en de recenste saldo behouden
ftlGetRecuPak(arRecuPak,KLNr,FakSoort,BONNr)
Set PRNr=""
For Set PRNr=$O(^KUL(KLNr,FakSoort,BONNr,"VP",PRNr)) Quit:PRNr="" Do
. Set LevRec=^KUL(KLNr,FakSoort,BONNr,"VP",PRNr)
. Set RecuPak=$G(arRecuPak(PRNr))
. If RecuPak="" Do
. . Set arRecuPak("P",PRNr)=LevRec
. . Set arRecuPak("I",$$SORTKEY^PRODUKT(PRNr))=PRNr
. Else Do
. . If $$DIFFTIME^vhDTyp($P(LevRec,"\",2),$P(RecuPak,"\",2)) < 0 ; Levering is recenter dan reeds verwerkte
. . . Set $P(RecuPak,"\",1)=$P(LevRec,"\",1) ; saldo
. . . Set $P(RecuPak,"\",2)=$P(LevRec,"\",2) ; saldo datum
. . Set $P(RecuPak,"\",3)=$P(RecuPak,"\",3)+$P(LevRec,"\",3) ; totaal geleverd
. . Set arRecuPak("P",PRNr)=RecuPak
Quit
;Opbouw van de RecuPak proxy en toevoegen aan het adres.
fltAddRecuPak(pxTransAdres,arRecuPak)
Set SortKey=""
For Set SortKey=$O(arRecuPak("I",SortKey)) Quit:SortKey="" Do
. Set PRNr=arRecuPak("I",SortKey)
. Set RecuPak=arRecuPak("P",PRNr)
. Set pxRecuPak=##class(pxLevRecuPak).Create(PRNr, $P(RecuPak,"\",3), $P(RecuPak,"\",2), $P(RecuPak,"\",1))
. Do pxTransAdres.RecuPak.Insert(pxRecuPak)
Set RecuPak=""
Quit
ftlGroep(KLNr, FakSoort, BONNr, IsTerugName)
Quit:$G(TerugName) "T"
Quit:(..DocIsOrgalux(BONNr)) "O" ; $$ISORGAL^FLOWCHK("L",BONNr)
Quit "B"
ftlType(KLNr, FakSoort,BONNr, IsTerugName)
Quit:$G(TerugName) "T"
Set BonType=$P($G(^KUL(KLNr,FakSoort,BONNr,1)),D,25)
Quit:BonType?1(1"M",1"P") BonType
Quit "L"
ftlAlgemeen(pxTranspLijst,Vzw,Gewicht)
; Variabelen
Set TijdstipAfgedrukt=$H
Set PrintCount=$P(TijdstipAfgedrukt,",",2)
Set Closed=0
Set Creator="" ;Creator
; Properties
Set ..DocDatum=$$EXTDATE^vhDTyp($H)
Set ..Taal="N"
;Set ..Transporteur=Vzw
;Set ..TransporteurOms=""_$G(^RES("KLANT","PI","VERZENDWIJZE","D",..Transporteur,..Taal))
Set ..TransportStatus=""
Set ..TransportType="" ; T=Terugname
Set ..PrintDatum=TijdstipAfgedrukt
;Set ..PrintDatumOms=$$FormatDateTime^vhLib("dddd dd mmmm jj",TijdstipAfgedrukt,..Taal) ; $$EXTDATE^vhDTyp(TijdstipAfgedrukt)
Set ..PrintCount=PrintCount
Set ..Closed=Closed
;Do ..BuildOpmerkingen(..Taal)
Quit
ftlAdresGet(KLNr,FakSoort,BONNr)
Set AdresRec=$G(^KUL(KLNr,FakSoort,BONNr,3))
Set KlantRec=^KKL(^KK1(KLNr),0)
Set:$TR($P(AdresRec,"\",2,99),"\ ","")="" AdresRec=KlantRec
Set:$P(AdresRec,"\",16)="" $P(AdresRec,"\",16)=$P(KlantRec,"\",16) ; BTWNr
Quit AdresRec
ftlAdresSortKey(AdresRec)
; Naam;Aanspreking;Straat;Gemeente;KLNr
Set AdresKey=$P(AdresRec,"\",2)_";"_$P(AdresRec,"\",3)_";"_$P(AdresRec,"\",5)_";"_$P(AdresRec,"\",7)_";"_$P(AdresRec,1)
Quit AdresKey
ftlLijstEnd
Set ..TotGewicht=##class(BL.FOP.Basis.pxAttribUnit).Create(TotGewicht,"kg")
Quit
ftlPPODFields()
Quit:($G(lbPPODKeywords)=$LB())
Set Ref="TPLST;"_TransportNr
Set pxPPOD=##class(BL.Flow.Proxy.pxPPODfields).Create($$$ppodtTransportLijst, $G(Regio," "), $G(Taal," "), $G(KLNr," "), Ref, " ", $G(Bijlage," "), $G(DocSort," "), $G(EnvelopKey," "), )
Do:($LL($G(lbPPODKeywords))) pxPPOD.FillFromLB(lbPPODKeywords)
Set ..PPODFIELDS=pxPPOD
Quit
// ===================================================================
TXT(t)
Quit t
]]>
1
lbBONNrs
TransportLijst invullen
TransportNr:%String,lbPPODKeywords:%List,Opties:%String
%Status
1:"v"_(PrintCount-1), 1:"")_"/"_..CalcUserName(Creator,-1)
;Do PASTE(Naam)
;Do PASTE(StraatNrBus)
;Do PASTE(Postnummer_" "_Woonplaats)
;Do:(LandCode'="BE") PASTE(Land)
;Do:(PrintCount>1)||(Closed) PASTE("*** "_$$TXT($S(Closed:"Defin",1:"Corr"))_" ***", BOLD)
;Do:(TijdstipOphalingVoorzien) PASTE($$TXT("TpAanvr")_" "_$$TXT("Ophaal")_" "_$$TXT("Voor")_" "_$$FMTDT^vhDTyp(TijdstipOphalingVoorzien))
;Do PASTE($$TXT("Date")_": "_$$EXTDATE^vhDTyp(AfgedruktTijdstip))
;Do PASTE($$TXT("ORef")_": "_TransportNr_$S(PrintCount>1:"v"_(PrintCount-1), 1:"")_"/"_$$USERNAME^vhUSER(Creator,-1))
// Transport info: van-naar en eventueel de algemene opmerking afdrukken
If PrintCount>1 Do
. Set ..ReprintRef=$$TXT("RePrint")_TransportNr_$S(PrintCount>2:"v"_(PrintCount-2), 1:"")_..CalcUserName(Creator,-1)
. Set ..ReprintFromTS=$$TXT("Van")_$$EXTDATE^vhDTyp(OudeAfgedruktTijdstip)
;If TransportType="T" Write "*** "_$$TXT("Retour")_" ***" ; BOLD
;Set T=T_$$TXT("FromAdres")
;If TransportType="T" Do
;. Set T=T_" "_$$TXT("Onderst")
;. Set T=T_"~"_$$TXT("ToAdres")
;. Set T=T_"~"_VH(1)_"~"_VH(2)_"~"_VH(3)
;Else Do
;. Set T=T_"~"_VH(1)_"~"_VH(2)_"~"_VH(3)
;. Set T=T_"~"_$$TXT("ToAdres")
;. Set T=T_" "_$$TXT("Onderst")
If objTP.TransportType'="T" Do
. If (objTP.Groeperen="S")&&(objTP.UitersteLeverDatum) Do
. . Set UitersteLeverDatum=objTP.UitersteLeverDatum
. . Set ..UitersteLeverDatum=$$EXTDATE^vhDTyp(UitersteLeverDatum)
. . Set ..UitersteLeverTijd=$$EXTTIME^vhDTyp(UitersteLeverDatum,"TKL")
. . ;Set T=T_",~"_$$TXT("TenLste")_" "_$$EXTDATE^vhDTyp(UitersteLeverDatum)
. . ;Set:($P(UitersteLeverDatum,",",2)) T=T_" "_$$TXT("TenLste",3)_" "_$$EXTTIME^vhDTyp(UitersteLeverDatum,"TKL")
;Set T=T_"."
Set AlgemeneOpm=$G(^TRANSP("D",TransportNr,"T"))
Set ..AlgemeneOpm=##class(BL.FOP.Basis.pxTekstHTML).Create("ALGEMENEOPM",AlgemeneOpm,,1)
Quit
ftpLijstEnd
; Last Page
;Do PASTE($$TXT("Page"))
;Do PASTE(Page_"/"_PCount)
;Do PASTE($$EXTNUM^vhDTyp(TotGewicht,0,".T",1))
Set ..TotGewicht=##class(BL.FOP.Basis.pxAttribUnit).Create(TotGewicht,"kg")
;Do:(objTP.Status="T") PASTE($$TXT("HandT"))
Quit
ftpPPODFields()
Quit:($G(lbPPODKeywords)=$LB())
Set Ref="TPLST;"_TransportNr
Set pxPPOD=##class(BL.Flow.Proxy.pxPPODfields).Create($$$ppodtTransportLijst, $G(Regio," "), $G(Taal," "), $G(KLNr," "), Ref, " ", $G(Bijlage," "), $G(DocSort," "), $G(EnvelopKey," "), )
Do:($LL($G(lbPPODKeywords))) pxPPOD.FillFromLB(lbPPODKeywords)
Set ..PPODFIELDS=pxPPOD
Quit
// ===================================================================
TXT(t)
Quit t
]]>
BonRec is piece-delimited string met de berekende bedragen voor de levering:
UserID:%String,Format:%String
0
%String
ProcedureBlock afgezet
0
Is een Orgalux order ?
1
BONNr:%String
0
%Boolean