ATKEDI11708 ;ATK verwerking EDI voor klant 11708 Bruynzeel [ 11/27/2003 11:05 AM ] ;Electronic Data Interchange // Indien meer dan ?? facturen naar Bruynzeel te verzenden, dan opsplitsen in meerdere mails (om OVERLOAD van Sys.FOP.Task te vermijden) // Added by WimV on 31/03/2010 #define MaxFactPerMail 30 ; Verwerking van de facturen FACTUUR New KLNr,FANr,Dev,Dir,File,Status,EMailFrom,EMailTo,Subject,Body,Error,MailId Do INIT Do:$D(^KFBEDI("F",KLNr)) . Do FETCH(.FANr) . Quit:'$O(FANr("")) . Set Dev=$$SAVE(Dir,File,.FANr) . Quit:0[Dev . Set Status=$$SendMiniMail^vhLib(EMailFrom,EMailTo,Subject,Body,,,,,$LB($LB(Dev,0))) . If Status'=1 Do ; Er is een probleem bij het versturen van de E-mail . . Set Error=$$ParseStatus^vhLib(Status) . . Set Txt(1)=KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2) . . Set Txt(2)="~~Het bestand "_File_" (de facturen van "_DT_")" . . Set Txt(3)="~is niet verzonden." . . Set Txt(4)="~~Error : "_Error . . Set Ref(1)="KL\"_KLNr_"\R\" . . Set MailId=$$SYSTEM^vhMAIL("","Edi facturen","Errorstatus","SYS",.Txt,.Ref,1,1) . Else Do MailPDF(EMailFrom,$LI(EMailTo),.FANr),CLEAN(KLNr,.FANr) . Do LOG(KLNr,File,.FANr,$G(Error)) Quit ; Data ophalen en formateren FETCH(FANr) New FactDate,TeBet,CustOrdNr Set FANr="" For Set FANr=$O(^KFBEDI("F",KLNr,FANr)) Quit:FANr="" Do . Set R=^KFA("F",FANr,0,0) . If $P(R,D,2)'="F" Kill ^KFBEDI("F",KLNr,FANr) Quit ; Creditnota . Set FactDate=$P(R,D,6),TeBet=$P(R,D,12),CustOrdNr=$$CUSTORDNR(FANr) . Set R=FANr_";"_$TR($$CONVDATE^vhDTyp(FactDate,"DK","DK4"),"-",".") . Set R=R_";"_CustOrdNr_";"_$$EXTNUM^vhDTyp(TeBet,0,"",2) . Set FANr(FANr)=R Quit ; Data wegschrijven op Notes-server SAVE(Dir,File,FANr) New R,Dev Set Dev=$$OPEN^vhDEV(Dir,File,"W","MX",30) ; Bestanden ouder dan 30 werkdagen opkuisen Do:0'[Dev . Use Dev . Set FANr="" . For Set FANr=$O(FANr(FANr)) Quit:FANr="" Do . . Set R=FANr(FANr) . . Write R,! . Close Dev Quit Dev ; Mail van de facturen MailPDF(EMailFrom,EMailTo,FANr) New DefData,FANrs,TotalFact,FactCount,Betreft,MailCount,MaxFact Set DefData("em")=EMailTo,DefData("BackGround")=1,DefData("Van")=EMailFrom,DefData("TextId")="SIKF" ;Set DefData("bcc")="wv@vanhoecke.be" ; Added by WimV on 31/03/2010 Set DefData("bcc")="verhulst.paul@telenet.be" ; Added by WimV on 31/03/2010 (Updated mail address on 19/04/2010) ; Een mail per factuur ;Set FANr="" ;For Set FANr=$O(FANr(FANr)) Quit:FANr="" Do AUTO^DCPRINT("F",FANr,"Mail",,.DefData) ; Een mail in bulk ; ; Hoeveel facturen zijn er door te sturen Set Betreft="Facturen "_$$EXTDATE^vhDTyp()_" Mail: ",MaxFact=$$$MaxFactPerMail,FANr="",TotalFact=0 For Set FANr=$O(FANr(FANr)) Quit:FANr="" Set TotalFact=TotalFact+1 ; Doorsturen in blokken van de aangegeven MaxFact Set FANr="",(FactCount,MailCount)=0 For Set FANr=$O(FANr(FANr)) Quit:FANr="" Set FANrs(FANr)="",FactCount=FactCount+1 Do:'(FactCount#MaxFact)!($O(FANr(FANr))="") . Set MailCount=MailCount+1,DefData("Betreft")=Betreft_MailCount_"/"_(TotalFact\MaxFact+''(TotalFact#MaxFact)) . Do AUTO^DCPRINT("F",.FANrs,"Mail",,.DefData) . Kill FANrs . Set FactCount=0 Quit INIT Set KLNr=11708 set Dir=##class(TECH.Files).AppendSubPath(##Class(TECH.Config.ConfigMgr).Instance().GetString("MSMGATEWAY"),"\EDIBKK\") Set File=KLNr_"F"_$$EXTDATE^vhDTyp(,"DKN")_".CSV" Set EMailFrom="ediklant@VanHoecke.be" Set EMailTo=$LB("ikf@bruynzeel.com") ;$LB("HSatnarain@bruynzeel.com") -- aangepast PV 27/08/08 Set Subject="Facturen "_DT,Body="" Quit ; Opkuisen van het Edi-bakje CLEAN(KLNr,FANr) Set FANr="" For Set FANr=$O(FANr(FANr)) Quit:FANr="" Kill ^KFBEDI("F",KLNr,FANr) Quit ; Invullen van de log in ^ATK("EDI" LOG(KLNr,File,FANr,Error) New Log Set (FANr,Log)="" For Set FANr=$O(FANr(FANr)) Quit:FANr="" Set Log=Log_";"_FANr Set $E(Log)="",Log=File_"#"_Log_"#"_Error Set ^ATK("EDI","L",KLNr,"E",$H)=Log Quit ; Bepalen van het klanten ordernummer uit de orderreferentie van de factuur CUSTORDNR(FANr) New R,BONNr,BLNr,CustOrdNr,OrdRef Set CustOrdNr="" Do:$D(^KFA("F",FANr)) . Set BONNr="U" . For Set BONNr=$O(^KFA("F",FANr,BONNr)) Quit:$E(BONNr)'="U" Do Quit:$L(CustOrdNr) . . Set BLNr=100 . . For Set BLNr=$O(^KFA("F",FANr,BONNr,BLNr)) Quit:'BLNr Do Quit:$L(CustOrdNr) . . . Set R=^KFA("F",FANr,BONNr,BLNr) . . . Quit:$P(R,D,17)'="KF5" ; bevat geen orderreferentie . . . Set R=$P(R,D,5),OrdRef=$P(R," - ",3) . . . For Quit:OrdRef="" Quit:$E(OrdRef,$L(OrdRef))'=" " Set $E(OrdRef,$L(OrdRef))="" . . . Set CustOrdNr=$P(OrdRef," ",$L(OrdRef," ")) If $E(CustOrdNr)=7 Set CustOrdNr=$E(CustOrdNr,1,7),CustOrdNr=CustOrdNr_$J("",7-$L(CustOrdNr)) If $E(CustOrdNr)=5 Set CustOrdNr=$E(CustOrdNr,1,6),CustOrdNr=CustOrdNr_$J("",6-$L(CustOrdNr)) Quit CustOrdNr // Added by WimV on 17/02/2010 // // Function RESEND(lbFANrs) : // DE MAIL MET DE PDF-ATTACHMENTS VAN DE FACTUREN OPNIEUW VERSTUREN // // De lijst van de FANrs kan hard-coded opgebouwd worden (of doorgeven via Parameter) // Het e-mail adres kan (voor debugging) aangepast worden. ; Oproepen via: ; d RESEND^ATKEDI11708() RESEND(lbFANrs) New KLNr,FANr,Dev,Dir,File,Status,EMailFrom,EMailTo,Subject,Body,Error,MailId,i,arFANr // Build lijst van FactuurNrs (hard-coded of via parameter) If $G(lbFANrs)="" Do . Set lbFANrs=$LB(954109,954135) // Lijst van Cache02 dd 05/06/2009 . ;Set lbFANrs=$LB(134951,134952,134953,134954,134955,134956,134957,134958,134959,134960,134961,134962,134963,134964,134965,134966,134967,134968,134969,134970,134971,134972) . Set lbFANrs=$LB(134951,134952) // Array maken van de gegeven list Set arFANr="" For i=1:1:$LL(lbFANrs) Set FANr=$LI(lbFANrs,i) Set arFANr(FANr)=FANr // Params configureren Do INIT Set EMailTo=$LB($LI(EMailTo,1)_";"_"wv@vanhoecke.be") ;Set EMailTo=$LB("""Gul Kutlu-Yildiz"" ;wv@vanhoecke.be") // OPGELET : Eerste ListItem bevat ";"-separated string-list !!! Set EMailTo=$LB("wv@vanhoecke.be") If ($O(arFANr(""))="")||($LG(EMailTo,1)="")||(EMailFrom="") Do Quit . Write !," !!! Data is onvolledig. RESEND() wordt afgebroken.",! . B ; Break allows debugging // FOP-taak aanmaken en uitvoeren Do MailPDF(EMailFrom,$LI(EMailTo,1),.arFANr) Quit