sedovalx / taxi

6 stars 3 forks source link

Ввести понятие счета #58

Closed sedovalx closed 9 years ago

sedovalx commented 9 years ago

Счет состоит из суммы на счету и уникального наименования/назначения + стандартные comment, creator_id и пр.

Предполагается наличие двух счетов:

Новые платежи по аренде меняют состояние кассового счета в большую сторону - он увеличивается. Перевод на расчетный счет меняет состояние в меньшую сторону - он уменьшается. Нельзя перевести больше, чем есть на кассовом счету.

Вопросы:

sedovalx commented 9 years ago

@hodkoff2 @Argelein что думаете?

kirzas commented 9 years ago

@sedovalx @hodkoff2 Нужно еще понятие трансфера, т.е. списания с кассового в расчетный счет. Я предлагаю такую схему: У счета будут следующие свойства:

  1. transactions - Массив идентификаторов платежей/затрат.
  2. balance - Сумма денег.
  3. lastTransfer - id последнего трансфера (Пока я не придумал, нужно ли это хранить, но мне кажется, что не помешает)

Обзову два счета cash и operating. И предполагаю, что они являются объектами одного класса.

Transfer же в свою очередь тоже должен содержать по сути те же поля, их можно назвать по другому:

  1. payments - Массив идентификаторов платежей.
  2. amount - Сумма денег.
  3. previousTransfer - id предидущего трансфера.

transactions счета cash наполняется платежами, при их создании. Т.е. создали платеж, он автоматически добавился в cash.transactions. cash.balance считается автоматически из cash.transactions. Это можно расчитывать в SQL или в серверной части. При создании трансфера:

  1. cash.transactions обнуляется. cash.balance обнудяется тоже, т.к. расчитывается из cash.transactions.
  2. в новый трансфер в свойство previousTransfer записывается значение предидущего трансфера из cash.lastTransfer.
  3. cash.lastTransfer перезаписывается идентификатором нового трансфера.

И да, платеж нельзя редактировать после того, как он попал в transfer.

sedovalx commented 9 years ago

@Argelein воу-воу! Полегче :) Смотри вот это #60 . Я почти уверен, что нам не нужно хранить состояние счета нигде, иначе получим кучу проблем с синхронизацией изменений.

kirzas commented 9 years ago

этот пункт тогда отменяется?

sedovalx commented 9 years ago

@Argelein да.