Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Расчет Водителя #97

Open
hodkovdd opened this issue Jul 12, 2015 · 20 comments
Open

Расчет Водителя #97

hodkovdd opened this issue Jul 12, 2015 · 20 comments

Comments

@hodkovdd
Copy link
Collaborator

14

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

@sedovalx
Copy link
Owner

А не дубль ли это? См. #85

@sedovalx
Copy link
Owner

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

@sedovalx
Copy link
Owner

@hodkoff2 тут в полях отображаются значения соответствующих столбцов из кассовой формы?

@hodkovdd
Copy link
Collaborator Author

@sedovalx
Да, те же значения что в КС.

@sedovalx
Copy link
Owner

И даже поле "Итого" так же как там расчитывается?

@hodkovdd
Copy link
Collaborator Author

Нет, ИТОГО здесь другое.
Оно ровно просто сумме четырех значений выше, трех балансов и залога.
Если раньше смешивать положительные с отрицательными балансами нам нельзя было чтобы не получать среднюю температуру по больнице, то в момент финального расчета водителя мы как раз подводим черту и суммируем все - аренду,штрафы,ремонты и залог, который он внес когда устраивался.

@hodkovdd
Copy link
Collaborator Author

Часто бывают случаи, что водителя выгоняют за долги, или он просто исчезает. Это приводит к тому что приходится закрывать аренду с отрицательным итогом. В этом случае нужно предусмотреть возможность указывать, получает закрывающий от водителя эти деньги или нет. Потому как это значение влияет на счет "в кассе" и может вызвать расхождение с реальной суммой в кассе.
@hodkoff2
Подумать что тут надо сделать и расписать подробно.

@sedovalx
Copy link
Owner

Запрос вида http://localhost:9000/api/reports/q-rent-total?rent=536 теперь возвращает сводные данные по аренде:

{
    "rentId": 536,
    "minutes": 95177,
    "rent": 14743.22,
    "repairs": 1391.97,
    "fines": -1645.18,
    "deposit": 1219,
    "total": 15709.01
}

@sedovalx
Copy link
Owner

@hodkoff2
посмотри, что получилось. На страничке аренды сейчас объединены функции данной задачи и #94. Попасть на страницу аренды можно либо из списка аренд, либо из кассовой формы. Мне кажется, ничего не мешает и закрывать аренды из страницы аренды, меняя ее статус.

Тут у тебя есть еще таинственная кнопка "Рассчитать". Что она значит?

@hodkovdd
Copy link
Collaborator Author

@sedovalx
Рассчитать - это просто "Ок" - подтверждение операции.
отсюда: #79 (comment):

  • Расчитать. Действие: Сумма всех значений вычитается из счета "в Кассе". перевод аренды в статус "Закрыта".

Смысл:

  • Финансовые отношения с водителем переходят в состояние "никто никому не должен".
  • Договор с водителем прекращает свое действие.
  • Информация по Аренде воспринимается с этого момента как архивная.
  • Все довольны, расходимся.

@sedovalx
Copy link
Owner

Предлагаю следующее.

В редакторе аренды смену статуса аренды нужно делать не выбором из выпадающего списка, а отельными кнопками:

  • Приостановить (для активной аренды)
  • Продолжить (для приостановленной аренды или аренды под расчет)
  • Под расчет (для активной или приостановленной аренды)
  • Расчет (для аренды под расчет)

В этом случае редактор аренды превращается в форму расчета и просмотра истории. В то же время остается возможность приостановить и продолжить аренду.

По нажатию на кнопку "Расчет":

  • если "Итого" нулевое, запрашивается подтверждение на закрытие аренды, аренда закрывается.
  • если "Итого" отрицательное, запрашивается подтверждение на закрытие аренды с отрицательным балансом, аренда закрывается.
  • если "Итого" положительное, выполняется на необходимость полного возврата денег из кассы
    • если выбирается ответ "Да", то осуществляется возврат (подробнее ниже) из кассы Возврат денег из кассы #101, аренда закрывается
    • если выбирается ответ "Нет", то аренда закрывается
    • если выбирается ответ "Отмена", то аренда остается в прежнем состоянии

Все, кроме операции по возврату делается силами клиента. Операция по возврату описана тут #101. Сумму возврата можно получить из самого контроллера аренды, вызвав this.get('rentTotal.total'). Тут не будет специального мастера для возврата, все будет происходить в контроллере редактора аренды. Ты создаешь в редакторе аренды action для осуществления возврата, внутри выполняешь создание и сохранение объекта refund.

@Argelein как ты уже знаешь, операция сохранения любого доменного объекта возвращает promise, который может разрешиться ошибкой в случае, если сохранение неуспешно. Это может произойти из-за того, что сервер недоступен, или были неправильно заполнены поля возврата. В этом случае, очевидно, аренду закрывать нельзя. Т.е. нужно подождать, пока promise разрешится, и уже тогда либо закрывать аренду, либо отображать ошибку.

Отдельный вопрос, как и где отображать ошибку. Хорошим вариантом является #102. Однако можно и в редакторе аренды определить отдельное поле для ошибки, и отображать его в шаблоне редактора на закладке "Основное". Если возврат закончился ошибкой, то заполнять это поле текстом ошибки.

@kirzas
Copy link
Collaborator

kirzas commented Jul 21, 2015

@hodkoff2
Дим, возврат возможен по закрытой аренде?

@kirzas
Copy link
Collaborator

kirzas commented Jul 21, 2015

Сделал refund, можно посмотреть

@kirzas
Copy link
Collaborator

kirzas commented Jul 21, 2015

@hodkoff2
Сейчас refund можно создать прямо из кассовой формы.
Дим, ты согласен с предложением Саши?
Я готов делать по нему, вроде все понятно для начала

@hodkovdd
Copy link
Collaborator Author

визуализирую предложение Саши
39
40
41

:

@hodkovdd
Copy link
Collaborator Author

@Argelein @sedovalx
Что за кнопка Возврат денег на КС:
42
Что она делает и зачем?
Я понял что она родилась здесь #101
Но зачем?

@kirzas
Copy link
Collaborator

kirzas commented Jul 22, 2015

она сейчас в кассовой форме временно, чтобы просто посмотреть, как работает.
потом будет в изменении аренды, т.е. в расчете.

@hodkovdd
Copy link
Collaborator Author

@Argelein
тут Саша все грамотно разложил, однако:
Мне кажется сначала нужно сделать форму В КАССЕ #91, переход по кнопке на КС. Я смогу проверить правильно ли у нас сейчас ведется счет В Кассе, последить как он меняется и прочее. После добавить выемку из кассы, проверить, что касса наполняется и обнуляется правильно. И уже сверху достраивать что то по этой задаче (операции с расчетом водителей и связанные кнопки). Иначе мы начинаем строить здание с крыши или середины как минимум. Не даром уже появился клубок взаимозависимых и недоделанных задач.
Ответь там на вопрос чтобы я понимал в каком мы сейчас положении.

@kirzas
Copy link
Collaborator

kirzas commented Jul 23, 2015

вопрос на засыпку:
зачем нужно состояние аренды (Под расчет)? чем оно принципиально отличается от приостановки?
можно так: приостнаваливаем (аренда больше не капает), после этого расчитываем.

@kirzas
Copy link
Collaborator

kirzas commented Jul 23, 2015

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants