модуль "Заработная плата"
Проект развития "Улучшение пользовательских режимов расчета" включал в себя исследование возможности подключения пользовательских алгоритмов в расчете отпуска, больничного и подоходного налога,а также реализацию необходимого для этого функционала.
Пользовательские режимы расчета — это возможность обмена данными с процессами расчета пособий по нетрудоспособности (больничных), отпускных сумм, налога на доходы (подоходного).
Структура подключения пользовательских алгоритмов
Чтобы пользовательские режимы расчета подключились и 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;
Код: Выделить всё
#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;
Код: Выделить всё
#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 г.