Closed hodkovdd closed 9 years ago
Это что такое?
@sedovalx то что ты предлагаешь, это костыль. Однако может сработать. У формы создания Штраф\Ремонт записей есть обязательное поле Описание нарушения\повреждения, а также в будущем появиться связанное поле фотография. В форме Платежа есть поле Явка, которое не к месту в штрафах\списаниях:
Все это ерунда, если б не обязательность поля с описанием. В операции тоже есть поле с комментарием, но оно не обязательно. А так почти один в один, что платежи, что сами ремонты и штрафы. Только знак числа отличается. Галку с явкой можно легко скрыть. Но ты прав, лучше сделать раздельные сущности. Операции разделить на платежи и списания. В принципе, это не очень сложно. Один свободный вечер для доделки сервера и пара вечеров для клиента. Поле явки нужно только для платежа за аренду? Платежи за штраф и ремонты без явки происходят?
@hodkoff2 а все же, давай пофантазируем. Ниже перечислю сходства списаний и платежей:
Ничего не упустил? С этой точки зрения и платежи, и списания - это суть операции просто с разным знаком суммы и разными обязательными описаниями.
Чтобы не определять тип операции по знаку можно добавить битовый признак являетсяПлатежом, но со знаком как-то элегантнее и логичнее. Если отрицательная сумма - очевидно это списание, а если положительная, то платеж. В UI можно сделать отдельные кнопки на "Добавить штраф" и "Добавить платеж за штраф". Они будут открывать почти одинаковую форму, только у штрафа будет предзаполнено/скрыто поле с описанием. А при сохранении операции для штрафа будет проставляться знак минус.
@sedovalx Ты предлагаешь расширить количество свойств сущности настолько, чтобы в нее помещались и платежи и списания. Я примерно так себе и представил твою идею. С точки зрения наполнения ок, мы их занесли и балансы считаются верно просто по сумме чисел. А когда придется извлекать, например для сводной таблицы по конкретной аренде, получится красиво их распарсить на платежи, списания, ремонты, штрафы? В целом вопрос такой - будут ли ограничения по манипуляциям этими записями после их занесения в базу если мы свалим их в одну кучу? Насколько высоки будут накладные расходы на проверки что это за запись при извлечении (не станет ли подтормаживать та же сводная таблица по аренде спустя полгода год, когда накопятся данные) ?
Ничего не упустил?
Поле явки нужно только для платежа за аренду? Заполненное поле явка означает, что водитель приехал и показал машину. Сделать он это может и не оплатив аренду. Таким образом поле явка нужно для всех видов платежей.
У каждой операции есть тип: аренда, штраф, ремонт. Добавляем сюда знак операции и получаем:
Что за сводная таблица по аренде?
@sedovalx обсуждалось здесь: https://github.com/sedovalx/taxi/issues/76
@sedovalx Чтобы не громоздить кучу ненужных кнопок в интерфейсе КС как это сделано сейчас: можно ли сделать создание операции через унифицированную форму как на дизайн-схеме был задуман платеж: только с поправкой на то что мы обсудили выше:
:
Да в общем-то можно. Только не лучше ли сделать две кнопки:
@hodkoff2 @sedovalx да, давайте так сделаем. ощущение хождения по кругу имеется :) тогда это будет как и раньше открытие формы с выбором типа платежа. А от того, выбрано списание или платеж, будет зависеть знак перед суммой, верно? т.е. в интерфейсе и при создании платежа и при создании списаний удет положительная сумма, но на сервер будет уходить со знаком + или -, в зависимости от того, по какой кнопке перешли из кассовой формы. Я правильно понял?
@Argelein @sedovalx "...т.е. в интерфейсе и при создании платежа и при создании списаний удет положительная сумма, но на сервер будет уходить со знаком + или -, в зависимости от того, по какой кнопке перешли из кассовой формы..." - по мне да, Саша, согласен?
В случае Списаний обязательные поля Описание, Фото можно называть одинаково, просто Описание и Фото. Тогда все складывается.
@hodkoff2 @Argelein Да, вроде бы все так. В кассовой форме нужно сделать две кнопки:
По нажатию должен открываться редактор операции с полями:
В поле суммы пользователь всегда будет вводить положительное число. При сохранении нужно смотреть, платеж это или списание, и подставлять нужный знак в сумму перед отправкой результата на сервер.
Путь: $/cashier-list/rents/12/operations/new?type=plus (или minus)
Входит в план-минимум #95
@hodkoff2 @sedovalx Проверьте, пожалуйста, все ли как вы планировали. Я пока закрываю. Если что переоткройте.
@Argelein поля "явка" в форме "Charge" (новое списание) не должно быть. Значение False должно быть зашито. Поле "явка" в форме "Payment" (новый платеж) сейчас не меняет значение в колонке Явка в КС. Почему?
@hodkoff2 а может быть платеж без явки? может строго пришить явку к типу операции? платеж - явка true, списание - явка false?
@Argelein платеж можно передать через другого водителя, оставить в почтовом ящике в конверте и прочее. Другими словами платеж может быть с явкой и без нее. У списания явки вообще не должно быть, это просто последствие того что мы платежи и списание храним в одной сущности "операция".
@hodkoff2 @sedovalx сейчас в модели явка по умолчанию true предлагаю такой вариант:
устраивает?
@Argelein в UI списания поле явки должно быть скрыто. Какое значение явки по умолчанию должно быть при создании платежа, путь скажет @hodkoff2.
@Argelein значение явки по умолчанию должно быть при создании платежа - false - пусть ручками ставит, подтверждая, что явка была.
@hodkoff2 @sedovalx На клиенте сделал, осталось это:
Поле "явка" в форме "Payment" (новый платеж) сейчас не меняет значение в колонке Явка в КС. Это на сервере надо сделать ведь?
@Argelein убедись, что на сервер уходит верное значение явки. Так-то без всяких изменений работать должно. Кстати, в КС в столбце явки галка отображается только в том случае, если операция была произведена в день просмотра формы.
@sedovalx нормально уходит "presence: true": operation: {changeTime: "2015-07-21T20:55:55.622Z", amount: 44, accountType: "Rent", rentDisplayName: null,…} accountType: "Rent" amount: 44 changeTime: "2015-07-21T20:55:55.622Z" comment: null creationDate: null creator: null editDate: null editor: null operationType: "payment" presence: true rent: "94" rentDisplayName: null Еще один момент придумал, но заведу на это дела две других задачи.
from @sedovalx to @hodkoff2 Кстати, по поводу самих Штраф/Ремонт записей. А не это не то же самое внешне, как если б мы создавали отрицательный платеж за штраф или ремонт? Если так, то это можно довольно просто реализовать на клиенте. Или вообще оставить как есть. По первому времени не обломятся, думаю, будут минус указывать в операции.