Closed sedovalx closed 9 years ago
@hodkoff2 @Argelein что думаете?
Является альтернативой #58
@sedovalx @Argelein Говорил с заказчиком - идея со счетами одобрена:
@hodkoff2 расходы из кассы всегда привязаны к какой-то аренде?
@sedovalx @hodkoff2 Окей. Тогда нужен объект Checkpoint, в котором хранится только дата. Платежи созданные этой датой и ранее, редактировать нельзя. Баланс считается исходя из того, что все, что попадает до чекпоинта, включая дату чекпоинта забирается из кассы.
Что касается отрицательного платежа, то payments и expenses можно объединить в один класс вообще, но предлагаю от этого отказаться в первом релизе по крайней мере.
@Argelein да, все так. Расходы и доходы пока оставим отдельными сущностями.
@sedovalx @hodkoff2 Я тут подумал, что штраф может прийти сильно позже фактического нарушения. Это значит, что штраф придется вешать на закрытую аренду, что сейчас невозможно.
@hodkoff2 нужно узнать, как это в реальности делают. Производят ли расчет с водителем сразу, или же по истечении пары недель, которые необходимы для сбора потенциальных штрафов.
Кажется, старая задача, и обсуждение уже неактуально. Закрываю.
Хранить состояние счетов в БД чревато сложностями с синхронизацией истории пополнений и списаний с текущим состоянием. Скажем, если админ редактирует платежи или расходы, то состояния счетов тоже нужно корректировать, а это далеко не всегда очевидное занятие.
Поэтому лучше все рассчитывать налету. Для этого сделаем следующее допущение - деньги из кассы на карман всегда забираются полностью. В этом случае мы можем в отдельной таблице
checkpoint
хранить только дату перевода всех средств из кассы в карман.Тогда расчет денег в кассе сведется к вычислению суммы по всем платежам, выполненным после даты последнего чекпойнта. Довольно просто.
Сумма денег на кармане вычисляется немного сложнее, т.к. она может накапливаться от чекпоинта к чекпоинту. Но вообще - это сумма всех платежей с начала времен до даты последнего чекпоинта включительно минус сумма всех расходов с начала времен до текущего момента. Вроде бы тоже несложно.
Исходя из этих соображений, предлагаю не создавать таблицы под счета, а ограничится хранением истории переводов с кассы в карман.