BL.Sys.FOP.Common,BL.Flow.Doc.Common 1 BL.Flow.Docs.Basis,%RegisteredObject 0 rappel_01.00 DocType voor task-keywords (zie ook BL.Sys.FOP.Common.INC) RAPPEL Rappel R KyoceraFS4000 1 Rappels:%List %String Verhogen van de rappelnrs op de facturen. Wordt gewoonlijk opgeroepen nadat de gegenereerde rappel in de PPOD is bewaard. d ##class(BL.Flow.Rappel.Doc).IncrementRappelNr(9612,+$H) 1 KLNr:%String,RappelDatum:%Date 999999)||('FANr) Do . Set Rec=^KKL(KLID,FANr) . Set DocType=$S((FANr>99999)||(FANr<99000):"D",1:$P(Rec,"\",1)) ; Factuur, CreditNota, Wissel of Diverse, . Quit:$$INTDATE^vhDTyp($P(Rec,"\",2))'0:0,DagenVervallen'<0:1,1:0) . Quit:'IsVervallen . Lock +^KKL(KLID,FANr) . Set $P(^KKL(KLID,FANr),"\",8)=$P(^KKL(KLID,FANr),"\",8)+1 ; Increment rappelnr van factuur . Lock -^KKL(KLID,FANr) Quit ]]> Nagaan of deze klant een rappel heeft. HasRappel en RappelType als .local doorgeven; als HasRappel=0 dan is RappelType="" d ##class(BL.Flow.Rappel.Doc).CheckRappel(3294,+$H,.HasRappel,.RappelType,.MaxRappel) zw HasRappel,RappelType,MaxRappel 1 999999)||('FANr) Do . Set Rec=^KKL(KLID,FANr) . Set DocType=$S($E(FANr,1,2)=99:"D",1:$P(Rec,"\",1)) ; Factuur, CreditNota, Wissel of Diverse, . Quit:$$INTDATE^vhDTyp($P(Rec,"\",2))>RappelDatum ; Factuurdatum, alleen oudere facturen . Set DagenVervallen=RappelDatum-$$INTDATE^vhDTyp($P(Rec,"\",3)) ; Vervaldatum . Set FactSaldo=$S($P(Rec,"\",1)="C":-1,1:1)*$P(Rec,"\",5) . Set IsVervallen=$S(FactSaldo'>0:1,DagenVervallen'<0:1,1:0) . Set TotaalOpenstaand=TotaalOpenstaand+FactSaldo ; TotaalOpenstaandSaldo . Quit:'IsVervallen . If ..IsBetwist($P(Rec,"\",23)) Set EenBetwist=$$$Max(..IsBetwist($P(Rec,"\",23)),EenBetwist) . Else Set EenNietBetwist=1 . Set TotaalVervallen=TotaalVervallen+FactSaldo ; Totaal VervallenSaldo . Set:(FactSaldo>0)&&(MaxRappel<($P(Rec,"\",8)+1)) MaxRappel=($P(Rec,"\",8)+1) ; Aantal rappels + 1, behalve voor terugbetalingen (creditnotas en diverse) . Set:(FactSaldo>0)&&(DagenVervallen>MaxDagenVervallen) MaxDagenVervallen=DagenVervallen . Set:($P(Rec,"\",5)=$P(Rec,"\",4)) EenNietBetaald=1 ; Factuur is vervallen en er is nog GEEN deel van betaald . Set:$P(Rec,"\",3)'=$P(Rec,"\",2) EenNietRembours=1 . Set:(DocType="F")&&($P(Rec,"\",3)=$P(Rec,"\",2)) EenRembours=1 Set:($P(^KKL(KLID,3),"\",1)+$P(^KKL(KLID,3),"\",2))=0 EenNietRembours=1 Set HasRappel=MaxRappel&&(TotaalVervallen>0) ; Vervallen en vervallen saldo > 0 ; negatieve saldos worden niet afgedrukt Set:(HasRappel) RappelType=..RappelType(KLNr, MaxDagenVervallen, MaxRappel, TotaalVervallen, EenRembours, 'EenNietBetaald, $S(EenBetwist>1:EenBetwist,1:EenBetwist&&'EenNietBetwist)) ;Set:(HasRappel) RappelType=..RappelType(KLNr, MaxDagenVervallen, MaxRappel, TotaalVervallen, 'EenNietRembours, 'EenNietBetaald, EenBetwist&&'EenNietBetwist) ;w !,"MaxDagVerval:",MaxDagenVervallen," MaxRappel:",MaxRappel," TotVerval:",TotaalVervallen," HasRem:",EenRembours," NietRem:",'EenNietRembours," NietBet:",'EenNietBetaald," Betwist:",EenBetwist&&'EenNietBetwist Quit ]]> 1 Type D ##class(BL.Flow.Rappel.Doc).TestRappel(1385,+$H) 1 KLNr:%String,RappelDatum:%Date D ##class(BL.Flow.Rappel.Doc).TestRappelsLogToGlobal() Alle klanten afgaan en kijken of ze vervallen facturen hebben. 1 RappelDatum:%Date 3:0,1:MaxRappel),KLID)="" ; global ^KKX invullen dit voor het achteraf ophogen van de rappelnrs. . Set ^wvRappel($S(RappelType="":"*",1:RappelType),KLID)="" . Set ^wvRappel($S(RappelType="":"*",1:RappelType))=$G(^wvRappel($S(RappelType="":"*",1:RappelType)))+1 Quit ]]> D ##class(BL.Flow.Rappel.Doc).PrintRappels() Alle klanten afgaan en kijken of ze vervallen facturen hebben. 1 RappelDatum:%Date,blnIncRappel:%Boolean=1 D ##class(BL.Flow.Rappel.Doc).CheckAndPrintRappel(KLNr) Voor de gegeven klant de rappel genereren. Eerst wordt gecontroleerd of de klant vervallen facturen heeft. 1 KLNr,RappelDatum:%Date,blnIncRappel:%Boolean=0 D ##class(BL.Flow.Rappel.Doc).PrintRappel(1385,+$H,) Eerst controleren of de klant een rappel moet krijgen: Do ..CheckRappel(...) 1 KLNr:%String,RappelDatum:%Date,RappelType:%String="",blnIncRappel:%Boolean=0 %Status De Rappel genereren (render PS) + Save to PostProcOutData Oproepen via : s sc=##class(BL.Flow.Rappel.Doc).PrintToPPOD(1385,+$H,"E","") w sc,! 1 KLNr:%String,RappelDatum:%Date,blnIntern:%Boolean,blnExtern:%Boolean,RappelType:%String,blnIncRappel:%Boolean=0 %Status Creeren van de rappel voor een klant en bewaren als .pdf bestand. FilePath: ofwel volledig path (dir + fname) meegeven, ofwel als .local doorgeven (dir of fname, of leeg) Eerst controleren of de klant een rappel moet krijgen: Do ..CheckRappel(...) Zie method BuildProxyDocs() voor beschrijving van de parameters. 1 %Status 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 1 KLNr:%String,RappelDatum:%String,Exemplaar:%String,RappelType:%String,MailTo:%String,Subject:%String,Body:%String,FileName:%String,MailFrom:%String %Status Rechtstreeks afdrukken van de rappel voor een klant Zie method BuildProxyDocs() voor beschrijving van de parameters. 1 KLNr:%String,RappelDatum:%String,Exemplaar:%String,RappelType:%String,blnIncRappel:%Boolean=0,PrinterName:%String %Status Genereert de XML voor list lbDocs en geeft deze terug via DataStream DataStream als .local doorgeven. 1 %Status initiator ;Set sc=pxDoc.XMLExportToStream(.DataStream,"DOCS","literal,indent") Quit sc ]]> Debug Tool Genereert de XML voor list lbDocs en bewaart deze in de opgegeven file (path/dir moet reeds bestaan) Oproepen via : s FP="\\Cache02\c$\Temp\RappelList_" s sc=##class(BL.Flow.Rappel.Doc).FopXMLToFile(FP_$P($H,",",2)_".xml", $LB($LB(7511,+$H,"E"))) w sc,! 1 FileName:%String,lbDocs:%List %Status
]]>
1 BL.Flow.Proxy.pxFlowDocs
1 Regio:%String,Exemplaar:%String,SpecialPrintGroep:%String="" %String 1 KLNr:%String,MaxVervalDagen,MaxRappel,OpenstaandSaldo,AllenRembours,AllenDeelsBetaald,AllenBetwist %String 0 Set Type=$$$rapKeySaldoNeg Else If AllenDeelsBetaald Set Type=$$$rapKeyDeelsBetaald Else If MaxVervalDagen'<$$$rapMaxVervallen Set Type=$$$rapKeyMaxVervallen Else If MaxRappel'<$$$rapMaxRappel Set Type=$$$rapKeyMaxRappel Else If AllenBetwist Set Type=$S(AllenBetwist>1:$$$rapKeyBetalingOnderweg,1:$$$rapKeyBetwist) ;AllenBetwist: 1 = op 1 factuur, 2 = alle facturen Else If AllenBetwist Set Type=$$$rapKeyBetwist Else If AllenRembours Set Type=$$$rapKeyRembours Quit Type ]]> Geeft de standaard Keywords terug op basis van de opgegeven AnalyseRoutine 1 DocType:%String,AnalyseRoutine:%String %String XSLT-parameters voor RenderDoc berekenen. Geeft een $LB() terug. Bvb: $LB("pWithLogo=0","pWithBgColors=1") 1 lbXsltParams:%List,pWithLogo:%Boolean=0,pWithBgColors:%Boolean="" %List Create Task-object AnalyseRoutine is een verplichte parameter Keywords is optioneel. Bij voorkeur ";"-gescheiden UserID is optioneel. Keywords en UserID worden berekend indien niet gedefinieerd. 1 AnalyseRoutine:%String,Keywords:%String,UserID:%String Sys.FOP.Task De render-data toevoegen aan het Doc. 1 Doc:Sys.FOP.emDoc,DataInVia:%String,DataIn,Template:%String,TransformType:%String="PDF",lbPPODKeywords:%List,lbXsltParams:%List,blnIncRappel:%Boolean %Status De render-data ophalen, i.e. invullen in de parameters (als .local doorgeven). 1 %Status De render-data toevoegen aan het Doc. Alleen gebruiken wanneer de data van het document gedefinieerd is via lbDocs, i.e. xml wordt pas later gegenereerd via method GetFopXML() 1 Doc:Sys.FOP.emDoc,lbDocs:%List,Template:%String,TransformType:%String="PDF",lbPPODKeywords:%List,pWithLogo:%Boolean,blnIncRappel:%Boolean %Status 1 KLNr:%String,RappelDatum:%String,Exemplaar:%String,RappelType:%String,Extension:%String="pdf" %String DocRef kan ofwel KLNr zijn, ofwel lbDocs (list) Target: File, FileWWW, FileWWWUrl, TempFTP, Mail, TempMail 1 Create Task-object 1 lbRappels:%List,TransformType:%String,blnIncRappel:%Boolean=0 1 Sys.FOP.Task Run an existing FOPTask s sc=##class(BL.Sys.FOP.Test).RunFopTask(tsk,RunMode) w $$ParseStatus^vhLib(sc) 1 FopTask:Sys.FOP.Task,RunMode:%String,Priority:%String 1 %Status