Index: BL/Sys/FOP/Test/tmpDev.mac.rou =================================================================== diff -u --- BL/Sys/FOP/Test/tmpDev.mac.rou (revision 0) +++ BL/Sys/FOP/Test/tmpDev.mac.rou (revision 936) @@ -0,0 +1,72 @@ +#include %occInclude +#include %VHMacro +#include DocBaseCNTs + + + /* +arTaskSeq(0,"MERGEMAIN")=0 +arTaskSeq(0,"OBJ")=1@Sys.FOP.Task +arTaskSeq(0,""OBJTSeq")=8@Sys.FOP.TaskSequence +arTaskSeq("ACT-OK","FAX",1)=7@Sys.FOP.SubTaskFax +arTaskSeq("ACT-OK","FAX",1,"FAXNR")=037601919 +arTaskSeq("ACT-OK","FAX",1,"FRONTPG")=http://cache02/CSP/Admin1/TestDocBase_SampleA.xml +arTaskSeq("ACT-OK","FAX",1,"FRONTPG","TEMPLATE")=SampleA +arTaskSeq("ACT-OK","FILE",1)=5@Sys.FOP.SubTaskArchief +arTaskSeq("ACT-OK","FILE",1,"FNAME")=TestSample_41313.pdf +arTaskSeq("ACT-OK","FILE",1,"FPATH")=E:\FOP\PDFTemp +arTaskSeq("ACT-OK","MAIL",1)=6@Sys.FOP.SubTaskMail +arTaskSeq("ACT-OK","MAIL",1,"SUBJECT")=Test van WimV - FOP +arTaskSeq("ACT-OK","MAIL",1,"TO")=wv@vanhoecke.be +arTaskSeq("ACT-OK","PRINT",1)=4@Sys.FOP.SubTaskPrint +arTaskSeq("ACT-OK","PRINT",1,"PRINTER")=DocuColor +arTaskSeq("DOC","MAIN",1)=2@Sys.FOP.emDoc +arTaskSeq("DOC","MAIN",1,"TRANSFORM")=PDF +arTaskSeq("DOC","MAIN",1,"TYPE")=XML +arTaskSeq("DOC","MAIN",1,"URL")=e:\ADB\Templates\DEV\TestDocBase\TestDocBase_vh2.xml +arTaskSeq("FOPTASK")=2 +arTaskSeq("FOPTASK",1)=DocBase +arTaskSeq("FOPTASK",1,"Render+Dist","ADB_PROCESS")=VH_RenderAndDistribute +arTaskSeq("FOPTASK",1,"Render+Dist","DATAIN","Url")=e:\ADB\Templates\DEV\TestDocBase\TestDocBase_vh2.xml +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_email_attachmentname")=TestFOP_41313,TestFOP2,TestFOP3 +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_email_message")=Knap he ...\013\010� +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_email_recipient")=wv@vanhoecke.be +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_email_subject")=Test van WimV - FOP +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_file_docname")=TestSample_41313.pdf +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_file_folder")=E:\FOP\PDFTemp +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_printer_name")=DocuColor +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_printer_number_of_copies")=1 +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","distribution_type")=FILE;EMAIL;PRINTER +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","document_alias")=TestDocBase +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","document_ext")=N.xslt +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","render_docleanup")=true +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","render_inputasbytearray")=true +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","render_inputtype")=xml/xsl +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","render_outputasbytearray")=true +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","render_outputtype")=pdf +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","xml_source")=xml/xsl +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","xslt_param01")=pTaal=N +arTaskSeq("FOPTASK",1,"Render+Dist","TPROPS","xslt_param02")=LOCALE=BE_nl +arTaskSeq("FOPTASK",2)=DocBase +arTaskSeq("FOPTASK",2,"RenderFP+Merge","ADB_PROCESS")=VH_RenderAndPDFMerge +arTaskSeq("FOPTASK",2,"RenderFP+Merge","DATAIN","Url")=http://cache02/CSP/Admin1/TestDocBase_SampleA.xml +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","document_alias")=SampleA +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","document_ext")=xslt +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","pdfmerger_append_document")=E:\FOP\PDFTemp\TestSample_41313.pdf +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","pdfmerger_inputasbytearray")=true +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","pdfmerger_outputasbytearray")=false +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","pdfmerger_outputfilename")=E:\FOP\PDFTemp\FaxFileName037601919.pdf +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","render_docleanup")=true +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","render_inputasbytearray")=true +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","render_inputtype")=xml/xsl +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","render_outputasbytearray")=true +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","render_outputtype")=pdf +arTaskSeq("FOPTASK",2,"RenderFP+Merge","TPROPS","xml_source")=xml/xsl + */ + +AnalyseFopTask(FopTask,arTaskSeq) ; arTaskSeq als .local doorgeven + ; Routine moved to BL.Sys.FOP.Verwerker.tmpDev.MAC + ; Call redirected! + Set sc=$$AnalyseFopTask^BL.Sys.FOP.Verwerker.tmpDev(.Task,.arTaskSeq) + Quit sc + + \ No newline at end of file Index: BL/Sys/FOP/Verwerker/tmpDev.mac.rou =================================================================== diff -u --- BL/Sys/FOP/Verwerker/tmpDev.mac.rou (revision 0) +++ BL/Sys/FOP/Verwerker/tmpDev.mac.rou (revision 936) @@ -0,0 +1,1069 @@ +#include %occInclude +#include %VHMacro +#include DocBaseCNTs +#include BL.Sys.FOP.Common + +AnalyseFopTask(FopTask,arTaskSeq) ; arTaskSeq als .local doorgeven + ;d WLIP^vhDBG(97,"Begin Analyse FopTask") + New sc + If $L(FopTask.AnalyseRoutine) Do + . Set sc=$$$OK + . If FopTask.AnalyseRoutine["FactuurPrintOMRAndFile" Do + . . Do FactuurPrintOMRAndFile + . Else If FopTask.AnalyseRoutine["FactuurArchiveren" Do + . . Do FactuurArchiveren + . Else If FopTask.AnalyseRoutine["FactuurPrintOMR" Do + . . Do FactuurPrintOMR + . Else If FopTask.AnalyseRoutine["ProformaPrintOMR" Do + . . Do ProformaPrintOMR + . Else If FopTask.AnalyseRoutine["MergePrintOMR" Do + . . Do MergePrintOMR + . Else If FopTask.AnalyseRoutine["RappelPrintOMR" Do + . . Do RappelPrintOMR + . Else If FopTask.AnalyseRoutine["PrijsLijstPPODArchiveren" Do + . . Do PrijsLijstSaveXmlRenderToPPOD + . Else If FopTask.AnalyseRoutine["FaxRenderToPPODMergeAndSend" Do + . . Do FaxRenderToPPODMergeAndSend + . Else If FopTask.AnalyseRoutine["DocMultiRenderAndMail" Do + . . Do DocMultiRenderAndMail + . Else If FopTask.AnalyseRoutine["DocRenderAndFile" Do + . . Do DocRenderAndFile + . Else If FopTask.AnalyseRoutine["DocRenderAndPrint" Do + . . Do DocRenderAndPrint + . Else If FopTask.AnalyseRoutine["DocRenderAndMail" Do + . . Do DocRenderAndMail + . Else If FopTask.AnalyseRoutine["DocRenderAndFtp" Do + . . Do DocRenderAndFtp + . Else If FopTask.AnalyseRoutine["DocRenderToPPOD" || (FopTask.AnalyseRoutine["DocRenderAndSaveToPPOD") Do + . . Do DocRenderAndSaveToPPOD + . Else If FopTask.AnalyseRoutine["PrintPDF" Do + . . Do PrintPDF + . Else If FopTask.AnalyseRoutine["SendFaxPDF" Do + . . Do SendFaxPDF + . Else If FopTask.AnalyseRoutine["DocTransformXslt" Do + . . Do DocTransformXslt + . Else If FopTask.AnalyseRoutine["???" Do + . . Do ; ... + . Else Do + . . Set sc=$$$ERROR($$$GeneralError,"FopTask.AnalyseRoutine does not exist. No Analyse of FopTask.") + . Quit + . Set sc=$$$OK + . Do @(FopTask.AnalyseRoutine) + Else Do + . Set sc=$$$ERROR($$$GeneralError,"FopTask.AnalyseRoutine is not specified. No Analyse of FopTask.") + . quit ; !!! Up to now : only process tasks when FopTask.AnalyseRoutine is specified. + . ; + . ;Do AnalyseObject + . ;Set sc=$$AnalyseSequence() ; Return Error "not yet implemented" ... TO DO + . ;d WL^vhDBG($$$ArrayTT("arTaskSeq",.arTaskSeq)) + Quit sc + + /* + // Following Labels have been deleted from this routine; by WimV on 11/01/2008 - last backup: see Cache02\c$\CacheSys\ImportExport + AnalyseObject + AnalyseSequence() + */ + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Print a PDF file from disk: +PrintPDF + Set sc=$$PrintPDFSub() + Quit +PrintPDFSub() + New Task,PrinterName,PPODFilePath,PrintFilePath,DestDir,DestName,sc + New TSeq,SeqItem + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set Doc=Task.Docs.GetNext("") + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + // Build SeqItem to Print File + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"PrintPDF","A","vh_printFileProcessor") + Do asqAddParamsLoadFileTask(SeqItem,Doc.DataRef) + Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Quit sc + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Merge Print OMR : + /// - Merge all data : cre�ert een .ps-file voor de gevraagde PrintGroup, of alle Printgroepen --> meerdere files, 1 per printgroep + /// - de .ps-file(s) verplaatsen en hernoemen + /// - de .ps-file(s) afdrukken op (de gekozen) printer +MergePrintOMR + Set sc=$$MergePrintOMRSub() + Quit +MergePrintOMRSub() +#define ConvertDateOLD $TR($ZDT($H,8)," :","_") +#define ConvertDate $$$FormatYMDHMS($H,"_") + + New Task,PrintGroupName,PrinterName,PPODFilePath,PrintFilePath,DestDir,DestName,sc + New TSeq,SeqItem + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Quit:($$$ISERR(sc)) sc + Set PrintGroupName=$S($IsObject(Task.ActionPrint):Task.ActionPrint.OMRCode, 1:"") + Set PrinterName=$S($IsObject(Task.ActionPrint):Task.ActionPrint.Printer, 1:"") + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + If (PrintGroupName["\")||($$$LCase(PrintGroupName)[".ps") Do + . ;Set blnSkipMergePPOD=1 + . Set PPODFilePath=PrintGroupName + . Set PrintGroupName="" + Else Do + . ;Set blnSkipMergePPOD=0 + . Set PPODFilePath=$$$OMRSourceDir_PrintGroupName_".ps" + + ;Goto:(blnSkipMergePPOD) mpoStartRenamePrint ; Skip MergePPOD, immediatly go to StartRenamePrint + + // Build Cach�-SeqItem to clean up files before creating the .ps file + If $L(PrintGroupName) Do ; 'blnSkipMergePPOD + . If 1 Do ; Rename to .BAK + . . Set BackupFilePath=$$$OMRSourceDir_PrintGroupName_"_"_$$$ConvertDate_".ps.BAK" + . . Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),$$$CvtFop2Ntw(BackupFilePath),0) + . Else Do ; Delete + . . Do AddSeqItemDeleteFiles(TSeq,$$$CvtFop2Ntw(PPODFilePath),0) + + // Build SeqItem MergePPOD + If $L(PrintGroupName) Do ; 'blnSkipMergePPOD + . Do AddSeqItemMergePPODGroup(TSeq,PrintGroupName) + + // Build Cach�-SeqItem to rename/move the PrintFile + Set DestDir=$$$OMRPrintDir + Set DestName=$$$ConvertDate_"_"_##class(%File).GetFilename(PPODFilePath) + Set PrintFilePath=DestDir_DestName + Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),$$$CvtFop2Ntw(PrintFilePath),1) + ; + Quit:(PrinterName="")||(PrinterName="~") sc + // Build SeqItem to Print File + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"PrintOMRFile","A","vh_printFileProcessor") + Do asqAddParamsLoadFileTask(SeqItem,PrintFilePath) + Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Quit sc + + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Factuur Print And File with OMR : + /// De Sys.FOP.Task wordt opgeplitst in 2 DocBase processen: + /// - Archiveren : in PDF-formaat; enkel origineel exemplaar; Save to File + /// - PrintWithOMR : in PS-formaat; orig exemplaar + kopie�n; Save to PostProcOutData +FactuurPrintOMRAndFile + Set sc=$$FactuurPrintOMRAndFileSub() + Quit +FactuurPrintOMRAndFileSub() + New Task,CntDocMain,OrigDoc,tmpDoc,DocKey,lbDefs,lbFacturen,lbFactuur,FANr,FactType,i,arDataDefs,iExemp,sc ; ,scExec + New TSeq,SeqItem + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set DocKey="" + Set OrigDoc=Task.Docs.GetNext(.DocKey) + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + ; Create temporary objects, so modifications will never affect the original objects. + + ; PDF-file voor Archief + Set tmpDoc=OrigDoc.%ConstructClone() ; temporary object --> Doc.DataDefsLB will be overwriten + Set tmpDoc.TransformType="PDF" + If tmpDoc.DataFetchType="DEFS" Do ; enkel origineel exemplaar + . Set lbDefs=tmpDoc.DataDefsLB ; example: $LB("CLS.MTH.XML",..%ClassName(1),"GetFopXML",lbFacturen) + . Set lbFacturen=$LG(lbDefs,4) + . For i=1:1:$LL(lbFacturen) Set $LI(lbFacturen,i)=$$fpfFactuurOrigOnly($LI(lbFacturen,i)) + . Set $LI(lbDefs,4,4)=$LB(lbFacturen) + . Set tmpDoc.DataDefsLB=lbDefs + Do AddSeqItemRenderAndFile(TSeq,Task,tmpDoc,1) + If $L($G(lbFacturen)) Do + . Set lbFactuur=$LG(lbFacturen,1) ; $LG($LG(lbDefs,4),1) + . Set FANr=$LI(lbFactuur,1) + . Set FactType=$LI(lbFactuur,2) + Set:($G(FANr)="")||($G(FactType)="") sc=$$$ERROR($$$GeneralError,"FactuurArchiveren : FANr of FactType is leeg. Kan de global niet invullen (FANr="_$G(FANr)_" Type="_$G(FactType)_")") + Do:($$$ISOK(sc)) AddSeqItemFactuurPDFPathToGlobal(TSeq,Task,.FANr,.FactType) + ;Quit:($$$ISERR(sc)) sc + + ; Print with OMR + Set tmpDoc=OrigDoc.%ConstructClone() ; temporary object --> Doc.DataDefsLB will be overwriten + Set tmpDoc.TransformType="PS" + If tmpDoc.DataFetchType="DEFS" Do + . ; Split up docs for different Exemplaren. + . Do fpoFactuurSplitDataDefs(tmpDoc.DataDefsLB,.arDataDefs) + . ; For each DataDefsLB: generate a SeqItem + . Set iExemp="" + . For Set iExemp=$O(arDataDefs(iExemp)) Quit:(iExemp="") Do Quit:($$$ISERR(sc)) + . . Set tmpDoc.DataDefsLB=arDataDefs(iExemp) + . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,tmpDoc,1) + . ; + Else Do + . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,,0) + ;Do:(0) AddSeqItemFactuurPDFPathToGlobal(TSeq,Task,"X","F") + Quit sc +fpfFactuurOrigOnly(lbFact) + Set $LI(lbFact,3)="" + Quit lbFact + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Factuur Archiveren : in PDF-formaat; alle exemplaren; Save to File +FactuurArchiveren + Set sc=$$FactuurArchiverenSub() + Quit +FactuurArchiverenSub() + New Task,TSeq,CntDocMain,Doc,lbFactuur,FANr,FactType,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Do AddSeqItemRenderAndFile(TSeq,Task,,0) + Set Doc=Task.Docs.GetNext("") + If Doc.DataFetchType="DEFS" Do + . Set lbFactuur=$LG($LG(Doc.DataDefsLB,4),1) + . Set FANr=$LI(lbFactuur,1) + . Set FactType=$LI(lbFactuur,2) + Set:($G(FANr)="")||($G(FactType)="") sc=$$$ERROR($$$GeneralError,"FactuurArchiveren : FANr of FactType is leeg. Kan de global niet invullen (FANr="_$G(FANr)_" Type="_$G(FactType)_")") + Do AddSeqItemFactuurPDFPathToGlobal(TSeq,Task,.FANr,.FactType) + Quit sc + + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Factuur : Print with OMR = add to PPOD: + /// - PrintWithOMR : in PS-formaat; orig exemplaar + kopie�n; Save to PostProcOutData +FactuurPrintOMR + Set sc=$$FactuurPrintOMRSub() + Quit +FactuurPrintOMRSub() + New Task,TSeq,CntDocMain,DocKey,Doc,tmpDoc,arDataDefs,iExemp,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set DocKey="" + Set OrigDoc=Task.Docs.GetNext(.DocKey) + ;Set OrigDoc.TransformType="PS" + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + If OrigDoc.DataFetchType="DEFS" Do + . ; Copy Doc to temporary object --> Doc.DataDefsLB will be overwriten + . Set tmpDoc=OrigDoc.%ConstructClone() + . ; Split up docs for different Exemplaren. + . Do fpoFactuurSplitDataDefs(tmpDoc.DataDefsLB,.arDataDefs) + . ; For each DataDefsLB: generate a SeqItem + . Set iExemp="" + . For Set iExemp=$O(arDataDefs(iExemp)) Quit:(iExemp="") Do Quit:($$$ISERR(sc)) + . . Set tmpDoc.DataDefsLB=arDataDefs(iExemp) + . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,tmpDoc,1) + . ; + Else Do + . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,,0) + Quit sc +fpoFactuurSplitDataDefs(lbDefs,arDataDefs) ; arDataDefs als .local doorgeven + ; Split up pdlExemplaren for PPOD + New lbFactuur,iExemp,arExemp + Set lbFactuur=$LG($LG(lbDefs,4),1) + Do fpoFactuurSplitExemplaren($LG(lbFactuur,3),.arExemp) ; Set pdlExemplaren=$LG(lbFactuur,3) + Set iExemp="" + Kill arDataDefs + For Set iExemp=$O(arExemp(iExemp)) Quit:(iExemp="") Do + . Set $LI(lbFactuur,3)=arExemp(iExemp) + . Set $LI(lbDefs,4)=$LB(lbFactuur) + . Set arDataDefs(iExemp)=lbDefs + Quit +fpoFactuurSplitExemplaren(pdlExemplaren,arExemp) ; arExemp als .local doorgeven + ; Split up pdlExemplaren for PPOD + New i,Exemplaar,iExemp + Kill arExemp + For i=1:1:$L(pdlExemplaren,"\") Do + . Set Exemplaar=$P(pdlExemplaren,"\",i) + . Set iExemp=$Case(Exemplaar, "":1, "O":1, "A":3, :2) + . Set arExemp(iExemp)=$S($L($G(arExemp(iExemp))):arExemp(iExemp)_"\", 1:"")_Exemplaar + Quit + + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Proforma : Print with OMR = add to PPOD: + /// - PrintWithOMR : in PS-formaat; orig exemplaar + kopie�n; Save to PostProcOutData +ProformaPrintOMR + Set sc=$$FactuurPrintOMRSub() + Quit + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Rappel : Print with OMR = add to PPOD: + /// - PrintWithOMR : in PS-formaat; Taak splitsen in exemplaar "Intern" en "Extern" (2 Tseq.Items) ; Save to PostProcOutData +RappelPrintOMR + Set sc=$$RappelPrintOMRSub() + Quit +RappelPrintOMRSub() + New Task,TSeq,CntDocMain,DocKey,Doc,tmpDoc,arDataDefs,iExemp,KLNr,RappelDatum,sc + New lbRappels,lbRappel + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set DocKey="" + Set Doc=Task.Docs.GetNext(.DocKey) + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + If (Doc.DataFetchType="DEFS") Do + . ; Copy Doc to temporary object --> Doc.DataDefsLB will be overwriten + . Set tmpDoc=Doc.%ConstructClone() + . Set lbRappels=$LG(tmpDoc.DataDefsLB,4) + . ; Split up docs for different Exemplaren. + . Do fpoRappelSplitDataDefs(tmpDoc.DataDefsLB,.arDataDefs) + . ; For each DataDefsLB: generate a SeqItem + . Set iExemp="" + . For Set iExemp=$O(arDataDefs(iExemp)) Quit:(iExemp="") Do Quit:($$$ISERR(sc)) + . . Set tmpDoc.DataDefsLB=arDataDefs(iExemp) + . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,tmpDoc,1) + . ; + Else Do + . Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,,0) + ; Add SeqItem RappelNr Increment Method + If ($IsObject(Doc.Options))&&($LF(Doc.Options.lbOptions,"IncRappel")) Do ; If (Doc.Options["IncRappel") Do + . Set lbRappel=$S($L($G(lbRappels)):$LG(lbRappels,1), 1:"") + . Set KLNr=$LG(lbRappel,1) + . Set RappelDatum=$LG(lbRappel,2) + . Set:(RappelDatum="") RappelDatum=+$H + . Set sc=$S(KLNr>0:$$$OK, 1:$$$ERROR($$$GeneralError,"RappelPrintOMR : KLNr is ongeldig. Kan de method niet uitvoeren (KLNr="_$G(KLNr)_")")) + . Do:($$$ISOK(sc)) AddSeqItemRappelNrInc(TSeq,KLNr,RappelDatum) + Quit sc +fpoRappelSplitDataDefs(lbDefs,arDataDefs) ; arDataDefs als .local doorgeven + ; Split up lbRappels into "Intern" and "Extern" for PPOD + New lbRappels,i + Set lbRappels=$LG(lbDefs,4) + Kill arDataDefs + For i=1:1:$LL(lbRappels) Do + . Set $LI(lbDefs,4)=$LB($LI(lbRappels,i)) + . Set arDataDefs(i)=lbDefs + Quit + + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// PrijsLijst : Print with OMR = add to PPOD: + /// - Save Xml (input) to file + /// - Render To PPOD +PrijsLijstSaveXmlRenderToPPOD + Set sc=$$PrijsLijstSaveXmlRenderToPPODSub() + Quit +PrijsLijstSaveXmlRenderToPPODSub() + #define FullPath(%f,%d) ##class(%File).NormalizeDirectory(%d)_%f + + New Task,TSeq,CntDocMain,Doc,sc,FilePath + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + // Save DataIn To File via PreProcess: + Set FilePath=$$$FullPath(Task.ActionFile.DocName,Task.ActionFile.DocPath) + Set CmdLine="Set sc=##class(BL.Sys.FOP.DocBase).SaveDataInToFilePPC(SeqItem,TSeq,"""_FilePath_""")" + Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,,1, CmdLine,1) + Quit sc + + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + +FaxRenderToPPODMergeAndSend + Set sc=$$FaxRenderToPPODMergeAndSendSub() + Quit +FaxRenderToPPODMergeAndSendSub() + New Task,TSeq,CntDocMain,sc,DocM,pxDocMulti,DocKey,Doc, PPODGroupName,PPODFilePath,FaxFilePath,DestDir,DestName,FExt,CmdLine + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set pxDocMulti=Task.DocMulti + Set:('$IsObject(pxDocMulti)) sc=$$$ERROR($$$GeneralError,"FaxTask does not contain a DocMulti-object. Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + // Prepare Variables + Set PPODGroupName=pxDocMulti.PPODGroupName + Set PPODFilePath=##class(BL.Sys.FOP.CommonTasks).BuildPPODFilePath(PPODGroupName,pxDocMulti.PPODOutputType) + Set blnSkipVoorblad=(pxDocMulti.MetVoorblad=0) + + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + // Build SeqItem to render Docs + Set DocKey="" + For Set Doc=pxDocMulti.Docs.GetNext(.DocKey) Quit:(DocKey="") Do + . Do frsSetPPODFields(Doc,PPODGroupName,DocKey) + . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0) + + // SeqItem to render voorblad. Calc PageCount in advance in case of PROXY-voorblad + Set Doc=pxDocMulti.RenderVoorblad + If ('blnSkipVoorblad)&&($IsObject(Doc))&&($L(Doc.DataFetchType)) Do + . Do frsSetPPODFields(Doc,PPODGroupName,$$$Max(pxDocMulti.Docs.Next("")-1,0)) + . // Build SeqItem to render voorblad + . If (Doc.DataFetchType="PROXY") Do + . . // AddRenderParams Voorblad via PreProcess: Execute Just-In-Time + . . Set CmdLine="Set sc=##class(Sys.FOP.emDocMulti).AddVoorbladRenderParamsVT(TSeq.Task,SeqItem,1)" + . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0, CmdLine,0) + . Else Do + . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0, "", 1) + + // Build Cach�-SeqItem to clean up files before creating the .pdf file + Do AddSeqItemDeleteFiles(TSeq,$$$CvtFop2Ntw(PPODFilePath),0) + // Build SeqItem MergePPOD : create temp .pdf file + Do AddSeqItemMergePPODGroup(TSeq,PPODGroupName) + +#If ($$$UCase($$$Server)="CACHE02") + ;q sc +#EndIf + + // Build Cach�-SeqItem to rename/move the temp-file to FaxDir + Set FaxFilePath=pxDocMulti.GenerateFaxFilePath(PPODFilePath) + Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),(FaxFilePath),1) + + Do:(Task.ActionFax.DoNotSend)||('Task.ActionFax.FaxNr) WLFMT^vhDBG("SeqItem ""FaxSendPDF"" will be skipped! FaxNr="_Task.ActionFax.FaxNr_" Fax.DoNotSend="_Task.ActionFax.DoNotSend, "A") + Quit:(Task.ActionFax.DoNotSend)||('Task.ActionFax.FaxNr) sc + // Build Cach�-SeqItem to Send Fax via WS + Do AddSeqItemFaxSendPDF(TSeq,Task,1,FaxFilePath) + + Quit sc +frsSetPPODFields(Doc,PPODGroupName,SortKey) + New tmpLB + Set tmpLB=Doc.PPODFields + Set:($$$Trim($LG(tmpLB,10))="") $LI(tmpLB,10)=PPODGroupName + Set:($$$Trim($LG(tmpLB,9))="") $LI(tmpLB,9)=PPODGroupName + Set:($$$Trim($LG(tmpLB,8))="") $LI(tmpLB,8)=SortKey + ;d WL^vhDBG("tmpLB="_$$$LCVT(tmpLB)_" PPOD="_PPODGroupName) + Set Doc.PPODFields=tmpLB + Quit + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Fax a PDF file from disk: +SendFaxPDF + Set sc=$$SendFaxPDFSub() + Quit +SendFaxPDFSub() + New Task,PrinterName,PPODFilePath,PrintFilePath,DestDir,DestName,sc + New TSeq,SeqItem + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + ;Set CntDocMain=Task.Docs.Count() + ;Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + ;Quit:($$$ISERR(sc)) sc + ;Set Doc=Task.Docs.GetNext("") + Set:(Task.ActionFax.FilePath="") sc=$$$ERROR($$$GeneralError,"No SendFaxPDF-File specified in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Quit:('Task.ActionFax.FaxNr) $$$ERROR($$$GeneralError,"No valid FaxNr specified in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:(Task.ActionFax.DoNotSend) $$$OK + // Build Cach�-SeqItem to Send Fax via WS + Do AddSeqItemFaxSendPDF(TSeq,Task,0,) + Quit sc + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Render Docs from DocMulti - Save to files to TempDir - Create mail (fields+body) from pxVoorblad - Attach rendered files - remove files after SendMiniMail +DocMultiRenderAndMail + Set sc=$$DocMultiRenderAndMailSub() + Quit +DocMultiRenderAndMailSub() + New Task,TSeq,sc,pxDocMulti,DocKey,Doc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set pxDocMulti=Task.DocMulti + Set:('$IsObject(pxDocMulti)) sc=$$$ERROR($$$GeneralError,"MailTask does not contain a DocMulti-object. Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + // Prepare Variables + + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + + If 0, pxDocMulti.Docs.Count()=1 Do Quit sc + . Set Doc=pxDocMulti.Docs.GetNext("") + . Set FName=Doc.Tags.GetAt("TempFName") + . Set Task.ActionMail.Attachments=FName + . Do AddSeqItemRenderAndMail(TSeq,Task,Doc,0) + ; Else Do ... + + ; ... Render multiple Docs separately to temp dir + LoadAndMail SeqItem + Set FilesTempDir="" ; pxDocMulti.Propt + Set lbFileNames="" + Set lbFilePaths="" + // Build SeqItem to render Docs + Set DocKey="" + For Set Doc=pxDocMulti.Docs.GetNext(.DocKey) Quit:(DocKey="") Do + . Set (FName,FilePath)="" + . Set FName=Doc.Tags.GetAt("TempFName") + . Do ##class(BL.Flow.Basis.Doc).BuildFileData("TempMail", .FName,.FilesTempDir,.FilePath) + . Set lbFileNames=lbFileNames_$LB(FName) + . Set lbFilePaths=lbFilePaths_$LB(FilePath) + . Do AddSeqItemRenderAndFileVP(TSeq,Doc,$LB(FName,FilesTempDir),0) + + // Build SeqItem to Load Files from tempDir and send via mail + If 1 Do ; Send mail via Cach� (SendMiniMail) + . Set Task.ActionMail.Attachments=lbFilePaths + . Do AddSeqItemCacheMailFiles(TSeq,Task,,0) + Else Do ; Send mail via DocBase task (LoadFiles&Mail) + . Set Task.ActionMail.Attachments=lbFileNames + . Do AddSeqItemLoadFilesAndMail(TSeq,Task,lbFilePaths,0) + + // Build Cach�-SeqItem to clean up files before creating the .pdf file + For i=1:1:$LL(lbFilePaths) Do + . Do AddSeqItemDeleteFiles(TSeq, $LI(lbFilePaths,i),0) + Quit sc + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + /// Algemeen Document : Render and File: +DocRenderAndFile + Set sc=$$DocRenderAndFileSub() + Quit +DocRenderAndFileSub() + #define ErrorFopTaskHasNoDoc(%v) $$$ERROR($$$GeneralError,"At least one document must be supplied in Task "_%v_".") + New Task,TSeq,CntDocMain,sc + Set Task=FopTask ; FopProcess.TaskID + Quit:(Task.Docs.Count()=0) $$$ErrorFopTaskHasNoDoc($S($L(Task.%Id()):Task.%Id(), 1:Task)) + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Set sc=$$$OK + ;Do AddSeqItemRenderAndFile(TSeq,Task,,0) + Set DocKey="" + For Set Doc=Task.Docs.GetNext(.DocKey) Quit:(DocKey="") Do Quit:($$$ISERR(sc)) + . Do AddSeqItemRenderAndFile(TSeq,Task,Doc,0) + Quit sc + + /// Algemeen Document : Render and Print: +DocRenderAndPrint + Set sc=$$DocRenderAndPrintSub() + Quit +DocRenderAndPrintSub() + + New Task,TSeq,Doc,DocKey,sc + Set Task=FopTask ; FopProcess.TaskID + Quit:(Task.Docs.Count()=0) $$$ErrorFopTaskHasNoDoc($S($L(Task.%Id()):Task.%Id(), 1:Task)) + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Set sc=$$$OK + Set DocKey="" + For Set Doc=Task.Docs.GetNext(.DocKey) Quit:(DocKey="") Do Quit:($$$ISERR(sc)) + . Do AddSeqItemRenderAndPrint(TSeq,Task,Doc,0) + Quit sc + + /// Algemeen Document : Render and Mail: +DocRenderAndMail + Set sc=$$DocRenderAndMailSub() + Quit +DocRenderAndMailSub() + New Task,TSeq,CntDocMain,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Do AddSeqItemRenderAndMail(TSeq,Task,,0) + Quit sc + + /// Algemeen Document : Render and Ftp: +DocRenderAndFtp + Set sc=$$DocRenderAndFtpSub() + Quit +DocRenderAndFtpSub() + New Task,TSeq,CntDocMain,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + ; The resulted pdf-doc is saved to a temporary file. After this file is sent via FTP, it will be deleted. + Do AddSeqItemRenderAndFile(TSeq,Task,,0) + Set FtpSrcPath=Task.ActionFtp.FromPath + Do AddSeqItemFtpSendFile(TSeq,Task,0) + Do AddSeqItemDeleteFiles(TSeq,FtpSrcPath,0) + Quit sc + + /// Algemeen Document : Render and SaveToPPOD: + /// indien in PS-formaat, dan OMR-tekens toegevoegd bij Merge (afzonderlijke task) + /// indien in PDF-formaat, dan geen OMR-tekens toegevoegd. +DocRenderAndSaveToPPOD + Set sc=$$DocRenderAndSaveToPPODSub() + Quit +DocRenderAndSaveToPPODSub() + New Task,TSeq,CntDocMain,Doc,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Do AddSeqItemRenderAndSaveToPPOD(TSeq,Task,,0) + Quit sc + + /// Algemeen Document : Render and Ftp: +DocTransformXslt + Set sc=$$DocTransformXsltSub() + Quit +DocTransformXsltSub() + New Task,TSeq,CntDocMain,sc + Set Task=FopTask ; FopProcess.TaskID + Set sc=$$$OK + Set CntDocMain=Task.Docs.Count() + Set:(CntDocMain'=1) sc=$$$ERROR($$$GeneralError,"Only one document can be supplied in Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) + Quit:($$$ISERR(sc)) sc + Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) + Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker + Do AddSeqItemTransformXsltAndFile(TSeq,Task,,0) + Quit sc + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + + +AddSeqItemRenderAndFileVP(TSeq,Doc,lbFileDef,blnLogInfo) ; SqItem: DocBase + // Build SeqItem Render+File + New SeqItem,LogInfo + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+File","A","vh_renderAndSaveToFileProcessor") + Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) + Do asqAddParamsSaveTaskVP(SeqItem,$LG(lbFileDef,1),$LG(lbFileDef,2)) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemRenderAndFile(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase + // Build SeqItem Render+File + // Doc is optional: if not provided, then retrieve doc from Task + // Task should contain one Doc and the ActionFile + New SeqItem,LogInfo + Set:('$IsObject($G(Doc))) Doc=Task.Docs.GetNext("") + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+File","A","vh_renderAndSaveToFileProcessor") + Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) + Do asqAddParamsSaveTask(SeqItem,Task.ActionFile) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemRenderAndPrint(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase + // Build SeqItem Render+Print + // Doc is optional: if not provided, then retrieve doc from Task + // Task should contain one Doc and the ActionPrint + New SeqItem,LogInfo + Set:('$IsObject($G(Doc))) Doc=Task.Docs.GetNext("") + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+Print","A","vh_renderAndPrintProcessor") + Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) + Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemRenderAndSaveToPPOD(TSeq,Task,Doc,blnLogInfo,PreProcessCmdLine,AddRenderPNow) ; SqItem: DocBase + // Build SeqItem Render+SaveToPPOD + // Doc is optional: if not provided, then retrieve doc from Task + // Task should contain one Doc (?and the ActionPrint?) + New SeqItem,LogInfo + Set:('$IsObject($G(Doc))) Doc=Task.Docs.GetNext("") + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+SaveToPPOD","A","vh_renderAndSaveToPostprocoutdataProcessor",.PreProcessCmdLine) + Set:($G(AddRenderPNow,1)) sc=$$asqAddParamsRenderTask(SeqItem,Doc,) + Do asqAddParamsSaveToPPODTask(SeqItem) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemRenderAndMail(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase + // Build SeqItem Render+Mail + // Doc is optional: if not provided, then retrieve doc from Task + // Task should contain one Doc and the ActionMail + New SeqItem,LogInfo + Set:('$IsObject($G(Doc))) Doc=Task.Docs.GetNext("") + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+Mail","A","vh_renderAndEmailProcessor") + Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) + Do asqAddParamsMailTask(SeqItem,Task.ActionMail) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemLoadFilesAndMail(TSeq,Task,lbFileNames,blnLogInfo) ; SqItem: DocBase + // Build SeqItem LoadFiles+Mail (via DocBase) + // Task should contain the ActionMail + New SeqItem,LogInfo + Set:($G(blnLogInfo)) LogInfo="Files="_$$$LCVT(lbFileNames) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"MailFiles","A","vh_LoadAndEmailProcessor") + Do asqAddParamsLoadFilesTask(SeqItem,lbFileNames) + Do asqAddParamsMailTask(SeqItem,Task.ActionMail) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemCacheMailFiles(TSeq,Task,lbFileNames,blnLogInfo) ; SqItem: Cache + // Build SeqItem MailFiles (via Cach�) + // Task should contain the ActionMail + New SeqItem,LogInfo + Set:($G(blnLogInfo)) LogInfo="Files="_$$$LCVT(lbFileNames) + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"MailFiles") + Do asqAddParamsMailFiles(SeqItem,.lbFileNames,Task.ActionMail) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemTransformXsltAndFile(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase + // Build SeqItem XSLTransform+File + // Doc is optional: if not provided, then retrieve doc from Task + // Task should contain one Doc and the ActionFile + New SeqItem,LogInfo + Set:('$IsObject($G(Doc))) Doc=Task.Docs.GetNext("") + Set:($G(blnLogInfo)) LogInfo="DataDefs="_$$$LCVT(Doc.DataDefsLB) + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"XslTransform+File","A","vh_XSLTransformAndFileSequenceProcessor") + Set sc=$$asqAddParamsTransformXsltTask(SeqItem,Doc,) + Do asqAddParamsSaveTask(SeqItem,Task.ActionFile) + Set SeqItem.LogInfo=$G(LogInfo) + Quit + +AddSeqItemDocPrintToPPOD(TSeq,Task,Doc,blnLogInfo) + // !!! OLD NAME - New label is ... !!! + Do AddSeqItemRenderAndSaveToPPOD(.TSeq,.Task,.Doc,.blnLogInfo) + Quit +AddSeqItemMergePPODGroup(TSeq,PPODGroupName) ; SqItem: DocBase + // Build SeqItem MergePPOD to file + // Merge only the selected PPODGroup to a .pdf file + New SeqItem + Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"MergePPOD","A","vh_mergePollingConsumerSequenceProcessor") + Do asqAddParamsMergePPODTask(SeqItem,PPODGroupName) + Quit +AddSeqItemMergePPODviaTask(TSeq,Task,Doc,blnLogInfo) + /// Dit is toekomstmuziek ... + Do AddSeqItemMergePPODGroup(TSeq,Task.ActionMerge.PPODGroupName_NotImplementedYet) + Quit + +AddSeqItemDeleteFiles(TSeq,FilePattern,blnMustExist) ; SqItem: Cache + // Build Cach�-SeqItem to Delete file(s) matching the FilePattern + New SeqItem + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"DeleteFiles") + Do asqAddParamsDeleteFiles(SeqItem,.FilePattern,.blnMustExist) + Quit +AddSeqItemMoveFile(TSeq,FromPath,ToPath,blnMustExist) ; SqItem: Cache + // Build Cach�-SeqItem to Move a file from FromPath to ToPath + New SeqItem + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"MoveFile") + Do asqAddParamsMoveFile(SeqItem,.FromPath,.ToPath,.blnMustExist) + Quit +AddSeqItemFtpSendFile(TSeq,Task,blnLogInfo) ; SqItem: Cache + // Build Cach�-SeqItem to Send a File via FTP + // Task should contain the ActionFtp + New SeqItem,LogInfo + Set:($G(blnLogInfo)) LogInfo="Ftp from Path="_Task.ActionFtp.GetAt("FtpSendFile.FromPath") + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"FtpSendFile") + Do asqAddParamsFtpSendFile(SeqItem,Task.ActionFtp) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemFaxSendPDF(TSeq,Task,blnLogInfo,FilePath) ; SqItem: Cache + // Build Cach�-SeqItem to Send a PDF file via Fax (WS) + // Task should contain the ActionFax + New SeqItem,LogInfo + Set:($G(blnLogInfo)) LogInfo="Fax PDF to "_Task.ActionFax.FaxNr_" Subject="_Task.ActionFax.Subject + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"FaxSendPDF") + Do asqAddParamsFaxSendPDF(SeqItem,Task.ActionFax,.FilePath) + Set SeqItem.LogInfo=$G(LogInfo) + Quit +AddSeqItemFactuurPDFPathToGlobal(TSeq,Task,FANr,FactType) ; SqItem: Cache + // Build Cach�-SeqItem to fill in the ArchiveDir to the Global + ; !!! DEZE CODE IS QUICK AND DIRTY !!! + ; !!! ZOU VOLLEDIG MOETEN GEZUIVERD WORDEN. !!! + ; !!! ZE IS MOGELIJK NIET 100% FAIL-SAFE. !!! + New SeqItem,FilePath,CmdLine + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"ExecCacheCode") + Set FilePath=##class(%File).NormalizeDirectory(Task.ActionFile.DocPath)_Task.ActionFile.DocName + If $ZU(5)["DEV" Do + . Set FilePath=$TR($$$Replace(FilePath,"E:\FOP\PDFTest\Factuur\",""),"\","/") + Else Do + . Set FilePath=$TR($$$Replace(FilePath,$$$ArchiveDirFOP,""),"\","/") + ;w "FilePath (2): "_FilePath,! + Set CmdLine="Do ##class(BL.Flow.Factuur.Doc).ArchivePathToDoc("_FANr_","""_FactType_""","""_FilePath_""",1)" ; FANr As %String, FactType As %String = "F", FilePath As %String, blnOverwrite As %Boolean = 1 + Do asqAddParamsExecCacheCode(SeqItem,CmdLine) + Quit +AddSeqItemRappelNrInc(TSeq,KLNr,RappelDatum) ; SqItem: Cache + // Build Cach�-SeqItem to Increment the RappelNr + New SeqItem,CmdLine + Set SeqItem=$$asqCreateSeqItemCache(TSeq,"ExecCacheCode") + Set CmdLine="Do ##class(BL.Flow.Rappel.Doc).IncrementRappelNr("_KLNr_","""_RappelDatum_""")" + Do asqAddParamsExecCacheCode(SeqItem,CmdLine) + Quit + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + /// Objects : emSeqItem DocBase/Cach� - Create + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ +asqCreateSeqItemDocBase(TSeq,TaskName,CallType,ADBProcess,PreProcessCmdLine) + New SeqItem + Set SeqItem=TSeq.AddNewItem("DocBase") + Set SeqItem.OmsID=$G(TaskName) + Set SeqItem.CallType=$G(CallType,"A") + Set SeqItem.ADBProcess=ADBProcess + Set:($D(PreProcessCmdLine)) SeqItem.PreProcess=PreProcessCmdLine + Quit SeqItem +asqCreateSeqItemCache(TSeq,TaskName,PreProcessCmdLine) + New SeqItem + Set SeqItem=TSeq.AddNewItem("Cache") + Set SeqItem.OmsID=$G(TaskName) + Set:($D(PreProcessCmdLine)) SeqItem.PreProcess=PreProcessCmdLine + Quit SeqItem + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + /// Objects : emSeqItem DocBase - Fill + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + +asqAddParamsRenderTask(SeqItem,Doc,DocBaseTemplate) +#define SourceData $S(SeqItem.DataInType="Stream":SeqItem.DataInStream, 1:SeqItem.DataIn) + New blFOPData,lbXsltParams,sc + Set DocBaseTemplate=$G(DocBaseTemplate,Doc.TransformTemplate) + + /* * / + ; OLD METHOD (DEPRECATED) + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataRenderTask(SeqItem.ProptList,DocBaseTemplate,Doc.TransformType,Doc.Taal,Doc.XSLParameters) + Set sc=SeqItem.FetchDataFromDoc(Doc) ; Sets DataInType en DataIn (String or Stream) + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataRenderDataIn(SeqItem.ProptList,SeqItem.DataInType,$$$SourceData,) + /* */ + ; New Method : Use BL-objects to fetch data + Set blFOPData=##class(BL.Sys.FOP.DataMgr).Instantiate() + ;d WLIP^vhDBG(97,"asqAddParamsRenderTask: Task="_$$ObjToText^vhLib($G(Task))) + Do blFOPData.Init($G(Task)) + Do blFOPData.BuildXsltParams(Doc) + Do blFOPData.FetchData(Doc,SeqItem) + Set sc=blFOPData.ErrorStatus + If $$$ISOK(sc) Do + . Set lbXsltParams=blFOPData.RenderXsltParams + . Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataRenderTask(SeqItem.ProptList, DocBaseTemplate, Doc.TransformType, Doc.Taal, lbXsltParams) + . Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataRenderDataIn(SeqItem.ProptList, SeqItem.DataInType, $$$SourceData, ) + Do blFOPData.Close() + Set blFOPData="" + /* */ + Quit sc + +asqAddParamsTransformXsltTask +#define SourceData $S(SeqItem.DataInType="Stream":SeqItem.DataInStream, 1:SeqItem.DataIn) + New sc + ;Set sc=SeqItem.FetchDataFromDoc(Doc) ; Sets DataInType en DataIn (String or Stream) + ;Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataRenderDataIn(SeqItem.ProptList,SeqItem.DataInType,$$$SourceData,) + Quit sc + +asqAddParamsSaveTask(SeqItem,Action) + Do asqAddParamsSaveTaskVP(SeqItem,Action.DocName,Action.DocPath) + Quit +asqAddParamsSaveTaskVP(SeqItem,FileName,FileDir) + ;Set FilePath=##class(%File).NormalizeDirectory(FileDir)_FileName + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataSaveTask(SeqItem.ProptList,FileName,FileDir) + Quit +asqAddParamsSaveToPPODTask(SeqItem) + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataSaveToPPODTask(SeqItem.ProptList) + Quit +asqAddParamsMergePPODTask(SeqItem,PPODGroupName) + Quit:($G(PPODGroupName)="") + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataMergePPODTask(SeqItem.ProptList,.PPODGroupName) + Quit +asqAddParamsPrintTask(SeqItem,Action) + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataPrintTask(SeqItem.ProptList,Action.Printer,Action.Copies,Action.PapierLade) + Quit +asqAddParamsMailTask(SeqItem,Action) + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataMailTaskFromAction(SeqItem.ProptList,Action,) ; $$$FopMailFrom) + Quit +asqAddParamsLoadFileTask(SeqItem,FileName) ; FileName as %String + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataLoadTask(SeqItem.ProptList, $LB(FileName)) + Quit +asqAddParamsLoadFilesTask(SeqItem,lbFileNames) ; lbFileNames As %List + Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataLoadTask(SeqItem.ProptList,lbFileNames) + Quit + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + /// Objects : emSeqItem Cach� - Fill + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + +asqAddParamsDeleteFiles(SeqItem,FilePattern,blnMustExist) + // TaskName = DeleteFiles + Do SeqItem.Params.SetAt(FilePattern,"DeleteFiles.Pattern") + Do:($D(blnMustExist)) SeqItem.Params.SetAt(blnMustExist,"DeleteFiles.MustExist") + Quit +asqAddParamsMoveFile(SeqItem,FromPath,ToPath,blnMustExist) + /// TaskName = MoveFile + Do SeqItem.Params.SetAt(FromPath,"MoveFile.FromPath") + Do SeqItem.Params.SetAt(ToPath,"MoveFile.ToPath") + Do:($D(blnMustExist)) SeqItem.Params.SetAt(blnMustExist,"MoveFile.MustExist") + Quit +asqAddParamsMailFiles(SeqItem,lbFileNames,Action) +#define CvtToLB(%v) $S($$IsList^vhLib(%v):%v, $L(%v):$LB(%v), 1:"") + // TaskName = MailFiles + Set From=Action.From + Set:(From="") From=$$$FopMailFrom ; """PDF-service VH"" " ; ""VH Server F.O.P."" + Do SeqItem.Params.SetAt(From,"MailFiles.From") + Do SeqItem.Params.SetAt($$$CvtToLB(Action.Aan),"MailFiles.lbTo") + Do SeqItem.Params.SetAt(Action.Subject,"MailFiles.Subject") + Do SeqItem.Params.SetAt(Action.Body,"MailFiles.Body") + Do SeqItem.Params.SetAt($$$CvtToLB(Action.Attachments),"MailFiles.lbAttachNames") + Do SeqItem.Params.SetAt($$$CvtToLB(Action.CC),"MailFiles.lbCC") + Do SeqItem.Params.SetAt($$$CvtToLB(Action.BCC),"MailFiles.lbBCC") + Quit +asqAddParamsFtpSendFile(SeqItem,Action) + // TaskName = FtpSendFile + Do SeqItem.Params.SetAt(Action.FromPath,"FtpSendFile.FromPath") + Do SeqItem.Params.SetAt(Action.DestDir,"FtpSendFile.DestDir") + Do SeqItem.Params.SetAt(Action.DestFName,"FtpSendFile.DestFName") + Do SeqItem.Params.SetAt(Action.FtpServer,"FtpSendFile.FtpServer") + Do SeqItem.Params.SetAt(Action.UserName,"FtpSendFile.UserName") + Do SeqItem.Params.SetAt(Action.PassWord,"FtpSendFile.PassWord") + Do:(Action.Port'="") SeqItem.Params.SetAt(Action.Port,"FtpSendFile.Port") + Do:(Action.BinaryFtp'="") SeqItem.Params.SetAt(Action.BinaryFtp,"FtpSendFile.BinaryFtp") + Quit +asqAddParamsFaxSendPDF(SeqItem,Action,FilePath) + // TaskName = FaxSendPDF + Do SeqItem.Params.SetAt(Action.FaxNr,"FaxSendPDF.RcptNr") + Do SeqItem.Params.SetAt(Action.TAV,"FaxSendPDF.RcptName") + Do SeqItem.Params.SetAt(Action.SenderName,"FaxSendPDF.SenderName") + Do SeqItem.Params.SetAt(Action.Subject,"FaxSendPDF.Subject") + Do SeqItem.Params.SetAt(Action.OnErrorMailTo,"FaxSendPDF.ErrorMailTo") + Do SeqItem.Params.SetAt(Action.FaxLogGetObjectId(),"FaxSendPDF.ObjFaxLog") + Set FilePath=$G(FilePath,Action.FilePath) + Do:($L(FilePath)) SeqItem.Params.SetAt(FilePath,"FaxSendPDF.FilePath") + Quit +asqAddParamsExecCacheCode(SeqItem,CmdLine) + /// TaskName = ExecCacheCode + Do SeqItem.Params.SetAt(CmdLine,"ExecCacheCode.CmdLine") + Quit + + + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + /// Objects : emSeqItem Cach� - Process tasks + /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ + +ExecTaskDocBaseWS() + /*** Zie method RunTaskSequence() from class BL.Sys.FOP.Verwerker *** / + ... + Set sc=##class(DocBase).RequestFromTaskSeq(SeqItem,.fopReq) + Quit:('$IsObject($G(fopReq))) sc + Set sc=##class(DocBase).RunDocBaseWS(fopReq,SeqItem.CallType) + ... + /*** ***/ + +ExecCacheTask(SeqItem,TSeq) + New TaskName,oLog,msgData,msg + Set TaskName=SeqItem.OmsID + ;d WL^vhDBG("TaskSeq Item inside ExecCacheTask: TaskName="_TaskName_$$$CRLF_$$ObjToText^vhLib(SeqItem)) + If TaskName="DeleteFiles" Do + . Set sc=$$ectTaskDeleteFiles(SeqItem) + Else If TaskName="MoveFile" Do + . Set sc=$$ectTaskMoveFile(SeqItem) + Else If TaskName="MailFiles" Do + . Set sc=$$ectTaskMailFiles(SeqItem) + Else If TaskName="FtpSendFile" Do + . Set sc=$$ectTaskFtpSendFile(SeqItem) + Else If TaskName="FaxSendPDF" Do + . Set sc=$$ectTaskFaxSendPDF(SeqItem) + Else If TaskName="ExecCacheCode" Do + . Set sc=$$ectTaskExecCacheCode(SeqItem,TSeq) + Else Do + . Set sc=$$$ERROR($$$GeneralError,"ExecCacheTask() "_TaskName_" not implemented.") + ; Add To Log + If $$$ISOK(sc) Do + . Set oLog=##class(Sys.FOP.Logging).AddToLog("INFO","Cache","ExecCacheTask","Execute CacheTask ("_TaskName_") processed successful ~ Item "_$G(%TaskInfo("TSEQ-ITEMID"))) ; _" ~ "_"JobID: "_$G(fopJobID)_"; "_$G(ADBTempLog,"No Log.")) + Else Do + . Set msgData=$$ectGetErrorData() + . Set oLog=##class(Sys.FOP.Logging).AddErrorToLog("Cache","ExecCacheTask",sc,msgData,0) + Quit sc +ectGetErrorData() + Set msg="SeqItemCach� failed (TaskName="_TaskName_")." + Set msg=msg_$$$CRLF_"Status: "_$$ParseStatus^vhLib(sc) + Set:($L($G(%TaskInfo("TSEQID")))) msg=msg_$$$CRLF_"TaskSequence "_%TaskInfo("TSEQID")_" - Task "_$G(%TaskInfo("TASKID")) + Quit msg + +ectTaskDeleteFiles(SeqItem) + // Delete Files specified via File/Dir/Pattern + Set Pattern=SeqItem.Params.GetAt("DeleteFiles.Pattern") + Set blnMustExist=SeqItem.Params.GetAt("DeleteFiles.MustExist") + Set blnExists=##class(%File).Exists(Pattern) + If 'blnExists Do Quit sc + . Set sc=$S(blnMustExist:$$$ERROR($$$GeneralError,"File/Dir/Pattern does not exist: "_Pattern), 1:$$$OK) + ; Else : File/Dir exists --> delete it + Set Rslt=##class(%File).Delete(Pattern) + Quit:(Rslt) $$$OK + Quit $$$ERROR($$$GeneralError,"Could not delete file/dir/pattern: "_Pattern) +ectTaskMoveFile(SeqItem) + // Move or rename a file + Set FromPath=SeqItem.Params.GetAt("MoveFile.FromPath") + Set ToPath=SeqItem.Params.GetAt("MoveFile.ToPath") + Set blnMustExist=(+SeqItem.Params.GetAt("MoveFile.MustExist")) + Set blnExists=##class(%File).Exists(FromPath) + Quit:('blnExists) $S(blnMustExist:$$$ERROR($$$GeneralError,"File does not exist: "_FromPath), 1:$$$OK) + ; Else : File/Dir exists --> delete it + ; DirectoryExists + Set Rslt=##class(%File).Rename(FromPath,ToPath) + Quit:(Rslt) $$$OK + Quit $$$ERROR($$$GeneralError,"Could not move file from "_FromPath_" to "_ToPath) +ectTaskMailFiles(SeqItem) + // Send Mail with Files attached + #define AttachBinary 1 + New From,lbTo,Subject,Body,lbAttachments,lbCC,lbBCC, FirstItem + Set From=SeqItem.Params.GetAt("MailFiles.From") + Set lbTo=SeqItem.Params.GetAt("MailFiles.lbTo") + Set Subject=SeqItem.Params.GetAt("MailFiles.Subject") Set:(Subject="") Subject="-" + Set Body=SeqItem.Params.GetAt("MailFiles.Body") + Set BodyIsStream=0 + Set IsHTML=1 + Set lbAttachments=SeqItem.Params.GetAt("MailFiles.lbAttachNames") + If $LL(lbAttachments) Do + . Set FirstItem=$LG(lbAttachments,1) + . Quit:(FirstItem="")||($$IsList^vhLib(FirstItem)) + . ; Else make $LB() from each item. SendMiniMail() requires format $LB($LB(file1,1),$LB(file2,1),$LB(file3,1),...) + . For i=1:1:$LL(lbAttachments) Set:($LD(lbAttachments,i)) $LI(lbAttachments,i)=$LB($LI(lbAttachments,i),$$$AttachBinary) + Set ReplyTo="" + Set:(SeqItem.Params.IsDefined("MailFiles.lbCC")) lbCC=SeqItem.Params.GetAt("MailFiles.lbCC") + Set:(SeqItem.Params.IsDefined("MailFiles.lbBCC")) lbBCC=SeqItem.Params.GetAt("MailFiles.lbBCC") + Set sc=$$SendMiniMail^vhLib(From,lbTo,Subject,Body,BodyIsStream,IsHTML,,,lbAttachments,ReplyTo,lbCC,lbBCC) + H:($LL(lbAttachments)) 1 ; wait 1 second; allow SendMiniMail() to release the possible locks on the files + Quit sc + +ectTaskFtpSendFile(SeqItem) + // Send File to Ftp-Server + Set FromPath=SeqItem.Params.GetAt("FtpSendFile.FromPath") + ;Set blnMustExist=(+SeqItem.Params.GetAt("FtpSendFile.MustExist")) + ;Set blnExists=##class(%File).Exists(FromPath) + ;Quit:('blnExists) $S(blnMustExist:$$$ERROR($$$GeneralError,"File does not exist: "_FromPath), 1:$$$OK) + Set DestDir=SeqItem.Params.GetAt("FtpSendFile.DestDir") + Set DestFName=SeqItem.Params.GetAt("FtpSendFile.DestFName") + Set FtpServer=SeqItem.Params.GetAt("FtpSendFile.FtpServer") + Set FtpUser=SeqItem.Params.GetAt("FtpSendFile.UserName") + Set FtpPassword=SeqItem.Params.GetAt("FtpSendFile.PassWord") + Set:(SeqItem.Params.IsDefined("FtpSendFile.Port")) FtpPort=SeqItem.Params.GetAt("FtpSendFile.Port") + Set:(SeqItem.Params.IsDefined("FtpSendFile.BinaryFtp")) blnBinaryFtp=SeqItem.Params.GetAt("FtpSendFile.BinaryFtp") + ;set %DebugFtp=1 + Set sc=##class(BL.Sys.FOP.Test).FtpSend(FromPath,FtpServer,.FtpPort,FtpUser,FtpPassword,DestDir,DestFName,.blnBinaryFtp) + ;kill %DebugFtp + Quit sc +ectTaskFaxSendPDF(SeqItem,FilePath) + // Send .PDF to Fax Web Service. + // The returned status sc is the result of adding the .pdf to the Fax-queue. The final result is reported by mail. +#define CvtTapi2Ntw(%v) $$$CvtTapiC2Ntw($$$CvtTapiE2Ntw(%v)) +#define CvtTapiC2Ntw(%v) $$$Replace(%v,"C:\","\\tapi\c$\") +#define CvtTapiE2Ntw(%v) $$$Replace(%v,"E:\","\\tapi\e$\") + New RecipientNr,RecipientName,SenderName,Subject,FilePath,OnErrorMailTo,blnJobbed + Set RecipientNr=SeqItem.Params.GetAt("FaxSendPDF.RcptNr") + Set RecipientName=SeqItem.Params.GetAt("FaxSendPDF.RcptName") + Set:(SeqItem.Params.IsDefined("FaxSendPDF.SenderName")) SenderName=SeqItem.Params.GetAt("FaxSendPDF.SenderName") + Set:(SeqItem.Params.IsDefined("FaxSendPDF.Subject")) Subject=SeqItem.Params.GetAt("FaxSendPDF.Subject") + Set:(SeqItem.Params.IsDefined("FaxSendPDF.ErrorMailTo")) OnErrorMailTo=SeqItem.Params.GetAt("FaxSendPDF.ErrorMailTo") + Set:(SeqItem.Params.IsDefined("FaxSendPDF.ObjFaxLog")) FaxLogID=SeqItem.Params.GetAt("FaxSendPDF.ObjFaxLog") + Set blnJobbed=1 + + Set FilePath=$$$CvtTapi2Ntw($G(FilePath)) + Set:(FilePath="") FilePath=SeqItem.Params.GetAt("FaxSendPDF.FilePath") + Set sc=##class(BL.Sys.FOP.Test).FaxSendPDF(RecipientNr,RecipientName,.SenderName,.Subject,FilePath,.OnErrorMailTo,.FaxLogID, blnJobbed) + Quit sc +ectTaskExecCacheCode(SeqItem,TSeq) + // Execute some Cach� code + Set ExecCode=SeqItem.Params.GetAt("ExecCacheCode.CmdLine") + X ExecCode + Quit $$$OK + + \ No newline at end of file