Выписки на емайл через рс аларм

Автор:avtomatizacia
Дата:04.10.2008
Просмотров:4172
Скачиваний:2080
Оценка:, Оценок - 2
Сохранить в файле

Обсудить в форуме

Описание

отправка выписок на емайл по средствам рс аларм

Текст примера

 import bankInter,param,alarms;

var AccR   = Tbfile ("account.dbt", "r", 4, "account.dbt", "bank.def");

var
    ДатаОтчета = {curdate}, start = False, StartDoc = False, Дебет = $0, Кредит = $0,
     DocR;
var deb_corracc, bank_payer, payerMFO, kred_acc, kred_corracc, bank_receiver, receiverMFO, i,s;

private record d (document);
private record da (arhdoc);


Macro Filtr(acc)
  if (Substr(acc,1,2)=="40")
     return True;
  end;
  return False;
end;

MACRO ШапкаПоСчету( Клиент, ЛицСчет, НазвСчета, Дата1, ДПД, Остаток, Апострофы, ПечатьОснования )
[$#
                                       Выписка по лицевому счету  
                                       за  ################### 

  Клиент      : #

  Лицевой счет: #########################
  Наименование счета: #

  ДПД         : ##########
]( AccR.rec.userfield2,Дата1:m, Клиент, ЛицСчет, НазвСчета, ДПД );
[
  Входящий остаток  пассив                                        ####################
](abs(Остаток):a);
 
[┌──┬─────┬─────────┬──────────────────────┬────────────────────┬────────────────────┐];
[│ВО│№ док│   БИК   │          Счет        │       Дебет        │      Кредит        │];
[├──┼─────┼─────────┼──────────────────────┼────────────────────┼────────────────────┤];


s="                                       Выписка по лицевому счету \n";
s=s+"                                       за  "+Дата1+"\n \n";
s=s+"  Клиент      : "+Клиент+"\n";
s=s+"  Лицевой счет: "+ЛицСчет+"\n";
s=s+"  Наименование счета: "+НазвСчета+"\n";
s=s+"  ДПД         : "+ДПД+"\n";
s=s+"  Входящий остаток  пассив                                        "+abs(Остаток)+"\n";
s=s+"┌──┬─────┬─────────┬──────────────────────┬────────────────────┬────────────────────┐"+"\n";
s=s+"│ВО│№ док│   БИК   │          Счет        │       Дебет        │      Кредит        │"+"\n";
s=s+"├──┼─────┼─────────┼──────────────────────┼────────────────────┼────────────────────┤"+"\n";


END;

Macro ВзятьДПД(account, dat);
   var Res = Tbfile ("restdate.dbt","r",0,"restdate.dbt", "bank.def");
   res.rec.account = account;
   res.rec.code_Currency = 0;
   res.rec.Date_Carry = Dat;
   GetGE(res);
   prev(res);
   return res.rec.Date_Carry
end;                                        

macro ИтогиЗаДень(  Дебет, Кредит, Остаток)


