sedovalx / taxi

6 stars 3 forks source link

Форма для кассира #63

Closed kirzas closed 9 years ago

kirzas commented 9 years ago

Сделать основное окно для кассира.

kirzas commented 9 years ago

Есть две проблем:

  1. с тем, что при переходе из создания нового платежа таким образом, модель не сбрасывается
  2. Форма кассира грузится только при открытии ее второй раз, с первого раза всегда пустая таблица.
sedovalx commented 9 years ago

@hodkoff2 уточни пожалуйста требования к этой форме тут:

(называя некоторые столбцы, исхожу из того, что уже сделано @Argelein)

hodkovdd commented 9 years ago

@Argelein @sedovalx

  1. какие должны быть столбцы? default Сейчас не хватает столбца "Явка" - по ней отслеживается показывал водитель машину или нет. И номер, некритичный столбец.
  2. как данные должны быть отформатированы в столбцах? Также как на макете выше. Если есть проблемы, обсуждаем.
  3. кол-во строк должно быть равно кол-ву машин или аренд? Количеству машин. Так нагляднее какие машины простаивают.
  4. если кол-во строк должно быть равно кол-ву машин, то что отображать в балансах и статусе для машин, которые не в аренде на данный момент? Пустые ячейки.
sedovalx commented 9 years ago

@hodkoff2 если у машины было несколько аренд на момент построения списка, то отображаем данные последней?

hodkovdd commented 9 years ago

@Argelein @sedovalx текущая аренда всегда одна (активна \ приостановлена), не могут же на ней двое ездить. Или ты имеешь ввиду что за один день аренды могут закрываться\открываться ? В любом случае отображаются данные аренды со статусом активна \ приостановлена. Если аренды с таким состоянием нет подразумеваем, что машина свободна и простаивает (все аренды закрыты \ под расчет).

sedovalx commented 9 years ago

@hodkoff2 в течение времени у одной машины может быть несколько аренд. Одни открываются, другие закрываются и т.д.. Я так понял, что в этом списке мы отображаем данные последней аренды по машине. Сначала я думал, что мы отображаем данные последней независимо от статуса, но твои последние слова заставили меня усомниться. Вопрос - если последняя аренда по машине закрыта, то отображать ли ее данные в списке, или же оставлять столбцы, относящиеся к аренде, пустыми?

hodkovdd commented 9 years ago

@sedovalx В этом случае (у машины нет открытых и приостановленных аренд = последняя аренда по ней закрыта или под расчет) пустыми. Потому что все аренды по этой машине закрыты и она свободна. Зачем вводить кассира в заблуждение и заставлять самого проверять каждый раз глазами какой статус у аренды (открыта или закрыта) и должен ли быть платеж по ней сегодня или нет. Пусть все будет наглядно, свободна машина - пустые строки, в работе - есть данные.

Возможно у тебя есть идеи почему имеет смысл выводить данные по последней закрытой аренде в форме кассира?

sedovalx commented 9 years ago

@hodkoff2 явка у нас как и когда планируется проставляться?

hodkovdd commented 9 years ago

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

sedovalx commented 9 years ago

@hodkoff2 т.е. явка привязана к платежу?

hodkovdd commented 9 years ago

@sedovalx Встречный вопрос - что значит привязана, на практике?

hodkovdd commented 9 years ago

@Argelein @sedovalx

Наводим порядок в мыслях.

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

default

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

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

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

default

Пока хватит, давайте с этим разберемся.

sedovalx commented 9 years ago

А штрафы и аренды покрываются уже из кармана?

sedovalx commented 9 years ago

Штрафы и ремонты, конечно. Водители уже внесли за них деньги. Деньги в кассе. Затем деньги снимаются из кассы, и из них уже реально оплачиваются штрафы с ремонтами?

sedovalx commented 9 years ago

