В этой статье я расскажу, как мы описываем схему бизнес-объектов
предприятия, и как мы определяем иерархическую структуру идентификаторов цепочек
этих объектов. Это определит интерфейс оператора системы, который сможет
работать с системой без графической оболочки.
Типовые спецификации
Схема включает в себя всю типовую информацию о бизнес-объектах.
Схема ERP модуля определяет базовые объекты организационной структуры,
объекты платежной системы PAY и системы учета сотрудников ACC.
ERP SPEC — Таблицы организационной структуры
PAY SPEC — Таблицы системы управления платежами
Деньги хранятся в формате {N,M}, где N — количество знаков после запятой,
а M — все значимые цифры. Таким образом числа кодируются множественным образом,
например единица: 1 = {0,1} = {1,10} = {2,100}. Операция умножения в такой системе
выглядит просто mul({A,B},{C,D}) -> {A+C,B*D}.
PLM SPEC — Таблицы системы управления жизненным циклом
Создание корневых цепочек
ERP BOOT или пусконаладка предприятия — это процесс заполнения первичных
словарей и таблиц фундаментальной информацией. Главным образом это отображение
иерархической, организационной структуры предприятия.
От работника предприятия, его рабочего места,
его бренча, его локальной компании, все бренчи,
которое находятся в одной стране, и далее до группы международных компаний с офисами в разных странах мира,
и возможно, даже до синдикатов транснациональных корпораций. В зависимости от того, какую
организационную структуру предприятия вы хотите,
так вы и раскладываете данные на первичные фиды.
ERP BOOT — Организационная структура предприятия
Рассмотрим пример: компания Quanterall, главный подрядчик Aethernity, имеет офисы в
Софии, Варне (главный офис компании) и Пловдиве. Сама компания совершает операции только в Болгарии,
поэтому группа состоит из одной компании.
Добавляем, сейчас и впредь, данные с помощью обычных list комбинаторов:
PAY BOOT — Учётность CashFlow
Управление отчетностью аутсорс предприятия достаточно простое:
1) мы принимаем оплаты по инвойсам, периодически выставленным клиентам, регулярно раз в месяц;
2) мы выплачиваем зарплаты раз в месяц. Поэтому фолды группируются календарно
и зипуются помесячно.
PLM BOOT — Бюджетирование проектов
Инициализация почасовая для каждого сотрудника по проекту.
Этот список будет использоваться для распределения
выплат по опционам в будущем.
Выплаты по процентам на субконто попроектно:
За работу с данными отвечает библиотека KVS, как работать с ней читайте в предыдущих
выпусках журнала:
Весь код, который нужен для создания фидов, мы обычно выносим в приложение с названием
ERP. Для каждого конкретного предприятия мы используем свою Github
организацию, можно даже другое имя репозитория, но всегда это же имя Erlang/OTP
приложения.
В этом репозитории всегда будут какие-то реальные данные компании, которую мы автоматизируем,
если она нам разрешает публиковать свою организационную структуру, первичные данные и словари.
Делаем этот репозиторий приватным в отдельных случаях. Сами приложения способны
работать с любыми структурами ERP.
Примеры запросов к хранилищу
Elixir прелюдия:
Содержимое корневой директории БД предприятия:
Список компаний, входящих в группу предприятия:
Список бренч-офисов головной (и единственной) компании группы: