sedovalx / taxi

6 stars 3 forks source link

Счет: В КАССЕ #91

Open hodkovdd opened 9 years ago

hodkovdd commented 9 years ago

@sedovalx ТЕОРИЯ Из двух счетов предприятия главный для нас счет1 - "В Кассе". Это те деньги которые копятся в сейфе до выемки. В момент выемки необходим контроль соответствия фактической суммы сумме "по чекам", отсюда важность счета.

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

Что должно быть по Фунционалу:

Кассовая форма -> Кнопка "Касса" -> Форма просмотра "В Кассе". на ней нередактируемое значение счета "Сумма в Кассе" и кнопка "Снять Кассу" (доступна только админу) -> Подтверждение -> обнуление счета "в Кассе", добавление новой даты выемки в таблицу выемок и сумму выемок.

ИТОГО:

sedovalx commented 9 years ago

Входит в план-минимум #95

sedovalx commented 9 years ago

@hodkoff2 заведи задачу на реализацию возвратов денег из кассы и опиши там, как это должно происходить.

Смотри задачу #101

sedovalx commented 9 years ago

Добавлена поддержка съема денег из кассы. Для того, чтобы выполнить съем и создать запись об этом на клиенте нужно создать и сохранить объект profit

DS.Model.extend({
  changeTime: attr("date", {
    defaultValue: () => new Date()
  }),
  amount: attr("number"),
  rent: DS.belongsTo("rent", {inverse: null, async: true}),
  comment: attr("string"),
  creationDate: attr("date"),
  editDate: attr("date"),
  creator: DS.belongsTo("user", {inverse: null, async: true}),
  editor: DS.belongsTo("user", {inverse: null, async: true}),
});

При этом, если amount не указан, то будет снята вся касса. Если указано меньше, чем есть в кассе (по расчетам), то будет снята указанная сумма, а касса будет считаться пустой. Если указано больше, чем есть в кассе (по расчетам), то выбросится ошибка.

Сумма в кассе рассчитывается, исходя из даты предыдущего съема и суммы всех положительных операций с тех пор минус сумма всех возвратов с тех пор.

Давайте пока на клиенте не давать выбирать, какую сумму снимать из кассы, т.е. всегда оставляем поле amount пустым.

Пока нет простого механизма получения суммы в кассе на клиент. Можно только запросить все объекты this.store.find('refund') (или как-то так, не успеваю точно сказать) и из них уже выбрать последний по changeTime.

sedovalx commented 9 years ago

Успехов, парни :sparkles:

hodkovdd commented 9 years ago

@Argelein ты можешь по этой задаче работать сейчас?

kirzas commented 9 years ago

@sedovalx в объекте profit свойство rent лишнее, на мой взгляд. это так или я что-то не понимаю?

kirzas commented 9 years ago

@hodkoff2 Вобщем сделал маршрут, шаблон и прочее, можно посмотреть, как выглядит, но ничего не работает.

@sedovalx сохранить объект типа profit не дает: POST http://localhost:9000/api/profits 404 (Not Found) возможно я что-то не понял, т.к. у тебя то profit, то refund упоминается.

sedovalx commented 9 years ago

Profit - количество денег, снятых их кассы. Refund - возврат денег водителю. Это разные вещи.

sedovalx commented 9 years ago

Да, в Profit свойство rent лишнее конечно. И, парни, кажется я обдолбался и забыл закоммитить изменения по Profit перед уходом.

kirzas commented 9 years ago

Главное хорошо обдолбаться :)

sedovalx commented 9 years ago

@hodkoff2 посмотри, снятие денег из кассы вроде работает теперь. Делается это по нажатию на кнопку "Касса" в кассовой форме.

sedovalx commented 9 years ago

Залоги забыл учитывать. Сейчас поправлю.

sedovalx commented 9 years ago

Сумма в кассе = Сумма(положительные операции) + Сумма(залоги) - Сумма(возвраты) все со времени последнего снятия кассы.

sedovalx commented 9 years ago

@hodkoff2 все, можно проверять