Во-первых, давайте рассмотрим общая картина того, что Oracle BRM выставление счетов процесс делает:
- Составляет общую сумму воздействий на баланс, произошедших за последний месяц. Сюда может входить плата за использование и абонентская плата.
- Измените статус всех элементов счета, связанных с этим счетом, с ожидающих оплаты на открытые, чтобы они перестали накапливать расходы, и к ним можно было применить платежи. Кроме того, к счету добавляется дата платежа.
- Автоматически запрашивает платежи у процессора кредитных карт или запрашивает платежи, посылая счета-фактуры.
- Автоматическое обновление баланса счета клиента при регистрации платежа в базе данных BRM.
Итак, как все это делается на практике?
Прежде чем запускать биллинг brm на производстве, необходимо выполнить все предварительные шаги. Первым шагом является подготовка копии производственной среды - это может быть либо предпроизводственная, либо какая-либо тестовая среда. Этот шаг включает установку последней версии производственной среды на эту среду и копирование производственной базы данных. Далее, конфигурации среды должны отражать конфигурации производственной среды. Вот основные конфигурации, которые должны быть установлены соответствующим образом:
- см конфигурации ($HOME/pin/sys/cm/pin.conf),
o Убедитесь, что для записи loglevel установлено значение 1
o Измените запись для параметра agent_return на 0
o Измените значение параметра simulate_agent на 1
Эти два последних изменения сделаны для того, чтобы не привлекать никаких действий по резервированию во время bill-run.
- dm_oracle конфигурации ($HOME/pin/sys/dm_oracle/pin.conf),
o Установите параметр dm_bigsize в значение 8388608 или выше
o Установите параметр dm_shmsize в значение 33554432 или выше
o Установите значение dm_n_fe равным 8
o Установите значение dm_max_per_fe равным 16
o Установите dm_n_be в значение 24
o Установите dm_trans_be_max в значение 22
- pin_bill_accts конфигурации ($HOME/pin/apps/pin_billd/pin.conf),
o Проверьте уровень журнала. Измените его на соответствующее значение в зависимости от того, что необходимо проверить во время проверки счета: 1 или 3.
o Измените параметр children для pin_billd и pin_mta на 5
o Измените параметр per_batch для pin_billd и pin_mta на 20000
o Измените параметр fetch_size для pin_billd и pin_mta на 150000
- pin_inv_accts конфигурации ($HOME/pin/apps/pin_inv/pin.conf),
o Проверьте уровень журнала. Измените его на соответствующее значение в зависимости от того, что необходимо проверить во время проверки счета: 1 или 3.
o Измените параметр children для pin_billd и pin_mta на 5
o Измените параметр per_batch для pin_billd и pin_mta на 2000
o Измените параметр fetch_size для pin_billd и pin_mta на 15000
Чтобы получить наилучшую имитацию производства, пин billrun_virtual_time должен быть установлен на дату, когда будет выполняться реальный billrun на производстве. Как только это будет сделано, биллран можно запускать.
Мы ежемесячно запускаем биллинг с помощью скрипта pin_bill_day, который создает около 100.000 счетов в час. Сценарий создает счета для счетов, у которых дата выставления счета приходится на любой день до полуночи того дня, когда мы запускаем биллинг. Что же на самом деле делает скрипт pin_billd_day? Он запускает следующие утилиты биллинга:
- pin_deferred_act: Выполняет отложенные действия; например, если счет должен стать неактивным, эта утилита выполняет изменение статуса в запланированную дату.
- pin_bill_accts: Рассчитывает причитающийся остаток по счетам и создает счет на причитающийся остаток.
- pin_collect: Собирает причитающийся остаток по счетам, в которых используются кредитные карты и прямые дебетовые методы оплаты.
- pin_refund: Находит счета, на которых есть элементы возврата, и выполняет операции возврата в режиме онлайн.
- pin_inv_accts: Создает счет-фактуру для каждого счета, на который выставляется счет.
- pin_cycle_fees: Применяет воздействие на баланс платы за перенос цикла на счет клиента и отменяет продукты, у которых истек срок ожидания отмены.
Для проверки выполнения и эффективности работы скрипта pin_bill_day мы выполняем запросы к базе данных, чтобы получить информацию о том, сколько счетов уже сделано, сколько еще предстоит сделать, есть ли счета с ошибками и т.д.
После того, как часть работы по выставлению счетов в brm завершена и все счета созданы, начинается выставление счетов. После того, как счета созданы, они экспортируются в XML-документы, которые затем преобразуются в формат PDF.
Помимо упомянутых ранее запросов, существуют и другие запросы, которые необходимо выполнить после завершения выставления счетов и счетов-фактур, чтобы проверить точность данных, полученных в результате этого процесса. Мы выполняем партию запросов; вот некоторые из них:
- Провалился ли биллинг?
select * from billinfo_t where billing_state = 4 and bill_info_id'Bill Unit(1)';
-Ожидаемые результаты: Строки не найдены
- Существуют ли не выставленные счета?
select poid_id0, first_name,last_name,a.status from account_t a, account_nameinfo_t an where
a.poid_id0=an.obj_id0 и
created_t< и
not exists (select b.account_obj_id0 from bill_t b
где end_t= и
b.account_obj_id0=a.poid_id0);
-Ожидаемые результаты: Строки не найдены
- Есть ли законопроекты без номера законопроекта?
select * from bill_t where end_t= and bill_no is null;
- Ожидается: Строки не найдены
Любые найденные проблемы затем исследуются и исправляются с помощью системы контроля версий, где исправления позже включаются в следующую версию релиза.
Здравствуйте,
Могу ли я узнать, какую платформу Вы используете? Каков размер аппаратного обеспечения для поддержки этой реализации?
С уважением.
Здравствуйте, Аязул,
Наш клиент использует два сервера HP-UX Intanium.
BRM-серверы:
- 2 x HP Integrity RX6600
- 4 x Intel Itanium Dual Core 1.8 ГГц
- 64 ГБ памяти
- HP UX B.11.23 64 bit
- несколько Гбит ETH и 4 Гбит FC
Серверы БД BRM:
- 2 x IBM x36502
- 2x Intel Xeon Dual Core 3.16 ГГц
- 48 Гб памяти; Red Hat Enterprise Linux 4 (Nahant Update 8)
- Выделено 4 ТБ дисковой памяти
- несколько Гбит ETH и 4 Гбит FC
- База данных Oracle 10.2 EE RAC
Автоматическое управление хранением, используемое для BRM в режиме Active / Standby
Вторичный резервный узел BRM db RAC, используемый для посредничества, отчетности и других целей
Хранение:
- 1 x HP XP 24000
- Выделенные диски для базы данных BRM, управляемой ASM
- 64 ГБ кэш-памяти4 Гбит пропускной способности FC для базы данных BRM
С наилучшими пожеланиями,
Алес
Не могли бы Вы прояснить мои сомнения в oracle brm, после выставления счетов на одном и том же счете некоторые планы получили информацию, а некоторые нет, что происходит, если какой-либо флаг или другое поле данных пропущено, если тогда сообщите мне класс и тип поля ........ мы используем pin_bill_day для выставления счетов ........
Здравствуйте, Абирами
Может быть много различных причин, по которым некоторые предложения, планы или продукты становятся неактивными после выставления счета.
Биллинговые скрипты запускают одну или несколько биллинговых утилит, pin_bill_day запускает следующие биллинговые утилиты:
* pin_deferred_act
* pin_bill_accts
* pin_collect
* pin_refund
* pin_inv_accts
* pin_deposit
* pin_cycle_fees
Вы можете настроить pin_bill_day, чтобы указать, какие биллинговые утилиты запускать, и установить параметры для каждой биллинговой утилиты, чтобы указать, как их запускать.
По умолчанию утилита pin_deferred_act включена в скрипт pin_bill_day и используется для выполнения отложенных действий. Например, если CSR запланировал, что счет станет неактивным, утилита pin_deferred_act выполнит изменение статуса в запланированную дату. Это должно быть наиболее распространенной причиной того, что некоторый план становится неактивным после того, как Вы произвели биллинг.
Второй причиной может быть запуск утилиты pin_cycle_fees, которая также включена в скрипт pin_bill_day. Утилита pin_cycle_fees отменяет продукты, у которых истек срок ожидания даты отмены. Например, если для продукта установлена дата отмены в будущем, утилита pin_cycle_fees отменяет этот продукт.
Как я уже говорил, Вы можете установить параметры для каждой биллинговой утилиты, чтобы определить, как их запускать и какие действия они будут выполнять. Я предлагаю Вам в первую очередь обратить внимание на даты, которые определяют, когда какой-либо тарифный план должен быть отменен, cycle_end_t (время окончания цикла) и purchase_end_t (время окончания покупки) устанавливаются, когда Вы активируете какой-либо тарифный план, и вызывают изменение статуса (в Вашем случае на неактивный), когда Вы запускаете биллинг.
Надеюсь, мой ответ будет Вам полезен, для более подробного объяснения мне бы понадобилась более конкретная информация о счетах (планах), которые становятся неактивными, и о конфигурации биллинговых утилит.
С наилучшими пожеланиями, Алес Цветик
hi,
У меня возникла проблема. В моей базе данных есть три типа продуктов - циклические вперед, разовые, циклические просроченные. Продукты, просроченные на цикл, просто включаются в список продуктов. Однако, когда я запускаю pin_bill_day 1-го числа следующего месяца, в системе генерируются два дублирующих события. В результате в счете-фактуре отражаются две одинаковые строки, что приводит к формированию счета-фактуры с двойной суммой, которая должна быть. После первоначального анализа я обнаружил, что из-за двух исполняемых файлов pin_bill_day появляются дублирующие строки для продуктов с просроченной задолженностью по циклу. Один из них - pin_bill_accts, а другой - pin_cycle_fees.
Поэтому, не могли бы Вы сообщить мне, каким образом я могу отфильтровать расчет платы за просроченный продукт по циклу pin_cycle_fees, выполненный до pin_bill_day 1-го числа следующего месяца. Буду рад получить от Вас ответ или сообщить мне, если потребуются дополнительные разъяснения.
С уважением,
Sayan
Здравствуйте,
Я новичок в Oracle BRM и хотел бы научиться этому. Не могли бы Вы помочь мне, с чего начать. Есть ли в Интернете какие-либо документы по этому вопросу.
Здравствуйте,
Вы можете попробовать поискать в Интернете. Вы должны найти несколько видеороликов на YouTube; более того, Вы должны найти несколько документов по Oracle BRM. Как Золотой партнер Oracle, мы предлагаем книги Oracle Communications Billing and Revenue Management (аббревиатуры Oracle BRM, OBRM, OCBRM). Я предлагаю Вам начать с Oracle BRM Essentials, а затем продолжить, исходя из Ваших потребностей (разработка OCBRM, разработка OCBRM Pipeline, OCBRM Pricing, администрирование OBRM и т.д.).
С уважением,
Алес
Спасибо, Алес, ценю Ваше предложение.
У меня есть одна проблема по поводу "отсутствия цикла вперед" (большинство ошибок "bad parse of proto / hostname / port" в логах), мы снова обнаружили наличие нескольких случаев "отсутствия цикла вперед".
Ошибка ""bad parse of proto / hostname / port" больше не обнаруживается.
Почему это произошло?
Не могли бы Вы дать решение этой проблемы?
Здравствуйте, ребята,
У меня есть вопрос. Это касается отложенного выставления счетов. Каково влияние включения функции отложенного выставления счетов?
В настоящее время мы сталкиваемся с проблемами, связанными с выполнением счетов, которые значительно снизили производительность, поскольку нам приходится выполнять выставление счетов дважды, частичное выставление счетов и окончательное выставление счетов. На данный момент на выполнение первого этапа уходит более 2 дней, а проблемы, прослеживаемые на уровне базы данных, заключаются в TX - блокировке строк на bal_grp_t с помощью следующего оператора "select poid_DB, poid_ID0, poid_TYPE, poid_REV from bal_grp_t where bal_grp_t.billinfo_obj_ID0 = :1 order by bal_grp_t.poid_id0 for update of bal_grp_t.poid_id0", а также последовательное чтение файла db.
Может быть, Вы сможете дать совет, связанный с этой проблемой.
С уважением.
Привет, Аязул!
Отложенное выставление счета в основном позволяет Вам выставлять счет на события, которые старше цикла, для которого Вы создаете счет. Вы используете эту функцию, если получаете события, которые Вам необходимо выставить, но которые были сделаны в течение биллингового цикла, для которого уже был сделан billrun. Например, операторы мобильной связи, предоставляющие международный роуминг, могут получать события даже через 30 дней после завершения события/звонка, поэтому им необходимо выставлять счет и за "старые" события.
Что касается Вашей проблемы с производительностью биллинга и упомянутого SQL-оператора, то этот TX - row lock contention on bal_grp_t является лишь симптомом, а не причиной проблемы. Приведенное выше SQL-описание используется в BRM в качестве основного механизма блокировки внутри транзакции. По умолчанию BRM не блокирует все объекты, модифицируемые внутри транзакции. Вместо этого он блокирует только группу баланса счета, для которого изменяются объекты. Например, во время операции billrun, или во время операции начисления события.
Эта блокировка строки просто показывает Вам, что операция/транзакция над счетом еще не завершена, а другая операция/транзакция уже началась и запрашивает блокировку на тот же объект и, конечно же, ждет, пока первая сделает свою работу и завершит транзакцию, выполнив либо фиксацию, либо откат.
Для диагностики медленных операций SQL во время биллинга просто воспользуйтесь Oracle Database Enterprise Manager, перейдите в раздел Preformance, Top Activity и проследите за основными операторами SQL, выполняющимися в это время. Обратите внимание на те из них, которые потребляют много операций ввода-вывода или чрезмерно много процессора, они могут быть кандидатами для настройки. Иногда просто статистика базы данных, используемая SQL Optimizer, устарела, и оптимизатор выбрал неоптимальный план. Иногда Вам необходимо создать новый индекс или, возможно, изменить SQL-запрос, если Вы делаете какие-то пользовательские процедуры, не входящие в состав биллинга.
Поскольку пробег у Вас может быть разным, трудно диагностировать Ваши проблемы с производительностью только через этот блог. Иногда корни проблем лежат глубже, например, в плохой архитектуре, пользовательском коде, плохо настроенном сервере базы данных (например, недостаточно дисковых шпинделей для базы данных, поскольку в наше время продавцы ИТ-продукции любят продавать терабайты и забывают про IOPS).
С наилучшими пожеланиями,
Огнен Антонич
Здравствуйте,
Какая разница между функциональностью Pin_billd и Pin_bill_accts.? каковы входные параметры для них?
Необходимо знать разницу между balance_group, item и event?
Здравствуйте,
Текущий баланс, присутствующий в таблице "bal_sub_bals_t", не отражается на вкладке "Баланс клиентского центра". В чем может быть проблема? И как решить эту проблему. Пожалуйста, помогите.
У меня есть клиент, который отменил подписку, и я должен вернуть ему деньги, но срок действия его кредитной карты истек, поэтому я не могу обработать эту информацию, и она ежемесячно попадает в мои расхождения, так что что мне делать, чтобы решить эту проблему, кроме как сказать клиенту, чтобы он обновил кредитную карту?
Здравствуйте: В одном из предыдущих сообщений (Oct 28,2011 by admin) есть ссылка на книгу Oracle BRM essentials Book для Золотых партнеров Oracle. Не могли бы Вы предоставить мне более подробную информацию о том, как получить доступ к этим книгам? Продаете ли эти книги Вы или Oracle? Заранее спасибо.
Выставление счетов и счетов-фактур всегда выполняется в одиночном режиме, и поэтому значение per_batch не имеет значения.
Здравствуйте,
Я хочу знать, существуют ли какие-либо ограничения на количество счетов, которые могут быть сгенерированы по одному счету в BRM.
Если да, то не могли бы Вы сообщить нам, где мы можем проверить то же самое.
С уважением,
В принципе, ограничений нет, и Вы можете иметь много счетов на один счет. Для этого Вам необходимо создать больше групп балансов и каждую назначить на вновь созданную единицу счета (/billinfo)
Чтобы узнать больше, пожалуйста, прочитайте на сайте http://ow.ly/TKGc308tB9F
Здравствуйте, Рана,
Я не согласен с тем, что выставление счетов и фактур всегда выполняется в одиночном режиме. Атрибут Per_batch
задает количество объектов, обрабатываемых каждым рабочим потоком в пакетном режиме.
Для выполнения в большем количестве потоков Вам необходимо установить атрибут children в значение 2 или более.
Атрибут Children определяет количество рабочих потоков, порождаемых для выполнения указанной работы. По умолчанию это число равно 5.
В примере показана конфигурация с 10 потоками.
- pin_mta children 10
- pin_mta per_batch 600
- pin_mta per_step 1500
- pin_mta fetch_size 6000
Спасибо,
Игорь
Здравствуйте, ребята,
Как Вы проверяете выставление счетов и фактур?
Как Вы проверяете, что все счета созданы?
Как Вы проверяете, что все счета-фактуры созданы?
Спасибо,
Karl
Помимо запросов для проверки хода, производительности и завершения выполнения утилит pin_bill_accts и pin_inv_accts, существует набор запросов, которые могут быть выполнены после завершения выставления счетов и счетов-фактур для проверки точности данных, генерируемых этими процессами. Эти запросы следующие:
- Есть ли разница между событием и предметом?
select i.account_obj_id0,i.poid_id0,i.name,item_total,sum(amount),sum(amount)-item_total
from event_bal_impacts_t eb,item_t i
where eb.item_obj_id0=i.poid_id0
and i.bill_obj_id0 in (select poid_id0 from bill_t where start_t=)
и eb.resource_id=978
group by i.account_obj_id0,i.poid_id0,name,item_total
имея sum(amount)-item_total0
order by sum(amount)-item_total desc;
-Ожидается: Строки не найдены
Джон
Как Вы решаете проблемы производительности в Oracle BRM?
Патрик
Здравствуйте,
Выполняя следующие биллинговые утилиты Oracle BRM MTA, получаем следующие ошибки :
[pin_billd]$ pin_bill_accts -v
pin_bill_accts: ошибка поиска символов: pin_bill_accts: неопределенный символ:
pcm_set_multithread
[pin_billd]$ pin_collect
pin_collect: ошибка поиска символов: pin_collect: неопределенный символ:
pcm_set_multithread
[ pin_billd]$ pin_inv_accts
pin_inv_accts: ошибка поиска символов: pin_inv_accts: неопределенный символ:
pcm_set_multithread
Пожалуйста, помогите
Прошло некоторое время с момента моего последнего сообщения. Позвольте мне поделиться некоторыми SQL-запросами, которые могут помочь любому оператору Oracle BRM. В связи с ограничением безопасности блога Вы должны заменить SLT на select.
- Есть ли счет, в котором есть товары и нет счетов?;
SLT a.poid_id0,first_name,last_name,a.status
from account_t a,account_nameinfo_t an
где an.obj_id0=a.poid_id0
и не существует (SLT 1 из bill_t b
where bill_no is not null
и end_t=
and b.account_obj_id0=a.poid_id0)
и существует (SLT 1 от item_t i
where a.poid_id0=i.account_obj_id0
и effective_t=
-and item_no is not null
и item_total!=0.00)
и a.created_t<
- Ожидается: Строки не найдены
- Еще один способ;
SLT a.poid_id0,first_name,last_name,a.status
from account_t a,account_nameinfo_t an
где an.obj_id0=a.poid_id0
и не существует (SLT 1 из bill_t b
where bill_no is not null
и end_t=
and b.account_obj_id0=a.poid_id0)
и существует (SLT 1 from item_t i,billinfo_t bi
where a.poid_id0=i.account_obj_id0
и i.account_obj_id0=bi.account_obj_id0
and i.bill_obj_id0=bi.last_bill_obj_id0
и item_total!=0.00)
и a.created_t<
- Ожидается: Строки не найдены
- Есть ли разница между товаром и счетом?) b,
SLT poid_id0 bill,current_total bill_total,item_total
from (SLT poid_id0,current_total from bill_t
где end_t=
(SLT bill_obj_id0,sum(round(item_total,2)) item_total
from item_t
group by bill_obj_id0) i
where i.bill_obj_id0=b.poid_id0
и abs(current_total-item_total)>0.01;
- Ожидается: Строки не найдены
Я добавляю несколько SQL-запросов для проверки выставления счетов и счетов-фактур в Oracle BRM:
- Есть ли какой-либо не выставленный счет?) или status=1 или ar_bill_obj_id0=0 или ar_billinfo_obj_id0=0)
SLTdistinct account_obj_id0,bill_obj_id0 from item_t i
где существует
(SLT1 из bill_t b
where b.poid_id0=i.bill_obj_id0
и end_t=
и (effective_t!=
;
- Существует ли какой-либо не выставленный счет?
SLTpoid_id0, first_name,last_name,a.status
from account_t a, account_nameinfo_t an
где a.poid_id0=an.obj_id0
и created_t<
and not exists (SLTb.account_obj_id0 from bill_t b
где end_t=
и b.account_obj_id0=a.poid_id0);
-Ожидаемый результат: Строки не найдены
- Другой путь);
SLT* из billinfo_t bi
где billing_state=0
и last_bill_t=
и не существует
(SLT1 from bill_t b where b.account_obj_id0=bi.account_obj_id0
and bill_no is not null and end_t=
-Ожидаемые результаты: Строки не найдены
- Существует ли счет с двумя счетами
SLTcount(*),account_obj_id0
от bill_t
где end_t=
group by account_obj_id0
если count(*)>1;
-Ожидаемые результаты: Строки не найдены
- Существует ли законопроект без законопроекта "нет"?
SLT* от bill_t
где end_t=
и bill_no равно null;
- Ожидается: Строки не найдены
Анализ ldd libcmpin.so, libportal.so, libportal64.so и libpcmcpp67.so показал, что основная причина этой ошибки связана с (настройками пути)
libportal.so => /brmdata/opt/ifw/lib/libportal.so (0xf76c7000)
Пожалуйста, проверьте переменную $LD_LIBRARY_PATH, по умолчанию она указывает на IFW.
Для исправления ошибок выполните:
источник $PIN_HOME/source.me.csh
и продолжайте операции.
Теперь Ваши утилиты Oracle BRM должны быть в порядке.
Я также использую прилагаемые запросы для анализа своих счетов и счетов-фактур в Oracle BRM.
- Есть ли счет с дублирующим номером счета?
SLT count(*),bill_no from invoice_t
group by bill_no
если count(*)>1;
- Ожидается: Строки не найдены
- Биллинг не удался?
SLT * из billinfo_t
где billing_state = 4
- и bill_info_id<>'Bill Unit(1)';
-Ожидаемые результаты: Строки не найдены
- Законопроекты имеют надлежащую биллинфо?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,bp.poid_id0
from bill_t b,billinfo_t bi
где b.account_obj_id0=bi.account_obj_id0
и end_t=
и (b.billinfo_obj_id0<>bi.poid_id0 или b.ar_billinfo_obj_id0<>bi.ar_billinfo_obj_id0);
- Ожидается: Строки не найдены
- Счета для детей имеют надлежащий родительский счет?
SLT b.poid_id0,b.account_obj_id0,b.current_total,b.due,b.total_due,b.subords_total,b.parent_id0
from bill_t b,billinfo_t bi,billinfo_t bip,bill_t bp
где b.account_obj_id0=bi.account_obj_id0
и bi.poid_id0!=bi.ar_billinfo_obj_id0
и bi.ar_billinfo_obj_id0=bip.poid_id0
и bip.account_obj_id0=bp.account_obj_id0
и b.end_t=
и bp.end_t=
и b.parent_id0<>bp.poid_id0;
- Ожидается: Строки не найдены
- Счета для детей правильные?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0
from bill_t b,billinfo_t bi
где b.account_obj_id0=bi.account_obj_id0
и bi.poid_id0!=bi.ar_billinfo_obj_id0
и end_t=
и (current_total<>due или subords_total<>0 или parent_id0=0);
- Ожидается: Строки не найдены
- Счета для настоящих родителей - это правильно?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,ar_hierarchy_size
from bill_t b,billinfo_t bi
где b.account_obj_id0=bi.account_obj_id0
и bi.poid_id0=bi.ar_billinfo_obj_id0
и end_t=
и subords_total<>0
и (current_total<>0 или parent_id0<>0 или subords_total<>due или ar_hierarchy_size=0);
Ожидается: Строки не найдены
- Сумма счетов детей и родителей одинакова?
SLT poid_id0,subords_total,children.current_total
from bill_t b,
(SLT parent_id0,sum(current_total) current_total
from bill_t where parent_id0<>0
group by parent_id0) children
where b.poid_id0=children.parent_id0
и end_t=
и children.current_total<>subords_total;
- Ожидается: Строки не найдены
- Billinfo last_bill_t установлен правильно? –01.01 ;
SLT distinct a.poid_id0,first_name,last_name,a.status,pin2date(last_bill_t)
from billinfo_t bi,account_t a, account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и bi.last_bill_t!=.
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
- Billinfo next_bill_t установлен правильно?;
SLT distinct a.poid_id0,first_name,last_name,a.status,pin2date(last_bill_t)
from billinfo_t bi,account_t a, account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и bi.next_bill_t!= 1201820400 -01.02
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
- Billinfo future_bill_t установлен правильно?;
SLT distinct a.poid_id0,first_name,last_name,a.status,pin2date(last_bill_t)
from billinfo_t bi,account_t a, account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и bi.future_bill_t!=1204326000 -01.03
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
- Генерируется Billinfo last_bill_obj_id0?;
SLT a.poid_id0,first_name,last_name,a.status
from billinfo_t bi,account_t a,account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и не существует
(SLT 1 от bill_t b
where b.poid_id0=last_bill_obj_id0
и b.account_obj_id0=bi.account_obj_id0
и last_bill_t=end_t)
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
- Генерируется Billinfo next_bill_obj_id0?;
SLT a.poid_id0,first_name,last_name,a.status
from billinfo_t bi,account_t a, account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и не существует
(SLT 1 от bill_t b
where b.poid_id0=bill_obj_id0
и b.account_obj_id0=bi.account_obj_id0
and bi.last_bill_t=b.start_t)
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
- Генерируется Billinfo future_bill_obj_id0?;
SLT a.poid_id0,first_name,last_name,a.status
from billinfo_t bi,account_t a, account_nameinfo_t an
where account_obj_id0=a.poid_id0
и an.obj_id0=a.poid_id0
и не существует
(SLT 1 от bill_t b
where b.poid_id0=next_bill_obj_id0
и b.account_obj_id0=bi.account_obj_id0
and bi.last_bill_t=b.start_t)
и billing_status в (0,4)
и a.created_t<
- Ожидается: Строки не найдены
OK!!!
- Существует ли счет, для которого не создается счет-фактура?
SLT b.poid_id0,b.account_obj_id0,bill_no,due
from bill_t b,billinfo_t bi
где b.account_obj_id0=bi.account_obj_id0
и b.end_t=
and pay_type in (10001,10007)
и b.billinfo_obj_id0=b.ar_billinfo_obj_id0
и не существует
(SLT 1 из invoice_t i
where i.bill_obj_id0 = b.poid_id0);
Ожидается: Строки не найдены
- Есть ли какой-либо счет, который не соответствует счету
SLT * из bill_t b,invoice_t i
where b.poid_id0=i.bill_obj_id0
и (b.bill_no<>i.bill_no или b.end_t<>i.bill_date_t);
- Ожидается: Строки не найдены
- Есть ли счет-фактура с дублирующимся номером счета?
SLT count(*),bill_no from invoice_t
group by bill_no
если count(*)>1;
- Ожидается: Строки не найдены
С наилучшими пожеланиями,
Алес