Как в UI должен выглядеть возврат залога? Он должен списываться с арендного счета? Такого понятия как общий баланс аренды не существует? Всегда рассматривается в разрезе либо штрафов, либо ремонтов, либо платежей?

hodkovdd commented 9 years ago

@sedovalx

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

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

hodkovdd commented 9 years ago

@sedovalx

По поводу возврата залога:

в марте с заказчиком я нафантазировал это так:

default

  1. Теория. Идея состояла в том, что после того как водителя выгнали (или он сам ушел) должно пройти две недели (для нас это означает статус аренды "под расчет" ), за которые могут придти новые штрафы. Через две недели водитель имеет право придти за своим авансом. В этом случае проверяется кто кому что должен и водитель либо посылается нахер, либо получает свой аванс обратно (что происходит редко, чаще его шлют нахер и эта форма становится аргументом).
  2. UI. В UI для такой аренды нужен какой-то переход, посредством кнопка скорее всего, в форму "Расчет Водителя".
  3. В этой форме отображается калькуляция балансов его подрасчетной аренды с авансом который он вносил.
sedovalx commented 9 years ago

@Argelein @hodkoff2 давайте не будем тут делать задачу "на всё-всё". Тут у нас кассовая форма, кнопки на ней, и каким последствиям приводят действия этих кнопок.

hodkovdd commented 9 years ago

@Argelein @sedovalx Пока расписывал диалог водителя с кассиром здесь: https://github.com/sedovalx/taxi/issues/76#issuecomment-111069245 понял, что на кассовой форме тоже должно быть поле ИТОГО для водителя, как сумма 3-х балансов, чтобы у кассира была возможность произносить "с вас, Петров, 5000".

Оно должно располагаться наглядно, мне кажется между ФИО и явкой: temp

hodkovdd commented 9 years ago

@Argelein @sedovalx Текущее состояние Кассовой формы на стенде: 4 должно быть: 7 Отсутствует функционал:

  1. Фильтр аренд по параметрам
  2. Установка дней для расчета списания всех скопом в начале раб дня кассира.
  3. Создание списаний Штраф\Ремонт на выбранную аренду.
  4. Приостановка выбранной аренды
  5. Не нужно - мы отказались от Открытия\Закрытия кассы.
  6. Не нужно - логичнее перенести закрытие аренды в справочник Аренд.
  7. Создать Аренду (дублирование кнопки из справочника Аренды).

Саша, опиши, пожалуйста, что сейчас готово из этого на сервере.

sedovalx commented 9 years ago
  1. Не готово. Добавить не сложно, сделаю завтра поддержку на сервере. Остальное за @Argelein
  2. Напомни.
  3. Так есть же. Кнопки "Внести платеж за штраф" и "Внести платеж за ремонт". И даже работает.
  4. Не готово. Нужна постановка:
    • что должно происходить при нажатии в списке?
    • должна ли эта кнопка исчезать для приостановленной аренды?
    • как опять сделать аренду активной?
    • это отдельной задачей оформить
    • возможно тоже завтра сделаю на сервере. Остальное за @Argelein
  5. Ок
  6. Закрытие аренды через редактирование уже есть.
  7. Это можно на клиенте сделать. @Argelein
hodkovdd commented 9 years ago
  1. Ок, когда сделаешь остальное? @Argelein
  2. Напомнить позже или напомнить подробности? @sedovalx
  3. Имеется ввиду не платежи на Штраф\Ремонт балансы, а сами Штраф\ремонт записи: 12 Напоминаю, что Кассовая форма это главная страница для всех ролей - Кассир, Ремонтник и т.д. соответственно почти все что они делают, доступно из нее. Это вроде как отправная точка для большей части операций. Доступность конкретных кнопок должна решаться принадлежностью к конкретной Роли. Насчет трех разных кнопок внесения платежей на балансы, все ок, работает, но не компактнее было бы сделать одну, а в форме "Платеж" разблокировать поле "Тип операции": 15
  4. Подумаю как лучше, напишу позже.
  5. Ок
  6. Попробовал закрыть аренду из справочника: Редактирование->Статус->Закрыта->Сохранить. Не вышло: 13 а должна открываться форма "Расчет: ФИО Водителя": 14
  7. Когда сделаешь? @Argelein
