Создание в RS-Retail нефинансовых операций

Автор:R-Style Softlab
Дата:09.04.2003
Просмотров:1393
Скачиваний:1506
Оценка: - , Оценок - 0
Скачать (mac-файл; Размер - 4305)

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

Описание

Создание в RS-Retail нескольких нефинансовых операций на основании нефинансовой операции-образца, которые "привязаны" к "объединяющей" операции.

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

 import deprintr;

file   sb_algop ("sb_algop.dbt") write;
file   sb_typop ("sb_typop.dbt") write;

const NullDate = date (0,0,0);
const EtlNum = 321;

const UpEtlNum = 300;

const StartNumCurrent = 360;

array NameOpers;

macro InitNameOpers ()
   NameOpers (0) = "Комиссии по ПК GOLD";
   NameOpers (1) = "В стоп-лист";
   NameOpers (2) = "Перевыпуск PIN";
   NameOpers (3) = "Опротестование операции";
   NameOpers (4) = "Запрос подтверждения";
   NameOpers (5) = "Изменение лимита";
   NameOpers (6) = "Блокировка карты";
   NameOpers (7) = "Перекодировка карты";
   NameOpers (8) = "Перевыпуск карты";
   NameOpers (9) = "Информация по СМС";
   NameOpers (10) = "Информация по И-нет";
   NameOpers (11) = "Информация по телеф.";
   NameOpers (12) = "Информация (все)";
   NameOpers (13) = "Получение выписки";
   NameOpers (14) = "Повторная выписка";
   NameOpers (15) = "Перерасход лимита";
/*            
192  USD  Получение информации по СМС
193  USD  Получение информации по И-нет
194  USD  Получение информации по телеф
195  USD  Получение информации (все)
196  RUR  Получение выписки
197  USD  Повторное получение выписки
198  RUR  Перерасход лимита
*/
end;

Macro DelNotFinOp (IsCur, Kind) 
 var stat, NumCurrent = StartNumCurrent, MaxCount = ASize (NameOpers) + StartNumCurrent, ErrStat = "";

   sb_typop.IsCur      = IsCur;
   sb_typop.Kind       = Kind;
   sb_typop.NumOpert   = NumCurrent;
   stat = GetEQ (sb_typop);
   if (stat)
      delete (sb_typop);
   end;
   status (ErrStat);

   NumCurrent = NumCurrent + 1;

   while (NumCurrent < MaxCount)

      sb_typop.IsCur      = IsCur;
      sb_typop.Kind       = Kind;
      sb_typop.NumOpert   = NumCurrent;
      stat = GetEQ (sb_typop);
      if (stat)
         delete (sb_typop);
      end;
      status (ErrStat);

      sb_algop.IsCur      = IsCur;
      sb_algop.Kind       = Kind;
      sb_algop.NumOpert   = NumCurrent;
      sb_algop.NumStepAlg = 0;
      sb_algop.BegDate    = date (0,0,0);

      stat = GetGE (sb_algop);

      while (stat                          and 
             (sb_algop.IsCur    == IsCur ) and 
             (sb_algop.Kind     == Kind  ) and 
             (sb_algop.NumOpert == NumCurrent)
            )
         stat = delete (sb_algop);
         status (ErrStat);
         stat = next (sb_algop);
      end;
      NumCurrent = NumCurrent + 1;
   end;

end;

macro InsNotFinOp (IsCur, Kind)
 var stat, NumCurrent = StartNumCurrent, MaxCount = ASize (NameOpers) + StartNumCurrent, ErrStat = "";

   sb_typop.IsCur      = IsCur;
   sb_typop.Kind       = Kind;
   sb_typop.NumOpert   = EtlNum;
   stat = GetEQ (sb_typop);

   sb_typop.NumOpert   = NumCurrent;
   sb_typop.UpNumOpert = 0;
   sb_typop.czNameAlg  = NameOpers (NumCurrent - StartNumCurrent);
   stat = insert (sb_typop);
   status (ErrStat);

   NumCurrent = NumCurrent + 1;

   while (NumCurrent < MaxCount)

      sb_typop.IsCur      = IsCur;
      sb_typop.Kind       = Kind;
      sb_typop.NumOpert   = EtlNum;
      stat = GetEQ (sb_typop);

      sb_typop.NumOpert   = NumCurrent;
      sb_typop.UpNumOpert = 300/*StartNumCurrent*/;
      sb_typop.czNameAlg  = NameOpers (NumCurrent - StartNumCurrent);
      stat = insert (sb_typop);
      status (ErrStat);

      sb_algop.IsCur      = IsCur;
      sb_algop.Kind       = Kind;
      sb_algop.NumOpert   = EtlNum;
      sb_algop.NumStepAlg = 0;
      sb_algop.BegDate    = date (0,0,0);

      stat = GetGE (sb_algop);

      while (stat                          and 
             (sb_algop.IsCur    == IsCur ) and 
             (sb_algop.Kind     == Kind  ) and 
             (sb_algop.NumOpert == EtlNum)
            )
         GetPos (sb_algop);
         sb_algop.NumOpert = NumCurrent;
         sb_algop.BegDate  = date (0,0,0);
/*         MsgBox ("sb_algop.BegDate ", sb_algop.BegDate);
*/
         stat = insert (sb_algop);
         status (ErrStat);
         GetDirect (sb_algop);
         stat = next (sb_algop);
      end;
      NumCurrent = NumCurrent + 1;
   end;
end;

InitNameOpers ();

/*
DelNotFinOp (0, "Шаблонный");
DelNotFinOp (1, "Шаблонный");
*/ 

InsNotFinOp (0, "Шаблонный");
InsNotFinOp (1, "Шаблонный");