Простейший биллинг

  • Автор темы Автор темы grey109
  • Дата начала Дата начала

grey109

Новичок
Приветствую!

Возникла необходимость написать простейший биллинг. Раньше никогда такого не делал или делал настолько давно, что все уже не помню :)

Перечитал кучу информации. Чтобы не совершать ошибок и не исправлять их последствия, хочу еще раз уточнить:
1. Деньги нужно хранить в mysql в формате decimal(10,2).
2. При расчетах в php буду использовать bcadd / bcsub.

Все верно?

И еще вопрос, как лучше в БД хранить операции пополнения/списания? Грубо говоря:
сумма | тип операции
100.11 | пополнение
5.78 | списание
8.32 | списание

или просто
100.11
-5.78
-8.32

Т.е. суть вопроса: нужно ли хранить знак операции или в будущем всегда по типу операции можно посчитать/проверить расходы/доходы?


Спасибо!
 
Деньги можно считать копейками, это int и можешь складывать и вычитать простыми операциями. (Поке не делишь и на float не умножаешь все ок). Как записывать в базу будешь, с минусом или в отдельные поля (дебит/кредит) не релевантно, но советую добавить на каждую строку баланс. В любом случае тип операции это больше чем списали/пополнили. И не хватает документа по которому эта операция совершена (номер счета, перевод+номер транзакции и тд.
 
Про копейки читал, но выбрал вариант с дробями, чтобы каждый раз не делить/умножать. Потому и спрашиваю про decimal / bcadd / bcsub, с ними проблем не будет при работе с дробями?

Насчет добавления строки баланса, вы советуете, каждый раз писать итог? Так?
сумма | баланс
100 | 100
-8 | 92
-10 | 82

Для чего? Для контроля, чтобы можно было в любой момент времени проверить сходиться на этой операции сумма или нет? Т.е., например, по расчету баланс на этой операции должен быть 50, а в базе записано 51?

Насчет, номеров счетов/переводов/транзакций - это сделано.
 
Баланс, удобен тем, что можно всегда делать срез, от даты по дату, состояние счета
 
Баланс, удобен тем, что можно всегда делать срез, от даты по дату, состояние счета
А если часть операций будет выкинута из прошлой недели? Пересчитывать балланс для оставшихся операций ?Или у бухгалтерии так не делается и нужно "корректировочный" взнос денег вводить ?
 
А ты не выкидывай! А дописывай, «подарили 1000 евро, тк программа не умела считать!» ну те удалять и изменять запись это табу! Только дописывать. Запрет можно на уровне triggers сделать
 
Это не бухгалтерия, это учет. В записи денег самое важное ничего не потерять, все доказательно обьяснять, тут лучше перебздеть чем недобздеть.
 
Сверху