Прогноз процентов по счёту на дату, большую или равную текущей.

Автор:R-Style Softlab
Дата:24.02.2005
Просмотров:1708
Скачиваний:1944
Оценка: - , Оценок - 0
Сохранить в файле

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

Описание

Данный макрос выводит сумму процентов, которая накопиться по счёту на определённую дату. В основе алгоритма лежит проведение по счёту операции "закрытие счёта по основным условиям" в транзакции и откат транзакции. Пример разрабатывался для сборки 5.1.93.

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

 import DeposInter, CommonInter, "vars.mac";

file deps ("depositr.dbt") key 8 write;
file pccalc ("pc__calc.dbt") write;
file dep_ ("depositr.dbt") key 8;
var stat, stat1, stat2, Ref;


macro prognos (Dat, Res)
  /*входные параметры
  Ref - референс счёта
  Dat - дата прогноза*/
  /*выходные параметры
  Res - результирующая сумма прогноза процентов*/

  record parm_ ("oper_prm.1");
  record doc_ ("sbdepdoc.dbt");

  deps.Referenc = Ref;
  stat = getEQ(deps);

  Res = 0;

  if (stat)
    ClearRecord (parm_);
    ClearRecord (doc_);
    parm_.Account           = deps.Account;
    parm_.Type_Account      = deps.Type_Account;
    parm_.Code_Currency     = deps.Code_Currency;
    parm_.Type_Oper         = 10;
    parm_.Show_Panel        = 0;
    parm_.UseMaxDate        = 1;
    parm_.NoPrint           = 1;
    parm_.TypeComplexOper   = 10;

    doc_.Referenc         = deps.Referenc;
    doc_.IsCur            = deps.IsCur;
    doc_.FNCash           = deps.FNCash;
    doc_.Account          = deps.Account;
    doc_.Type_Account     = deps.Type_Account;
    doc_.CodClient        = deps.CodClient;
    doc_.Date_Document    = {curdate};
    doc_.DepDate_Document = Dat;
    doc_.TypeOper         = parm_.Type_Oper;
    doc_.TypeComplexOper  = parm_.TypeComplexOper;
    doc_.Flags            = 512;

    stat = Выполнение_Операции(parm_,doc_);
    if (NOT stat)
      pccalc.Referenc = Ref;
      pccalc.ObjectType = 2001;
      pccalc.TypeRecord = 1;
      pccalc.EndDate = Date (31,12,2099);
      stat1 = GetLE(pccalc);
      if (stat1)
        Res = Res + pccalc.SumForPay;
        [Res:              #############](Res);
        [pccalc.SumCalc:   #############](pccalc.SumCalc);
        [pccalc.SumPay:    #############](pccalc.SumPay);
        [pccalc.SumForPay: #############](pccalc.SumForPay);
      end;
    else
      [Error: #############](stat);
    end;

  end;

end;

macro TrnProc()

  var Dat = Date(20, 01, 2004);
  var Res = 0;

  prognos(Dat, Res);
  AbortTrn();

end;

OpenDepFiles();

 dep_.Referenc = 0; /*здесь можно задать конкретный референс, если не хотим запускать по всем счетам*/
 stat2 = GetGE (dep_);
 while (stat2)             
        Ref = dep_.Referenc;
	ProcessConTrn(1,"TrnProc", deps);
    stat2 = next (dep_); /*соответственно next делать не нужно, если нужна информация по одному счёту*/	  
 end;	

CloseDepFiles();