sedovalx / taxi

6 stars 3 forks source link

Перейти на понятия счета, списания и зачисления #78

Closed sedovalx closed 9 years ago

sedovalx commented 9 years ago

Задача заведена на основании обсуждения в #63.

Что имеем - Три баланса аренды, два счета предприятия.

Отделяем мух от котлет - Расчет трех балансов аренды не связан с расчетом счетов предприятия в том смысле, что эти задачи можно решать по отдельности в любом порядке или параллельно.

Каждый из трех балансов аренды (Арендный,Ремонтный,Штрафной) рассчитываются одинаково исходя из наличия диапазона дат (создание аренды - момент расчета баланса), а также списаний и платежей в этом диапазоне на аренде (отсюда следует, что списания и платежи должны быть связаны с конкретной датой и конкретной арендой):

img1

История статусов аренды влияет на наличие регулярного списания в первом из трех балансов (Арендный), для примера на рисунке фиолетовая черта (Приостановлено) совпадает с отсутствием очередного списания.

4.(четвертое) Из двух счетов предприятия главный для нас счет1 - "В Кассе". Это те деньги которые копятся в сейфе до выемки. В момент выемки необходим контроль соответствия фактической суммы сумме "по чекам", отсюда важность счета.

Расчет происходит на основе диапазона дат (дата предыдущей выемки - дата текущей выемки), платежей связанных с этим диапазоном, а также возвратов денег из кассы (сейчас есть понимание что это возврат залога для аренд в статусе "Под расчет").

img2

UPD п. 4 (Счет "В кассе") : в формуле забыл Авансы которые вносят новые водители, их же тоже вносят в кассу: formula

"А штрафы и аренды покрываются уже из кармана?" - Тема мух и котлет здесь актуальна даже больше. Расчеты балансов аренд и счета кассы это задачи "получения" денег владельцем бизнеса. Учет реальных расходов которые он оплачивает, таких как реальный ремонт машины, ЗП сотрудников, оплата штрафов и т.д. происходит со счета "В кармане" после выемки из кассы и является не связанной задачей настолько, что можно вынести ее во второй релиз. Суммы этих трат хранятся в отдельной таблице, их агрегация для отчетов является отдельной задачей не связанной с расчетом балансов и счетов. Для наглядности картинка процессов и их изолированности друг от друга (п.2 нас вообще не касается, мы обеспечиваем только мотивацию наличием трех балансов): default

sedovalx commented 9 years ago

@hodkoff2 @Argelein Я сделал так, что у нас теперь нет отдельных сущностей платежа, штрафов и ремонта. У нас теперь есть понятие операции над счетом. Операция - это некоторое кол-во денег, зачисленное на некоторый счет. Операция всегда связана с какой-либо арендой. Счета сейчас, как сказано выше, - аренды, ремонтный и штрафной. Т.е. у операции есть свойство "accountType" с типом счета (перечисление). Сделано только на сервере. На клиенте, надеюсь, Кирилл поменяет:

Дальнейший шаг - соответствующие изменения в кассовой форме, чтобы правильно считались балансы. Это за мной. Я пока ничего не коммитил, т.к. еще не доделал серверную часть полностью - падают тесты. Завтра-послезавтра, надеюсь, будет.

Кирилл, пока можешь переделать платеж на операцию на клиенте. Список полей у операции такой же как у платежа +

Не пытайся в списке операций отображать полное имя аренды, вычисляя его по имени машины и водителя, как ты делал раньше. Это работает медленно. Если есть вопросы, задавай.

kirzas commented 9 years ago

@sedovalx создал операции, но платежи не были прикручены ни к чему, операции я тоже не прикручивал. ответил на твой todo

kirzas commented 9 years ago

А можно несколько человек на задачу делать?

sedovalx commented 9 years ago

@Argelein что за todo? Не помню. Несколько человек тут нельзя, кажется. Да, операции ни к чему не прикручены сейчас. План такой: в форме кассира создать кнопки:

kirzas commented 9 years ago

@sedovalx ок, я сейчас сделаю

kirzas commented 9 years ago

@sedovalx

  1. сделал, посмотри, плиз.
  2. там билды сломались, мне письмо от трависа пришло, но ошибки я не понял, надеюсь, что сейчас уйдут.
  3. сохранение операций не работает, т.к. адаптер fixtures я не стал делать.
  4. платежи пока не удалял, контроллер, шаблон и прочее для платежей пока все осталось
kirzas commented 9 years ago

@sedovalx С клиента тоже выпиливать?

sedovalx commented 9 years ago

@Argelein да

sedovalx commented 9 years ago

Думаю, переход выполнен. Платежи, ремонты и штрафы выпилены. Теперь только операции соответствующего типа.