Вход | Регистрация
    1  2  3
О жизни... :: Хобби

OFF: Концепция расчета заработной платы

OFF: Концепция расчета заработной платы
Я
   Emery
 
23.03.20 - 09:48
Концепция расчета заработной платы

Использование собственной программы по учету и расчету заработной платы (пока на семерке) убеждает, что «не так страшен чёрт, как его малюют». А именно используемая концепция зарплаты в тиражных продуктах фирмы 1С не должна выглядеть как черный ящик с безумно сложными алгоритмами расчета. Там избыточная сложность связана с отсутствием истинной модульности, непрозрачностью концепции расчета и, может быть, не оптимальностью самой этой концепции. Если каждый учетный параметр отслеживать и рассчитывать индивидуально, то как бы все сильно упрощается (вспоминаем принцип: «Разделяй и властвуй»). Для поддержки разговора, публикую мою собственную концепцию учета заработной платы, которую я собираюсь реализовать в своей будущей программе модульного учета, в данном случае: Модульный Учет – ЗАрплата (МУЗА).

Общий принцип – использование минимальных учетных единиц, для которых все расчетные параметры ПОСТОЯННЫ.

Принципиально расчет заработной платы может быть повременным и сдельным. Пока рассмотрим только повременную оплату.

1. Минимальная учетная единица – час.

2. Час может учитываться полностью либо частично, с коэффициентом учета от нуля до единицы.

3. Расчет часа работы зависит от следующих параметров:
– от расположения в сутках (дневные, вечерние и ночные часы);
– от расположения внутри либо вне текущего графика работы сотрудника, в т.ч. полного, сокращенного либо графика работы с учетом особых условий (сверхурочные и т.п.);
– от дня недели (рабочие / выходные дни по текущему законодательству);
– от расположения внутри либо вне текущего расчетного периода (например, перерасчет прошлых периодов либо предварительный расчет будущих периодов);
– от расположения внутри текущего года (учет праздничных, особых выходных дней, сезонной работы и т.п.);
– от территории работы (северные, районные коэффициенты и т.п.);
– от стажа работника (общий, непрерывный, выслуги лет и т.п.);
– от квалификации и образования работника (тарифные ставки);
– от возраста работника (например, премия к юбилею);
– от социального статуса работника (например, инвалид, мать-одиночка, бездетный холостяк, для выплаты налога на бездетность в СССР, лауреат премии, кавалер орденов и т.д. и т.п.);
– от вида деятельности, эквивалентной работе (болезнь, декретный отпуск, уход за детьми, учетный отпуск, творческий отпуск, военные сборы, гособязанности и т.д. и т.п.);
– прочее.

4. Видов расчетов, вычисляющих стоимость одного учетного часа, может быть множество. Сюда входят основные начисления, доплаты, премии, поощрения, компенсации, индексация, материальная помощь, подарки и т.д. и т.п. Кроме начислений есть и удержания (налоги, штрафы, алименты и т.п.), на расчет которых также влияют объективные и субъективные параметры (например, льготы на детей).

5. Виды расчетов могут быть зависимыми, порядок расчета определяется нормативами и законодательными актами.

6. Распределение конкретного вида расчета по учетным часам может иметь два представления: компактное и развернутое. В отчетах используется компактное представления, а в расчетах – развернутое.

7. Сам расчет заработной платы осуществляется путем разворачивания компактной расчетной информации по всем учетным часам, по каждому слою последовательности видов расчетов. Все дискретные ячейки рассчитываются, суммируются, а результат переводится опять в компактную форму и отображается в соответствующих отчетах. Т.е., еще раз, рассчитывается каждый час учетного периода индивидуально для каждого вида расчета, а затем итоговые данные сворачиваются в компактный вид, пригодный для отчетов. Главное, чтобы не было потери информации при свертке, другими словами, в отчетах информация может быть неполной, но в базе данных он должна полностью сохраняться.

Будущая (бесплатная) программа не зря называется «Модульный учет». Это будет истинная модульность, с  бизнес логикой, основанной на плагинах и открытых SQLite-скриптах, с открытым SDK и явной концепцией учета. Сами плагины (на С++) смогут писать все кому не лень, делать их платными и бесплатными, соответственно, именно общая поддержка, при наличии интереса, поможет программе взлететь.
 
 
   Злопчинский
 
201 - 26.03.20 - 20:10
(198) период регистрации и период действия/начисления - такое типа есть? когда считаем/пересчитываем в одном периоде то что относилось и должн быть исправлено в другом периоже? перерасчеты (не перезапись поверх ранее рассчитанного. а именно перерасчеты) как будут делаться/учитываться? что-то типа вытиеснения будет ли что/как?
   Emery
 
202 - 26.03.20 - 20:46
(199) > - почему час? за час какой-нить производственник-железячник может на трех станках поработать с разными тарифами, с разной степенью сложности, да еще относящимися к разным виртуальным подразделениям и вообзе фирмам внутри "холденга".

Смотри, я сразу сказал, что принципиально есть две системы, повременная и сдельная. То, про что ты говоришь, это сдельная система. Поэтому здесь ученый элемент или «атом» это уже не час, а некая материальная «железяка». Хотя, теоретически, это может быть космонавт или подводник, у которых счет поминутный. Полчаса он был в открытом космосе, 15 минут в «предбаннике», где его постепенно готовят к вакууму (как там, у Гарри Гаррисона: «Я открыл космический иллюминатор, высунул голову в открытый космос и глубоко вдохнул космический вакуум» :) ) и 15 минут одевал скафандр. Все это время может иметь разные расценки оплаты. А до этого плавал в невесомости, в спортивном костюме, внутри корабля еще по одной расценке, которая также может быть дифференцирована поминутно.

Т.е., исключения могут быть однозначно. Но для этого нужно уже писать другую программу, с другой концепцией.

(200) > а то будут какие-нибудь взносы, налоги, начисления/пр которые относятся сразу "ко всему периоду" и не могут быть "пропорционально раскиданы" на составляющие периода?

Ну, этот вопрос решаемый. Нелинейный расчетный слой применяется к уже рассчитанным слоям (хоть линейным, хоть к нелинейным). Мы делаем расчет, например, вычисляем налог по прогрессивной шкале, а затем уже результат распределяем пропорционально по всем учетным часам (для последующих рассчитываемых слоев).

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

Короче говоря, нелинейную ситуацию можно также отработать, только несколько сложнее.
   Злопчинский
 
203 - 26.03.20 - 20:53
Можно все отработать, "только сложнее".
чертики сидят в частностях. частности - требуют усложнения. и вся стройная система (интересная многим) становится "нестройной" что не представляет интереса никому кроме ее создателя...
.
   Emery
 
204 - 26.03.20 - 21:11
(201) > период регистрации и период действия/начисления - такое типа есть? когда считаем/пересчитываем в одном периоде то что относилось и должн быть исправлено в другом периоже? перерасчеты (не перезапись поверх ранее рассчитанного. а именно перерасчеты) как будут делаться/учитываться? что-то типа вытиеснения будет ли что/как?

Естественно! Правда, в моей программе они называются отчетным и зачетным периодами, но для всех будет общепринятая терминология.

Часовые поля у меня будут непрерывными. Для расчетов мы сможем использовать любые интервалы из текущего, прошлого или будущих периодов, любой продолжительности. Например, для расчета средних берутся несколько месяцев.

Перерасчет вообще будет простым. Сравниваться будут часы «старые» и «новые» и по каждому виду расчета браться соответствующая разница.

То, что в концепции 1С называется принципом вытеснения, у меня заменяется нормативным (или даже произвольным, под ответственность бухгалтера-расчетчика) порядком расчетных слоев. Вытеснение у меня это просто замещение одних видов расчета другими и регулироваться будет на уровне пользователя. Например, во время отпуска можно болеть, а можно автоматически прерывать отпуск на период болезни. Если расчетчик захочет, под свою ответственность, провести эти виды расчетов параллельно, то он сможет это сделать. Здесь я не буду привязываться к законодательству, которое у вас может быть одно, а у нас другое. Общий     принцип – расчетчик должен иметь возможность получить любой расчет (с его полным протоколированием), какой он захочет, под свою личную ответственность. Именно за результаты расчета должен отвечать не программист, а расчетчик, но он должен иметь для своей работы все необходимые инструменты и отчеты. Хотя никто не мешает, задействовать внешние скрипты, завязанные на то или иное законодательство.
   Emery
 
205 - 26.03.20 - 21:19
(203) > чертики сидят в частностях. частности - требуют усложнения.

Даже не «чертики», а «Дьявол кроется в деталях».

> и вся стройная система (интересная многим) становится "нестройной" что не представляет интереса никому кроме ее создателя...

На эту тему надо говорить вслух, а не прятать сомнительные алгоритмы в «черный ящик». У нас нелинейных расчетов уже давно нет, а если у вас есть, то их можно оформлять в отдельные плагины, с обсуждением на форумах их достоинств и недостатков. И потом, сложный алгоритм это всегда вызов, который хочется победить. А в моей практике приходилось встречаться с очень нетривиальными алгоритмами, на фоне которых кусочно-линейные (т.е., нелинейные для «зарплаты» и бухгалтерии) алгоритмы далеко не самые сложные :) .
   Злопчинский
 
206 - 26.03.20 - 21:54
ну дык давай, ваяй прикладнуху, а не нахрен ненужную платформу.
сделай на 77 прикладнуху прототип альфа.
выложи. пусть народ покуртит/посмотрит.
а потом портировать на твои с++ легко будет.
.
а то ты со своими самопальными гридами и прочими элементами в технике погрязнешь..
НАМ это не интересно.
   Emery
 
207 - 27.03.20 - 06:41
(206) > НАМ это не интересно.

А что ВАМ интересно :) ?
  1  2  3

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.