#include %occInclude #include vhLib.Macro #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["SendFileToFtp" Do . . Do SendToFtpServer . . Else If FopTask.AnalyseRoutine["DocTransformXslt" Do ; Is nog niet afgewerkt : AddParams voor TransformXsltTask ontbreekt nog (Task.ActionFtp nodig) . . 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 /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ /// Algemeen bestand : Send via Ftp: SendToFtpServer Set sc=$$SendToFtpServerSub() Quit SendToFtpServerSub() // Twee mogelijke implementaties : // 1. te verzenden bestand opvragen via Task.ActionFtp.FromPath // 2. te verzenden bestand(en) opvragen via Task.Docs (ListOfObjects) --> kan meerdere files verzenden) // Momenteel is enkel deel 1 aanwezig // New Task,TSeq,CntDocMain,sc Set Task=FopTask Set sc=$$$OK 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 FtpSrcPath=Task.ActionFtp.FromPath Do AddSeqItemFtpSendFile(TSeq,Task,0) If Task.ActionFtp.DeleteAfterSend { Do AddSeqItemDeleteFiles(TSeq,FtpSrcPath,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) If Task.ActionFtp.DeleteAfterSend { 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,ArchiveMainDir,CmdLine Set SeqItem=$$asqCreateSeqItemCache(TSeq,"ExecCacheCode") Set FilePath=##class(%File).NormalizeDirectory(Task.ActionFile.DocPath)_Task.ActionFile.DocName Set ArchiveMainDir=##class(BL.Flow.Factuur.Doc).GeefArchiveMainDir() Set FilePath=$TR($$$Replace(FilePath,##class(%File).NormalizeDirectory(ArchiveMainDir),""),"\","/") ;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,) ; of ;Do ##class(BL.Sys.FOP.WSRequestInfo2).AddSeedDataLoadTask(SeqItem.ProptList, $LB(inXML)) 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