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 @@ - +