sedovalx commented 9 years ago

@hodkoff2

  1. подробности конечно :)
  2. так и было изначально, уже не помню, почему переделали
  3. баг, похоже. а формы расчета нет еще
sedovalx commented 9 years ago

Кстати, не нужно все писать в одну большую задачу. По пункту 6 нужно было создать отдельный баг. Это же явный баг, что нельзя сохранить отредактированную аренду. Уже поправил.

sedovalx commented 9 years ago

@hodkoff2 Кстати, по поводу самих Штраф/Ремонт записей. А не это не то же самое внешне, как если б мы создавали отрицательный платеж за штраф или ремонт? Если так, то это можно довольно просто реализовать на клиенте. Или вообще оставить как есть. По первому времени не обломятся, думаю, будут минус указывать в операции.

hodkovdd commented 9 years ago

@sedovalx По поводу самих Штраф/Ремонт записей отдельную задачу создал, нужно обсудить. https://github.com/sedovalx/taxi/issues/86

kirzas commented 9 years ago

@sedovalx @hodkoff2

  1. Сделал по другому issue.
  2. Сделал, кнопку для создания пустой аренды (т.е. открывается форма, где надо выбрать и машину и водителя и проч.).Еще не пушил. Нужно чтобы автоматически заполнялось поле автомобиля из выбранной аренды? @sedovalx если нужно, то надо делать маршрут что-то вроде car/id/rents/new. Так сделать?
sedovalx commented 9 years ago

@Argelein не, думаю, это путаный маршрут выйдет. Лучше просто rent/new.

kirzas commented 9 years ago

@sedovalx и не передавать машину туда?

sedovalx commented 9 years ago

Хммм, ты прав. Тогда /cashier-list/car/id/rents/new. Так понятнее, мне кажется.

kirzas commented 9 years ago

@sedovalx мне нужно, чтобы в модели cashier-list был carId. можешь добавить в запрос на севрере? Сейчас есть только поле car, которое содержит displayName, по нему неудобно искать запись.

я думаю получится через queryParams передать машину в маршрут rents.new, тогда будет просто в пути rents/new?carId=1 или как-то похоже

hodkovdd commented 9 years ago

@Argelein посмотрел твой коммит от 05.06.15: https://github.com/sedovalx/taxi/commit/2dce960c124eaeb79ae0e2923fd8bf63b5b3c457 Зачем кнопки просмотр Штрафов, просмотр Ремонтов и отдельная кнопка Просмотр платежей? откуда ты это взял (тем более название "просмотр Штрафов", а отображает платежи за штрафы...)? У нас есть единственное место на схеме где все операции по аренде должны быть видны - Сводная таблица по Аренде: 17 По отдельности данные не так эффективны, диалог с водителями я приводил здесь: https://github.com/sedovalx/taxi/issues/76#issuecomment-111069245 Саша предложил вариант с Таймлайном: https://github.com/sedovalx/taxi/issues/85#issuecomment-119327603 который может заменить Сводную (это почти одно и то же). Но суть от этого не меняется, место просмотра операций по Аренде одно и операции в нем идут в хронологическом порядке по умолчанию. Туда уже нужно добавить фильтр и получать , при необходимости, списки только штрафов или только ремонтов или только платежей и каких именно платежей. Соответственно кнопка должна быть тоже одна, например, Просмотр Операций, или как то похоже.

sedovalx commented 9 years ago

@Argelein поле id в списке - это идентификатор машины и есть. У нас же на каждую строку по машине. Я так понимаю, по этой задаче осталось:

На каждую из этих задач я завожу отдельную. Эту закрываю, а то уж больно бородата.