[├──┴─────┴─────────┴──────────────────────┼────────────────────┼────────────────────┤];
[│ Итог оборотов                           │####################│####################│]
( Дебет:a, Кредит:a );
[└─────────────────────────────────────────┴────────────────────┴────────────────────┘];

[ Исходящий остаток         			   	         ####################│]
(  abs(Остаток):a);
[ Банк #                                                                      ]
( {Name_Bank} );                                                           
s=s+"├──┴─────┴─────────┴──────────────────────┼────────────────────┼────────────────────┤"+"\n";
s=s+"│ Итог оборотов                           │"+string(дебет:20)+"│"+string(кредит:20)+"\n";
s=s+"└─────────────────────────────────────────┴────────────────────┴────────────────────┘"+"\n";
s=s+" Исходящий остаток         			   	         "+abs(Остаток)+"\n";
s=s+{Name_Bank};
//submitm("security@taatta.ru",s);
submitm("AccR.rec.userfield2",s);

END;

MACRO ПечатьДокумента( doc, ДК )
  var СуммаНулевая = "";

  if ( ДК == 1 )
[│##│#####│#########│######################│####################│####################│
 │                  │################################################################│]
( doc.rec.Shifr_Oper, doc.rec.Numb_Document, doc.rec.MFO_Receiver, doc.rec.Account_Receiver, doc.rec.Sum:a, СуммаНулевая, doc.rec.Ground:w );
s=s+"│"+string(doc.rec.Shifr_Oper:2);
s=s+"│"+string(doc.rec.Numb_Document:5);
s=s+"│"+string(doc.rec.MFO_Receiver:9);
s=s+"│"+string(doc.rec.Account_Receiver:22);
s=s+"│"+string(doc.rec.Sum:20);
s=s+"│                    │\n";
s=s+"│                  │"+string(doc.rec.Ground:64)+"│\n";

  else
[│##│#####│#########│######################│####################│####################│
 │                  │################################################################│]
( doc.rec.Shifr_Oper, doc.rec.Numb_Document,  doc.rec.MFO_Payer, doc.rec.Account_Payer, СуммаНулевая, doc.rec.Sum:a, doc.rec.Ground:w );
s=s+"│"+string(doc.rec.Shifr_Oper:2);
s=s+"│"+string(doc.rec.Numb_Document:5);
s=s+"│"+string(doc.rec.MFO_Payer:9);
s=s+"│"+string(doc.rec.Account_Payer:22);
s=s+"│                    │";
s=s+"│"+string(doc.rec.Sum:20)+"\n";
s=s+"│                  │"+string(doc.rec.Ground:64)+"│\n";

  end;
END;

getdate(датаотчета,"Дата Выписки");
i=0;
InitProgress(nrecords(accr),"Формирование выписки", "Формирование рублевых выписок");


rewind(accr);
while (next(accr))
  i = i + 1; 
  useprogress(i);

  if ((AccR.rec.userfield2!="") and (AccR.rec.open_close!="З"))
  if (index(AccR.rec.userfield2,"taatta.ru")==0)/*не отправлять выписки на наш сервер*/
         if (substr(AccR.rec.Account,6,3)=="810")
            if (Filtr(AccR.rec.Account))
               Дебет  = DebetA(AccR.rec.Account, ДатаОтчета); 
               Кредит = KreditA(AccR.rec.Account,ДатаОтчета);
                  ШапкаПоСчету(AccR.rec.NameAccount, AccR.rec.Account, AccR.rec.NameAccount, ДатаОтчета, ВзятьДПД(AccR.rec.Account, ДатаОтчета), RestA(AccR.rec.account, ДатаОтчета-1));
               if (Дебет > $0)
                  if (ДатаОтчета < {curdate})
                     DocR  = Tbfile ("arhdoc.dbt", "r", 1, "arhdoc.dbt", "bank.def");
                     DocR.rec.Real_Payer = AccR.rec.Account;
                     DocR.rec.Date_Carry = ДатаОтчета;
                     DocR.rec.Sum        = $0;
                     StartDoc = GetGE(DocR);
                     while (StartDoc and (DocR.rec.Real_Payer == AccR.rec.Account) and (DocR.rec.Date_Carry == ДатаОтчета))
                        if (DocR.rec.Result_Carry != 23)
                           ПечатьДокумента( DocR, 1 );
                        end;
                        StartDoc = next(DocR);
                     end;
                  else
                     DocR  = Tbfile ("document.dbt", "r", 3, "document.dbt", "bank.def");
                     DocR.rec.Real_Payer = AccR.rec.Account;
                     DocR.rec.Sum        = $0;
                     StartDoc = GetGE(DocR);
                     while (StartDoc and (DocR.rec.Real_Payer == AccR.rec.Account))
                        if (DocR.rec.Result_Carry != 23)
                           ПечатьДокумента( DocR, 1 );
                        end;
                        StartDoc = next(DocR);
                     end;
                  end;
               else
               Дебет =0;
               end;
               if (Кредит > $0)
                  if (ДатаОтчета < {curdate})
                     DocR  = Tbfile ("arhdoc.dbt", "r", 2, "arhdoc.dbt", "bank.def");
                     DocR.rec.Real_Receiver = AccR.rec.Account;
                     DocR.rec.Date_Carry = ДатаОтчета;
                     DocR.rec.Sum        = $0;
                     StartDoc = GetGE(DocR);
                     while (StartDoc and (DocR.rec.Real_Receiver == AccR.rec.Account) and (DocR.rec.Date_Carry == ДатаОтчета))
                        if (DocR.rec.Result_Carry != 23)
                           ПечатьДокумента( DocR, 0 );
                        end;
                        StartDoc = next(DocR);
                     end;
                  else
                     DocR  = Tbfile ("document.dbt", "r", 4, "document.dbt", "bank.def");
                     DocR.rec.Real_Receiver = AccR.rec.Account;
                     DocR.rec.Sum        = $0;
                     StartDoc = GetGE(DocR);
                     while (StartDoc and (DocR.rec.Real_Receiver == AccR.rec.Account))
                        if (DocR.rec.Result_Carry != 23)
                           ПечатьДокумента( DocR, 0 );
                        end;
                        StartDoc = next(DocR);
                     end;
                  end;
               else
	       Кредит = 0;
               end;
                  ИтогиЗаДень(Дебет, Кредит, RestA(AccR.rec.account, ДатаОтчета));
 end;
end;
end;

end;
end;
remprogress;