Добавить комментарий

Уточнение по счетам

[quote=Serguei_Tarassov]
SQL Server умеет, начиная с 2008 версии (см. newsequentialid)
[/quote]
У меня основной целевой будет все же PostgreSQL он пока не умеет.

[quote=Serguei_Tarassov]
Давайте рассмотрим простой пример (в нем даже нет двойной записи). Имея 2 таблицы (проводки и баланс) с настраиваемой агрегацией по уровням вы умещаете туда любой биллинг с любой детализацией, пригодной для оперативного анализа и генерации выходных документов (например, счетов) и отчетности.

Операция (Первичный документ)
---
1 - Пополнение счета
    2015-04-15 15:30 
    Иванов 
    Контракт 1 
    300 руб 
2 - Услуга (звонок)  
    2015-04-16 12:45
    Иванов 
    Контракт 1 
    5 минут
    20 руб
3 - Перевод среств
    2015-04-16 12:45
    Иванов
    Контракт 1
    Контракт 2 (Петров)
    100 руб
 
 
Проводки
(С1 - счет-регистр "Счета клиентов")
--------
Счет | Период | Сумма | Основание | У1:Клиент | У2:Контракт | У3:Тип док
------------------------------------------------------------------------
С1   | 1      |  +300 | 1         | Иванов    | Контракт 1  | Пополнение 
С1   | 2      |   -20 | 2         | Иванов    | Контракт 1  | Звонок 
С1   | 2      |  -100 | 3         | Иванов    | Контракт 1  | Звонок 
С1   | 2      |  +100 | 3         | Петров    | Контракт 2  | Перевод
 
 
Баланс 
(В настройках агрегации для счета С1 используются только У1 и У2)
------
Счет | Период | Сумма | У1:Клиент | У2:Контракт
-----------------------------------------------
С1   | 1      |   300 | Иванов    | Контракт 1  
С1   | 2      |   180 | Иванов    | Контракт 1 
С1   | 2      |   100 | Петров    | Контракт 2 
[/quote]

Ну на самом деле, я думаю что стоит добавить только счета, так-как это во первых добавит двойную запись, во вторых упростит логику работы с уточняющими документами и куда они соотносятся, ну и собственно добавить только два счета "активы" и "пассивы", таблицу на расширение я конечно сделаю, но по умолчанию будет только два. И если поле счета добавить в bill.trx (что соответствует проводкам в вашей интерпретации), то получим уже идентичную схему. Если я все правильно понимаю. Ну а баланс уже можно получить из существующих данных. Если потребуется достаточно легко сделать агрегативную таблицу.