sedovalx / taxi

6 stars 3 forks source link

Расчет баланса водителя #57

Closed sedovalx closed 9 years ago

sedovalx commented 9 years ago

Вводим понятия баланса по аренде и баланса по водителю.

Баланс по аренде Представляет собой вычисляемый результат по формуле Баланс = НачальныйПлатеж - СУМ(ЧислоДнейАренды * ТарифПоМашине) + СУМ(ПлатежиПоАренде) - СУМ(Штраф) - СУМ(Ремонт) , где

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

Баланс по водителю Вычисляется налету как сумма балансов по всем его арендам. Отображается пока нигде, т.к. таких требований не было.

Для реализации списка аренд с балансами нам нужно сделать #41, #38, #11, #27. Немало.

sedovalx commented 9 years ago

@hodkoff2 @Argelein обратите внимание. Нужно скорректировать.

sedovalx commented 9 years ago

@hodkoff2 @Argelein обновил описание

sedovalx commented 9 years ago

Соображения:

  1. Баланс по аренде должен быть выведен в списке аренд отдельной колонкой. Это расчетная колонка, т.к. баланс мы нигде хранить не будем.
  2. Можно наверное написать sql-запрос, который посчитает баланс по всем арендам, и результат можно вывести в списке.
  3. Но как оформить этот запрос? В виде функции в БД? Но тогда его не протестируешь с помощью h2database. В виде конфигурационного файла, где запрос будет лежать в виде параметризуемой строки? В принципе можно, тогда это будет обычный sql, который h2 понимает в некоторых пределах.
  4. Баланс так же должен выводиться на странице отдельной аренды. В принципе это решается тем же запросом, где в where будет указан id аренды.
  5. Хотелось бы для массива аренд считать баланс разом, а не отдельными запросами. В принципе тем же запросом решается.
  6. Можно в коде считать конечно, но тогда это будет не так эффективно, я думаю. Хотя и эффектно.
  7. Еще будет баланс по водителю - это сумма балансов по всем его арендам. Тут можно вычислить id всех его аренд, а потом получить балансы тем же запросом.
  8. Возможно в списке с водителями нужно выводить их балансы. В этом случае совсем непонятно, как тот же запрос использовать.
hodkovdd commented 9 years ago

@sedovalx Как происходит Арендное списание сейчас? (на картинке обведены красным) _cr

sedovalx commented 9 years ago

@hodkoff2 Не уверен, что оно происходит. Мы же нигде не отображаем эту задолжность по списаниям. Я как-то тебя спрашивал, а не нужно ли нам в кассовой форме отдельным столбцом вывести вот этот баланс. Ты сказал, что не можешь представить ситуацию, где это может понадобиться. Недопонимание?

hodkovdd commented 9 years ago

@sedovalx Похоже неправильно понимаем друг друга. Я имею ввиду как сейчас уменьшается Арендный баланс Водителя с течением времени. Как пополняется понятно - я создаю платеж - баланс увеличивается. А уменьшается? Пока никак, я правильно понял?

sedovalx commented 9 years ago

@hodkoff2 арендное списание как таковое не происходит вовсе. Оно вычисляется на лету каждый раз, когда нужно узнать баланс аренды. Вычисляется, исходя из суммы активных минут аренды. Т.е. если ты посмотришь баланс аренды в 22:45 и в 22:46, то получишь разные числа.

kirzas commented 9 years ago

@sedovalx @hodkoff2 надо бы, наверное сделать ,чтобы баланс аренды считался только по дням, не учитывая часы, минуты и проч. я сейчас по #92 вынесу поле дата в кассовой форме из фильтра, попробую сделать примерно, как в схеме

sedovalx commented 9 years ago

Есть вычисление баланса по аренде. По водителю пока не нужно вроде. Закрываю.