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

grey109

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

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

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

Все верно?

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

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

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


Спасибо!
 

WMix

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

grey109

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

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

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

Насчет, номеров счетов/переводов/транзакций - это сделано.
 

WMix

герр M:)ller
Партнер клуба
Баланс, удобен тем, что можно всегда делать срез, от даты по дату, состояние счета
 

ksnk

прохожий
Баланс, удобен тем, что можно всегда делать срез, от даты по дату, состояние счета
А если часть операций будет выкинута из прошлой недели? Пересчитывать балланс для оставшихся операций ?Или у бухгалтерии так не делается и нужно "корректировочный" взнос денег вводить ?
 

WMix

герр M:)ller
Партнер клуба
А ты не выкидывай! А дописывай, «подарили 1000 евро, тк программа не умела считать!» ну те удалять и изменять запись это табу! Только дописывать. Запрет можно на уровне triggers сделать
 

WMix

герр M:)ller
Партнер клуба
Это не бухгалтерия, это учет. В записи денег самое важное ничего не потерять, все доказательно обьяснять, тут лучше перебздеть чем недобздеть.
 
Сверху