Index: BL/Sys/FOP/CommonTasks.cls.xml
===================================================================
diff -u -r2038 -r3196
--- BL/Sys/FOP/CommonTasks.cls.xml (.../CommonTasks.cls.xml) (revision 2038)
+++ BL/Sys/FOP/CommonTasks.cls.xml (.../CommonTasks.cls.xml) (revision 3196)
@@ -340,6 +340,41 @@
]]>
+
+ "*") verwijderd worden. ]]>
+1
+%String
+
+
+
+
+
+Deze method is gerelateerd aan GeefUniekeNaamMetPlaceholder()
+Via deze method kan de placeholder vervangen worden door :
+ - ofwel zijn voorziene waarde : parameter "VervangWaarde" moet leeg zijn
+ - ofwel de opgegeven parameter VervangWaarde : moet ingevuld zijn
+1
+NaamMetPlaceholder:%String,VervangWaarde:%String=""
+%String
+
+
+
Geeft het pad van de gebruiker die aangelogd is op het systeem via TELNET sessie
Index: BL/EC/Data.cls.xml
===================================================================
diff -u -r2667 -r3196
--- BL/EC/Data.cls.xml (.../Data.cls.xml) (revision 2667)
+++ BL/EC/Data.cls.xml (.../Data.cls.xml) (revision 3196)
@@ -2975,6 +2975,25 @@
]]>
+
+NaamMetPlaceholder:%String
+1
+%String
+
+
+
+
+GedeelteNaarBase64:%String,GedeelteLetterlijk:%String,Extensie:%String="pdf"
+1
+%String
+
+
+
s x=##class(BL.EC.Data).%New().GetDocumentURL("XX","MN:PL","CHK","",1239)
@@ -2993,46 +3012,52 @@
. Set Status=##class(BL.Flow.Factuur.Doc).ValidateFactNr("F",DocNr,KlantNr)
. Quit:($$$ISERR(Status))
. If RecordType=$$$rtPDF Do
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"FAC"_DocNr_".pdf"
- . . Set Status=##class(BL.Flow.Factuur.Doc).RenderAndFtpDoc(DocNr,,,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"FAC"_DocNr,"pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.Factuur.Doc).RenderAndFtpDoc(DocNr,,,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
;Order
Else If (Toegang=$$$tgOrder) || (Toegang=$$$tgContractOrder) Do
. Set Status=##class(BL.Flow.Order.Doc).ValidateORDNr(DocNr,KlantNr)
. Quit:($$$ISERR(Status))
. If RecordType=$$$rtPDF Do
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"ORD"_DocNr_".pdf"
- . . Set Status=##class(BL.Flow.Order.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"ORD"_DocNr,"pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.Order.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
;Offerte
Else If Toegang=$$$tgOfferte Do
. Set Status=##class(BL.Flow.Offerte.Doc).ValidateOFFNr(DocNr,KlantNr)
. Quit:($$$ISERR(Status))
. If RecordType=$$$rtPDF Do
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"OFF"_DocNr_".pdf"
- . . Set Status=##class(BL.Flow.Offerte.Doc).RenderAndFtpDoc("O-"_DocNr,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"OFF"_DocNr,"pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.Offerte.Doc).RenderAndFtpDoc("O-"_DocNr,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
;Uitlevering
Else If Toegang=$$$tgUitlevering Do
. Set Status=##class(BL.Flow.Levering.Doc).ValidateBONNr(DocNr,KlantNr)
. Quit:($$$ISERR(Status))
. If RecordType=$$$rtPDF Do
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"LEV"_DocNr_".pdf"
- . . Set Status=##class(BL.Flow.Levering.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"LEV"_DocNr,"pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.Levering.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
;Prijslijst
Else If Toegang=$$$tgPrijsLijst Do
. If RecordType=$$$rtPDF Do
. . // Converteren van gearchiveerde prijslijst XML naar PDF
. . Set XMLPad=..GeefXMLPadVoorActuelePrijslijst(KlantNr)
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"PL.pdf"
- . . Set Status=##class(BL.Flow.PrijsLijst.Doc).RenderAndFtpFromXML(XMLPad,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"PL","pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.PrijsLijst.Doc).RenderAndFtpFromXML(XMLPad,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
. Else If RecordType=$$$rtXML Do
. . // Converteren van gearchiveerde prijslijst XML naar XML voor XLS
. . Set XMLPad=..GeefXMLPadVoorActuelePrijslijst(KlantNr)
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"PL.xml"
- . . Set Status=##class(BL.Flow.PrijsLijst.Doc).TransformToXMLAndFtpFromXML(XMLPad,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"PL","xml")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.PrijsLijst.Doc).TransformToXMLAndFtpFromXML(XMLPad,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
. Else If RecordType=$$$rtCHECK Do
. . // Alleen controleren of er een gearchiveerde prijslijst XML bestaat
@@ -3054,8 +3079,9 @@
. If objOfferte.Controle="P" Do Quit
. . Set Status=$$$ERROR($$$GeneralError,"Er zijn fouten opgetreden tijdens controle van offerte '"_DocNr_"' ("_objOfferte.Commentaar_").")
. If RecordType=$$$rtPDF Do
- . . Set FileName=$TR($System.Encryption.Base64Encode(URLKey),"+="_$C(10,13),"_")_"F"_DocNr_".pdf"
- . . Set Status=##class(BL.Flow.Offerte.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileName)
+ . . Set FileNameMetPlaceholder=..GeefUniekeNaamVoorFTP(URLKey,"F"_DocNr,"pdf")
+ . . Set FileName=..VervangPlaceholder(FileNameMetPlaceholder)
+ . . Set Status=##class(BL.Flow.Offerte.Doc).RenderAndFtpDoc(DocNr,$$$vHisieDownloadIntern,,FileNameMetPlaceholder)
. . Set:($$$ISOK(Status)) DocURL=$$$vHisieDownloadExtern_"/"_FileName
Else Do
. Set Status=$$$ERROR($$$GeneralError,"Toegang '"_Toegang_"' is onbekend")
Index: BL/Sys/FOP/Test.cls.xml
===================================================================
diff -u -r2337 -r3196
--- BL/Sys/FOP/Test.cls.xml (.../Test.cls.xml) (revision 2337)
+++ BL/Sys/FOP/Test.cls.xml (.../Test.cls.xml) (revision 3196)
@@ -634,7 +634,23 @@
If DebugFtp Do
. If 'Ftp.GetDirectory(.CurDir) Do WL^vhDBG("FTP: Can not get current dir!") Quit
. Do WL^vhDBG("CurDir is now: "_CurDir)
+
+ ; De placeholder vervangen
+ Set NaamMetPlaceholder=DestFName
+ Set NaamMetWildcard=##class(BL.Sys.FOP.CommonTasks).VervangPlaceholderZTSDoorWaarde(NaamMetPlaceholder,"*")
+ Set NaamZonderPlaceholder=##class(BL.Sys.FOP.CommonTasks).VervangPlaceholderZTSDoorWaarde(NaamMetPlaceholder)
+ Set DestFName=NaamZonderPlaceholder
+ Set IsPlaceholderVervangen = (NaamMetWildcard'=NaamZonderPlaceholder)
+
+ d WLIP^vhDBG(97,"FTP before Delete Files")
+ d WLIP^vhDBG(97,NaamMetWildcard)
+ ; if placeholder, then kill previous files with similar name
+ Set MagFilesVerwijderen=(IsPlaceholderVervangen)&&(NaamMetWildcard["*")
+ If MagFilesVerwijderen {
+ Set scDelete=##class(BL.Sys.FOP.Test).VerwijderFilesViaPatternOnFtp(NaamMetWildcard,Ftp,0) ; Alternatieve methode is minder efficient, maar werkt wel
+ }
+
; Send File to FTP
If ('Ftp.Store(DestFName,SrcStream)) Do Quit sc
. Set sc=$$$ERROR($$$GeneralError,"FTP: Failed to store file on FTP Server")
@@ -667,6 +683,84 @@
]]>
+
+
+Bestanden op de FTP-site verwijderen volgens NaamMetWildcard
+Dit is MDelete: een lijst ophalen via wildcard (pattern) + de files hiervan één voor één verwijderen via Ftp.Delete
+Het ophalen van de lijst verloopt in-line, het verwijderen kan ge-jobbed worden (TO DO)
+1
+NaamMetWildcard:%String,FtpClient:%Net.FtpSession,RunInNewJob:%Boolean=0
+%Status
+
+
+
+
+
+Geeft een lijst met bestanden terug die voldoen aan de opgegeven pattern (NaamMetWildcard)
+
+BELANGRIJK !!!
+==========
+Er zijn 2 veronderstellingen :
+ - er mogen geen spaties in de filenames staan (op de ftp-server)
+ - in de lijst die FTP teruggeeft staat de bestandsnaam in de laatste kolom; OPGELET : als dit verschillend is op andere systeem/omgeving, dan moet de code meer generiek gemaakt worden.
+
+Een alternatieve methode is Ftp.NameList(Path) , maar deze ondersteunt geen "wildcard matching".
+1
+NaamMetWildcard:%String,FtpClient:%Net.FtpSession
+%ListOfDataTypes
+
+
+
+
+1
+LijstBestandenTeVerwijderen:%ListOfDataTypes,FtpClient:%Net.FtpSession
+%Status
+
+
+
s sc=##class(BL.Sys.FOP.Test).SimulateAll() w $$ParseStatus^vhLib(sc)
Index: WV FOP DocBase.prj.xml
===================================================================
diff -u -r3188 -r3196
--- WV FOP DocBase.prj.xml (.../WV FOP DocBase.prj.xml) (revision 3188)
+++ WV FOP DocBase.prj.xml (.../WV FOP DocBase.prj.xml) (revision 3196)
@@ -1,6 +1,6 @@
-
+