vdd » 14 авг 2015, 11:21
$this->bbcode_second_pass_quote('Администратор', '') думаю, не стоит жёстко ставить соответствие договор с абонентом = договор бгбиллинг.
Первое - юридический термин, второе - техническая абстракция, специфичная для нашего продукта.
"Жестко" - "это другая газета". Есть типовые схемы (и не типовые...) трансляции терминов предметной области в технические абстракции БГБиллинга. И чем точнее транслируются термины в технические абстракции, тем проще эти схемы сопровождаются.
Предложенные юниты никак не запрещали пользователю свалить любое количество договоров с абонентом в один бгбДоговор.
Один Договор - один бгбДоговор: типовая схема трансляции, от которой я отталкивался.
$this->bbcode_second_pass_quote('Администратор', '
')Рассмотрим фундаментальные понятия, как будто договора биллинга и нет. Что требуется для гибкого учёта. А после подумаем, как это вписать в текущую схему.
1) Балансы - куда заносятся приходы и списываются средства, может быть режим кредит / дебет.
2) Тарифы - стоимость и правила/ограничения предоставления услуг, также с периодами.
3) Ресурсы - логины, адреса, телефонные номера с периодами.
4) Статусы - глобальные состояния, тоже с периодами.
Начать, думаю, нужно с ресурсов.
Для каждого Ресурса соотносится:
1) один глобальный Статус, определяющий его состояние;
2) один или несколько Тарифов с указанием порядка с привязанным Балансами (для телефонии).
Далее нужен некий группирующий признак. Чтобы настраивать однотипные ресурсы. Например, на одном адресе. Либо телефонные номера по одной схеме операторов (местный + какой-то МГМН).
В юните можно установит Тарифы с порядком + Балансы, также определить глобальный статус.
Ресурсы помещаются в юнит либо непосредственно соотносятся со статусом и тарифами + балансами.
Всё ли я учёл?
Похоже.
Не указано, как будут задаваться телефонные номера для схемы "(местный + какой-то МГМН)".
Модуль VoIP сливается с модулем Phone.