1 BL.Sys.FOP.TaskMgr 0 klantficheNotStapled_01.01 klantficheStapled_01.01 klantficheNotStapled_01.01 DocType voor task-keywords : FACTUUR, LEVBON, OFFERTE, ORDER, TOELEV, PRIJSLIJST, RAPPEL, TRANSPORTLIJST (zie ook BL.Sys.FOP.Common.INC) KLANTFICHE KlantFiche ? BrotherBoekH This parameter should be overridden if the BuildProxy() method is in a different BL-class BL.Derde.KlantInfoXML Print with stapling : split up the list lbKLNrs into separate docs, but keep them in one task. The "RenderAndPrintDoc()" method creates a new Task when NumDocs exceeds the MaxDocsPerTask 20 FileURL : als .local doorgeven enkel de FileName doorgeven indien gewenst, anders wordt deze ge-default. het volledige pad (server+dir+filename) wordt in URL-vorm teruggegeven 1 %Status lbKLNrs mag ook een ";"-delimited-list zijn, dus lbKLNrs = 4682;1000;4645 wordt omgezet naar $LB(4682,1000,4645) Oproepen via : s sc=##class(BL.Derde.KlantInfoDoc).RenderAndFileDoc($LB(4682,1239),0,"PERS;ADR;UITZ;FIN;INTERN;EC;POT","\\Cache02\c$\Temp\KlantFicheTest.pdf") 1 %Status 1:"_multi", 1:"") Set blKF=..Instantiate() Do blKF.Init(DocRef,) Set blKF.ADBTemplate=..#ADBTemplateNotStapled Set blKF.lbDocs=$LB(lbKLNrs,SkipMainAddress,Options) Set blKF.TransformType="PDF" Set blKF.lbPPODKeywords=$LB() Do blKF.XsltParams.SetAt($G(pWithLogo,1),"pWithLogo") Do blKF.XsltParams.SetAt(pFicheIntern,"pFicheIntern") Set blKF.Options=$G(objSettings) If blnFileWWW Do . Set sc=blKF.BuildTaskRenderAndFileWWW(.FilePath,.FileURL) ; returns mod FileURL Else Do . Set sc=blKF.BuildTaskRenderAndFile(.FilePath,) Set Task=blKF.FopTask Do blKF.Close() Set blKF="" Set:($$$ISOK(sc)) sc=##class(BL.Sys.FOP.CommonTasks).RunFopTask(Task,$$$rmInLine) ; $$$rmBatch ; $$$rmSync Quit sc ]]> Slechts één KLNr meegeven, dus geen $LB() of ";"-delimited list 1 KLNr:%List,SkipMainAddress:%String,Options:%String,pFicheIntern:%Boolean=0,MailTo:%String,Subject:%String,Body:%String,FileName:%String,MailFrom:%String %Status Test method (by WimV Oproepen via : s sc=##class(BL.Derde.KlantInfoDoc).TestPrint() w sc,! 1 %Status lbKLNrs moet een $LB() zijn! bvb. $LB(4682,1000,4645) Het aantal elementen van de $LB() mag groter zijn dan ..#MaxDocsPerTask (class parameter) Deze method splitst grote lijst op in blokken 1 lbKLNrs:%List,SkipMainAddress:%String,Options:%String,pFicheIntern:%Boolean=0,PrinterName:%String,blnStapling:%Boolean=0,PapierSoort:%String="GEEL",pWithLogo:%Boolean=1 %Status BEHALVE BIJ blnStapling=1 !!! dan moet de $LB() opgesplitst worden via de method ..RenderAndPrintDocMulti() Oproepen via : s sc=##class(BL.Derde.KlantInfoDoc).RenderAndPrintDoc($LB(1000,1239),0,OptSq,0,"LEVBON_ORGALUX",1,"GEEL",1) w sc,!]]> 1 lbKLNrs:%List,SkipMainAddress:%String,Options:%String,pFicheIntern:%Boolean=0,PrinterName:%String,blnStapling:%Boolean=0,PapierSoort:%String="GEEL",pWithLogo:%Boolean=1 %Status 1:"_multi", 1:"") // OPGELET bij blnStapling=1 : // als $LL(lbKLNrs) > MaxDocsPerTask , dan moet de $LB() eerst opgesplitst worden in verschillende chunks --> gebruik hiervoor de method ..RenderAndPrintDocMulti() Set blKF=..Instantiate() Do blKF.Init(DocRef,) Set blKF.lbDocs=$LB(lbKLNrs,SkipMainAddress,Options) Set blKF.TransformType="PS" Set blKF.lbPPODKeywords=$LB() Do blKF.XsltParams.SetAt(pWithLogo,"pWithLogo") Do blKF.XsltParams.SetAt(pFicheIntern,"pFicheIntern") Set blKF.Options=$G(objSettings) Set:($L($G(PrinterName))) blKF.Printer=PrinterName Set NumCopies=1 ; $G(NumCopies,1) // Tray select Set pTraySelect=##class(BL.Sys.FOP.CommonTasks).GetPrinterTray(blKF.Printer,PapierSoort,"TRAY") Do blKF.XsltParams.SetAt(pTraySelect,"pTraySelect") // Stapling settings Set StaplingMode=(''blnStapling) Set pStaplingConfig=##class(BL.Sys.FOP.CommonTasks).GetStaplingConfig(blKF.Printer,.StaplingMode,"2") Do blKF.XsltParams.SetAt(pStaplingConfig,"pStaplingConfig") Set blKF.ADBTemplate=$S(StaplingMode="":..#ADBTemplateNotStapled, 1:..#ADBTemplateStapled) If $L(StaplingMode) Do . // Create Task and ActionPrint . Set blKF.FopTask=blKF.CreateFopTask("DocRenderAndPrint",,) . Set Task=blKF.FopTask . Set sc=Task.AddActionPrint(blKF.Printer,NumCopies,,) . Quit:($$$ISERR(sc)) . // Beperk aantal items in de $LB() tot MaxDocsPerTask, zodat het Task-object hieronder niet te groot wordt. . Set MaxDocsPerTask=..#MaxDocsPerTask . Set lbKLNrs=$LI(lbKLNrs,1,MaxDocsPerTask) . // Opsplitsen in telkens 1 Doc per KLNr. . For i=1:1:$LL(lbKLNrs) Do Quit:($$$ISERR(sc)) . . Set blKF.lbDocs=$LB($LB($LI(lbKLNrs,i)),SkipMainAddress,Options) . . Set sc=blKF.DocSetRenderDefs(Task.AddDoc(), ) Else Do . // Create Task (all-in-one) . Set sc=blKF.BuildTaskRenderAndPrint(blKF.Printer,NumCopies) . Set Task=blKF.FopTask // Run FopTask Do blKF.Close() Set blKF="" Set:($$$ISOK(sc)) sc=##class(BL.Sys.FOP.CommonTasks).RunFopTask(Task,$$$rmBatch) ; $$$rmBatch ; $$$rmSync Quit sc ]]> Slechts één KLNr meegeven, dus geen $LB() of ";"-delimited list 1 KLNr:%List,SkipMainAddress:%String,Options:%String,pFicheIntern:%Boolean=0,FtpServer:%String,DestDir:%String,DestFName:%String %Status Specifieke render-data invullen. Deze method kan in de afgeleide klasse overschreven worden voor specifieke uitbreidingen. %Status