Proxy-klasse voor een TransportLijst BL.Sys.FOP.Common,vhLib.Macro 1 %RegisteredObject,%XML.Adaptor right 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),KLNr) Set ^HULP(%J,AdresKey,"K",KLNr,BONNr)="" ; in ftlDefineTranspKeys bij "controle of in ANDERE bonnen ... " loop'en over KLNr --> TO DO 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 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 KLNr="" . For Set KLNr=$O(^HULP(%J,AdresKey,"K",KLNr)) Quit:(KLNr="") Do . . 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) . . . Set KLNr=$LI(^HULP(%J,AdresKey,"B",BONNr),5) . . . 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,ToonMeldingAfdrukAX) . 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 KLNr=$LI(^HULP(%J,AdresKey,"B",BONNr),5) . . 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,ToonMeldingAfdrukAX) 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" If (ToonMeldingAfdrukAX) && (pxTranspAdres.Rembours) { // Tijdelijke work-around : wijziging in caché, geen aanpassing nodig aan DocDesign templates. Set pxTranspAdres.TotNettoBedrag = " " Set pxTranspAdres.Munt = "### zie afdruk AX ###" } 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) If (pxTranspAdres.Telefoon="") { #dim axAdresId As %String= $Piece(lbTranspAdres, "\", 29) Set pxTranspAdres.Telefoon = ..GeefTelefoonLeverAdres(axAdresId) } 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^vhLib.DataTypes($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^vhLib.DataTypes($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^vhLib.DataTypes(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,6),"\ ","")="" AdresRec=KlantRec Set:$P(AdresRec,"\",16)="" $P(AdresRec,"\",16)=$P(KlantRec,"\",16) ; BTWNr Quit AdresRec ftlAdresSortKey(AdresRec) ; Naam;Aanspreking;Straat;Gemeente;AdresNr Set AdresKey=$P(AdresRec,"\",2)_";"_$P(AdresRec,"\",3)_";"_$P(AdresRec,"\",5)_";"_$P(AdresRec,"\",7)_";"_$P(AdresRec,"\",1) ; _";"_KLNr 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^vhLib.DataTypes(TijdstipOphalingVoorzien)) ;Do PASTE($$TXT("Date")_": "_$$EXTDATE^vhLib.DataTypes(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^vhLib.DataTypes(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^vhLib.DataTypes(UitersteLeverDatum) . . Set ..UitersteLeverTijd=$$EXTTIME^vhLib.DataTypes(UitersteLeverDatum,"TKL") . . ;Set T=T_",~"_$$TXT("TenLste")_" "_$$EXTDATE^vhLib.DataTypes(UitersteLeverDatum) . . ;Set:($P(UitersteLeverDatum,",",2)) T=T_" "_$$TXT("TenLste",3)_" "_$$EXTTIME^vhLib.DataTypes(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^vhLib.DataTypes(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 1 AdresId:%String %String