Задать вопрос
27cm
@27cm
TODO: Написать статус

Как реализовать сложный Accounting?

Добрый день.

В системе есть много участников, между которыми требуется правильно распределить деньги: клиент, который оплачивает услугу; несколько исполнителей, каждый из которых выполняет свою часть работы; сервис, который забирает свою комиссию. В операциях участвуют несколько видов валюты: наличные и безналичные деньги, бонусные баллы двух видов.

Большое количество правил, несколько примеров:
1. Если у исполнителя есть бонусные баллы, то определенную часть комиссии (не всю) он сможет компенсировать этими баллами. То есть у него на руках остается больше наличных денег от клиента, а комиссию он оплачивает баллами (1 к 1).
2. У клиента может быть промокод на скидку N%, но заработок исполнителей не должен уменьшиться. Разницу сервис компенсирует баллами или безналом.
3. Есть дополнительные услуги сервиса, которые клиент оплачивает, а исполнители должны только передать эти деньги сервису. То есть эти деньги не являются комиссией для исполнителей, и это нужно учитывать.
4. Исполнители могут быть назначены сразу на несколько заказов разных клиентов. И если у исполнителя всего 500 баллов, и 400 из них будут списаны после выполнения первого заказа, то при расчете заработка для второго заказа нужно учитывать, что у исполнителя осталось всего 10 баллов.
4. Десятки других подобных правил...

Сейчас это всё реализовано «в лоб» и кое-как работает в продакшене. Любой релиз, затрагивающий финансовую часть, приводит к ошибках. Пришло время рефакторить, бизнес готов переписать систему с нуля.

Как правильно реализовать подобную систему и минимизировать ошибки? Интересуют: ваш собственный опыт решения подобных задач, библиотеки (предпочтительно PHP), паттерны проектирования, фреймворки, статьи, выступления с конференций, которые могут помочь в этом деле или подсказать правильную идею.
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Ambrosian
Просто наймите специалиста.
Все описанные вами пункты - рядовая задача.

P.S.:
Вы изложили полную постановку задачи, фактически.
Предлагаете нам за вас ее решить?

Это не вопрос
Вопрос - это в чем конкретно заключается ваша конкретная проблема.

У вас же написано:
"Я вообще не представляю что делать".

Ответ:
"Наймите того, кто представляет".
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
прям домашка по паттернам

ну см. например

что касается
Десятки других подобных правил...

их нужно делать с четкими инструкциями от финотдела, по отчетным периодам и принципам признания расход/доход/конвертация
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы