Улучшение пользовательских режимов расчета

Информация о завершенных проектах развития

Модератор: ZYG

Ответить
Sparrow
топ-софт
Сообщения: 12
Зарегистрирован: Вт, 12/02/2008 14:54
Имя Фамилия: Алексей Дударев
Откуда: ТопСофт
Контактная информация:

Улучшение пользовательских режимов расчета

Сообщение Sparrow »

Цели и задачи
модуль "Заработная плата"
Проект развития "Улучшение пользовательских режимов расчета" включал в себя исследование возможности подключения пользовательских алгоритмов в расчете отпуска, больничного и подоходного налога,а также реализацию необходимого для этого функционала.

Пользовательские режимы расчета — это возможность обмена данными с процессами расчета пособий по нетрудоспособности (больничных), отпускных сумм, налога на доходы (подоходного).

Структура подключения пользовательских алгоритмов

Чтобы пользовательские режимы расчета подключились и vip-алгоритм стал доступен при запуске расчета сумм в конкретной функции (Расчет отпускных/Расчет больничных/Расчет зарплаты -> экранная кнопка [Расчет] -> вывод информации с наименованием vip-файла), необходимо разработать объектный интерфейс, скомпилировать его в собственный ресурс и подключить этот ресурс.

Интерфейс реализующий пользовательский алгоритм должен поддерживать IZarAlgorithm описанный в ZarAlg.vih(описание данного объектного интерфейса и реализумых им методов имеется в хелпе Галактики)

Примечание:
В результате доработки может увеличиться время расчета. Поэтому необходимо обратить особое внимание на оптимизацию работы пользовательского алгоритма и обмен данными с кодом на Pascal.
При выходе нового релиза (версии) системы Галактика ERP возможно потребуется перекомпиляция пользовательских интерфейсов, реализующих объектный интерфейс

Пользовательские режимы расчета больничного/отпуска
Для того чтобы подключить пользовательский vip-алгоритм к расчету больничных/отпусков, необходимо создать интерфейс ZarBlisnet_Nalg — название должно складываться из префикса (ZarBlisnet_) и номера системного алгоритма Nalg, по которому осуществляется расчет по среднему (17, 33 и т.п.).Например ZarBlisnet_17.
Cтруктура вызова и подключения пользовательского расчета преведена на рисунке внизу сообщения.
Расчет по среднему сохраняет данные в массивы SredSumma, SredChasF, SredPremi, SredKoef, MinSumma. Для работы с этими массивами были зарегистрированы следующие ф-ии(функции позволяют извлекать и сохранять данные):
  • Ссылка на лицевой счет(для которого идет расчет)
    function GetLschetRef:comp;

    Возвращает SredSumma[ind]
    function GetSredSumma(ind:longint):double;

    Возвращает SredChasF[ind]
    function GetSredChasF(ind:longint):double;

    Возвращает SredPremi[ind]
    function GetSredPremi(ind:longint):double;

    Возвращает SredKoef[ind]
    function GetSredKoef(ind:longint):double;

    Возвращает MinSumma[ind]
    function GetMinSumma(ind:longint):double;

    Установка SredSumma[ind] := value
    Procedure SetSredSumma(ind:longint,value:double);

    Установка SredChasF[ind] := value
    Procedure SetSredChasF(ind:longint,value:double);

    Установка SredPremi[ind] := value
    Procedure SetSredPremi(ind:longint,value:double);

    Установка MinSumma[ind] := value
    Procedure SetMinSumma(ind:longint,value:double);

    Установка SredKoef[ind] := value
    Procedure SetSredKoef(ind:longint,value:double);

    Дата начала расчета среднего
    function GetDateBeginRasSredn:date;

    Дата окончания расчета среднего
    function GetDateEndRasSredn:date;
Ниже приведен пример возможной реализации vip-интерфейса для расчета среднего заработка по алгоритму 33 (с определенными параметрами).

Код: Выделить всё

#include ZarAlg.vih
vipinterface ZarBlisnet_33 implements IZarAlgorithm;

interface ZarBlisnet_33;
  create view Dummy;

  function CalcSum(Parameter: string): double;
  {

    Result := 0;
    var i : longint;
    var SredSummaArr,SredChasFArr,SredPremiArr: array [1..12] of double;
    //Заполнение массивов по данным расчета среднего
    for( i := 1 ; i <= 12 ; inc(i) )
    {
      SredSummaArr[i] := GetSredSumma(i);
      SredChasFArr[i] := GetSredChasF(i);
      SredPremiArr[i] := GetSredPremi(i);
    }
    // увеличение данных в массивах и возврат их в расчет
    for( i := 1 ; i <=12 ; inc(i) )
    {
      SetSredSumma(i,1,4*SredSummaArr[i] );
      SetSredPremi(i,1,4*SredPremiArr[i]);
    }
  }

  function GetDescription: string;
  {
    Result := 'Демонстрационный пример';
  }
end.

Пользовательские режимы расчета налога на доходы (подоходного)
Для того чтобы подключить пользовательский vip-алгоритм к расчету налога на доходы, необходимо создать интерфейс, название у которого должно быть — ZarRasPodoh_RasPodohNal.
Cтруктура вызова и подключения пользовательского расчета преведена на рисунке внизу сообщения.

Для расчета налога на доходы зарегистрированы следующие функции:
  • Функция устанавливает флаг того, что удержания создаются пользователем и при дальнейшем расчете данные в таблицу Uder заносить не нужно
    procedure SetPriznUderCreatedByUser;

    Дата начала расчета подоходного
    function GetDateBeginRasPodoh:date;

    Дата окончания расчета подоходного
    function GetDateEndRasPodoh:date;

    Вид удержания
    function GetVidUderPodoh:longint;
Ниже приведен пример возможной реализации vip-интерфейса для расчета налога на доходы по пользовательскому алгоритму.

Код: Выделить всё

#include ZarAlg.vih

vipinterface ZarRasPodoh_RasPodohNal implements IZarAlgorithm;

interface ZarRasPodoh_RasPodohNal;
  create view Dummy;

  function CalcSum(Parameter: string): double;
  {
    // Установка флага что не нужно записывать данные в Uder
    SetPriznUderCreatedByUser();
    Result := 0;
  }

  function GetDescription: string;
  {
    Result := 'Демонстрационный пример';
  }
end.
Документация
Описание доработки можно прочитать в документации CD № 810_7_0408 плановая дата 20.04.2008. Дополнение хелпа выйдет в обновлении Обновление GalHelp_res_81050
плановая дата 10.06.2008

Достигнутый результат
В модуле "Заработная плата" предусмотрен расчет больничных, отпусков, налога на доходы (подоходного) не по системным алгоритмам, а на основе пользовательских режимов расчета — по vip-алгоритму из объектного интерфейса, разработанного самим пользователем.

Обновление
Решение включено в обновления Z_CALC_RES_810150 от 25.03.2008 г. и G_ZARPL_DLL_810300 от 28.03.2008 г.
Ответить