>> Вот собственно 3ю схему хранения средств я и пропагандирую.
>
>Тогда получается что к субсчетам прикрепляется 1 или несколько услуг.
>В общем можно реализовать такую схему. при добалении услуги - она привязывается
>к корневому счету или можно сразу выбрать суб счет.
>
>Такой вопрос субсчета должны както именноваться? или могут просто нумероваться 1,2,3,4 и
>т.д. Опять истина где-то по середине :)
IMHO самая дельная реализация хранилища информации о деньгах клиента
на услуги это план счетов (придумано давно и не мною)
План счетов это некотороя древовидная иерахия.
Наример так.
В корне номер контракта, далее ветки со счетами разных услуг.
N(xxx)
+-Diaup(10)
| +- dialup_account_id(1)
| +- налик (1)
| +- безнал (2)
| +- бонусы (3)
|
+-Hosting(20)
+- virtualserver_id(1)
+- налик (1)
+- безнал (2)
+- бонусы (3)
+- virtualserver_id(2)
+- налик (1)
+- безнал (2)
+- бонусы (3)
Кадый узел дерево и его листок содержит
поля дебет/кредит
На субсчете с номером xxx.10.1.1 - содержится инфа о деньгах
клиента поступившим от него в наличной форме оплаты и т.д.
Самый важный "финт" это то что
дебет(xxx.20.1) = дебет(xxx.20.1.1) + дебет(xxx.20.1.2) + дебет(xxx.20.1.3)
дебет(xxx.20.2) = дебет(xxx.20.2.1) + дебет(xxx.20.2.2) + дебет(xxx.20.2.3)
и следом
дебет(xxx.20) = дебет(xxx.20.1) + дебет(xxx.20.2)
ну и немаловажным является то, что собственно таблицы (account_number, amount) нет,
а есть таблица операции над счетами и есить функция "СкокаСкока", которая дает ответ
сколько денег(условных попугаев) на том или другом счету имеется на тот или иной
момент времени.