Primeiro, vamos dar uma vista de olhos a um quadro geral do que o Oracle BRM facturação processo:
- Compila o valor total dos impactos no saldo que ocorreram no mês passado. Isto pode incluir taxas de utilização e taxas de subscrição.
- Altera o status de todos os itens de fatura associados à fatura de pendentes para abertos, de modo que eles parem de acumular cobranças e os pagamentos possam ser aplicados a eles. Além disso, uma data de vencimento do pagamento é adicionada à conta.
- Solicita automaticamente pagamentos a um processador de cartões de crédito ou solicita pagamentos através do envio de facturas.
- Actualiza automaticamente o saldo da conta de um cliente quando um pagamento é registado na base de dados BRM.
Então, como é que tudo isto é feito na prática?
Antes de executar uma faturação brm em produção, é necessário que sejam executados todos os passos pré-requisitos. O primeiro passo é preparar uma cópia do ambiente de produção - pode ser um ambiente de pré-produção ou um ambiente de teste. Este passo inclui a instalação da última versão de produção neste ambiente e a cópia da base de dados de produção. Em seguida, as configurações do ambiente têm de refletir as da produção. Aqui estão as principais configurações, que devem ser definidas adequadamente:
-• cm configuração ($HOME/pin/sys/cm/pin.conf),
o Verifique se a entrada loglevel está definida para 1
o Altere a entrada do parâmetro agent_return para 0
o Altere a entrada do parâmetro simulate_agent para 1
Estas duas últimas alterações são efectuadas de modo a não implicar qualquer ação de aprovisionamento durante a faturação.
-• dm_oracle ($HOME/pin/sys/dm_oracle/pin.conf),
o Defina o parâmetro dm_bigsize para 8388608 ou superior
o Defina o parâmetro dm_shmsize para 33554432 ou superior
o Defina dm_n_fe para 8
o Defina dm_max_per_fe para 16
o Defina dm_n_be para 24
o Defina dm_trans_be_max para 22
-• pin_bill_accts ($HOME/pin/apps/pin_billd/pin.conf),
o Verifique o nível de registo. Altere-o para o valor apropriado, dependendo do que precisa de ser verificado durante o teste de faturação, 1 ou 3.
o Altere o parâmetro de crianças para pin_billd e pin_mta para 5
o Altere o parâmetro per_batch para pin_billd e pin_mta para 20000
o Altere o parâmetro fetch_size para pin_billd e pin_mta para 150000
-• pin_inv_accts ($HOME/pin/apps/pin_inv/pin.conf),
o Verifique o nível de registo. Altere-o para o valor apropriado, dependendo do que precisa de ser verificado durante o teste de faturação, 1 ou 3.
o Altere o parâmetro de crianças para pin_billd e pin_mta para 5
o Altere o parâmetro per_batch para pin_billd e pin_mta para 2000
o Altere o parâmetro fetch_size para pin_billd e pin_mta para 15000
Para obter a melhor simulação possível da produção, o pin_virtual_time da faturação tem de ser definido para a data em que a faturação real na produção será executada. Uma vez feito isso, a execução da fatura pode ser iniciada.
Executamos a faturação mensalmente com o script pin_bill_day que cria cerca de 100.000 facturas por hora. O script cria facturas para contas em que a data de faturação é qualquer dia antes da meia-noite do dia em que executamos a faturação. Então, o que é que o script pin_billd_day faz realmente? Executa os seguintes utilitários de faturação:
- pin_deferred_act: Executa acções diferidas; por exemplo, se uma conta se tornar inativa, este utilitário efectua a alteração do estado na data prevista.
- pin_bill_accts: Calcula o saldo devedor das contas e cria uma fatura para o saldo devedor.
- pin_collect: Recolhe o saldo devido para contas que utilizam cartões de crédito e métodos de pagamento de débito direto.
- pin_refund: Encontra contas que têm itens de reembolso e efectua transacções de reembolso online.
- pin_inv_accts: Cria uma fatura para cada conta que é facturada.
- pin_cycle_fees: Aplica o impacto do saldo da taxa do ciclo avançado à conta do cliente e cancela os produtos que têm uma data de cancelamento pendente expirada.
Para verificar o progresso e o desempenho do script pin_bill_day, executamos consultas na base de dados para obter informações sobre quantas facturas estão feitas, quantas ainda estão por fazer, se há facturas com erros, etc.
Depois de terminada a parte de faturação do brm e de todas as facturas terem sido criadas, começa a faturação. Após a criação das facturas, estas são exportadas para documentos XML, que são depois convertidos para o formato PDF.
Para além das consultas mencionadas anteriormente, existem também outras consultas que têm de ser executadas quando a faturação e a cobrança estiverem concluídas, de modo a verificar a exatidão dos dados gerados por este processo. Executamos um lote de consultas; aqui estão algumas delas:
-• A faturação falhou?
seleccione * from billinfo_t where billing_state = 4 and bill_info_id'Bill Unit(1)';
-Resultados esperados: Não foram encontradas linhas
-• Existem contas não facturadas?
seleccione poid_id0, first_name,last_name,a.status from account_t a, account_nameinfo_t an where
a.poid_id0=an.obj_id0 e
created_t< e
not exists (select b.account_obj_id0 from bill_t b
em que end_t= e
b.account_obj_id0=a.poid_id0);
-Resultados esperados: Não foram encontradas linhas
-• Há alguma fatura sem número de fatura?
seleccione * from bill_t where end_t= and bill_no is null;
- Esperado: Nenhuma linha encontrada
Quaisquer problemas encontrados são então investigados e corrigidos através do sistema de controlo de versões, onde as correcções são posteriormente incluídas na versão seguinte.
Hi,
Posso saber que plataforma está a utilizar? Qual é o tamanho do hardware para suportar esta implementação?
Cumprimentos.
Olá Ayazul,
O nosso cliente utiliza dois servidores HP-UX Intanium.
Servidores BRM:
- 2 x HP Integrity RX6600
- 4 x Intel Itanium Dual Core 1,8 GHz
- 64 GB de memória
- HP UX B.11.23 64 bits
- múltiplos Gbit ETH e 4Gb FC
Servidores de BD BRM:
- 2 x IBM x36502
- 2x Intel Xeon Dual Core 3,16 GHz
- 48 GB de memória; Red Hat Enterprise Linux 4 (Atualização Nahant 8)
- 4 TB de armazenamento em disco atribuídos
- múltiplos Gbit ETH e 4Gb FC
- Oracle 10.2 EE Base de dados RAC
Gestão automática do armazenamento utilizada para BRM em modo ativo/em espera
Nó BRM standby db RAC secundário utilizado para mediação, relatórios e outros fins
Armazenamento:
- 1 x HP XP 24000
- discos dedicados para a base de dados BRM gerida pelo ASM
- 64 GB de cache4 Gbit de largura de banda FC para base de dados BRM
Com os melhores cumprimentos,
Cervejas
Pode esclarecer as minhas dúvidas no oracle brm, após a faturação na mesma conta alguns planos ficaram incativos e outros não, o que está a acontecer se algum sinalizador ou algum outro campo de dados falhou, se então me informar a classe e o tipo de campo ........ estamos a usar pin_bill_day para faturação .......
Olá, Abirami
Pode haver muitas razões diferentes para que algumas ofertas, planos ou produtos fiquem inactivos após a faturação.
Os scripts de faturação executam um ou mais utilitários de faturação, pin_bill_day executa os seguintes utilitários de faturação:
* pin_deferred_act
* pin_bill_accts
* pin_collect
* pin_refund
* pin_inv_accts
* pin_deposit
* taxas_de_ciclo_de_pinos
Pode personalizar pin_bill_day para especificar quais os utilitários de faturação a executar e definir os parâmetros para cada utilitário de faturação para especificar como executá-los.
Por predefinição, o utilitário pin_deferred_act está incluído no script pin_bill_day e é utilizado para executar acções diferidas. Por exemplo, se um CSR tiver programado uma conta para ficar inativa, o utilitário pin_deferred_act executa a alteração de estado na data programada. Esta deve ser a razão mais comum pela qual alguns planos se tornam inactivos após a faturação.
A segunda razão pode ser a execução do utilitário pin_cycle_fees, que também está incluído no script pin_bill_day. O utilitário pin_cycle_fees cancela produtos que têm uma data de cancelamento pendente expirada. Por exemplo, se um produto estiver definido para ser cancelado numa data futura, o utilitário pin_cycle_fees cancela o produto.
Como já referi, pode definir os parâmetros de cada utilitário de faturação para especificar a forma de os executar e as acções a realizar. Sugiro que comece por prestar atenção às datas que especificam quando um plano deve ser cancelado, cycle_end_t (hora de fim do ciclo) e purchase_end_t (hora de fim da compra), que são definidas quando ativa um plano e que desencadeiam a mudança de estado (no seu caso, para inativo) quando executa a faturação.
Espero que a minha resposta lhe seja útil. Para uma explicação mais detalhada, precisaria de informações mais específicas sobre as contas (planos) que ficam inactivas e sobre a configuração dos serviços de faturação.
Com os melhores cumprimentos, Ales Cvetic
Olá,
Tenho aqui um problema. Na minha base de dados existem três tipos de produtos: de ciclo progressivo, de ciclo único e de ciclo em atraso. Os produtos com ciclo de atraso são apenas incluídos na lista de produtos. No entanto, quando executo o pin_bill_day no dia 1 do mês seguinte, são gerados dois eventos duplicados no sistema. Como resultado, duas linhas iguais são reflectidas na fatura, o que está a gerar uma fatura com o dobro do valor que deveria ser. Após uma análise inicial, verifiquei que, devido a dois executáveis do pin_bill_day, estão a ser geradas linhas duplicadas para produtos com ciclo em atraso. Um é o pin_bill_accts e o outro é o pin_cycle_fees .
Assim, pode informar-me de alguma forma para que eu possa filtrar o cálculo da taxa de produto em atraso do ciclo em pin_cycle_fees executado por pin_bill_day do dia 1 do mês seguinte. Estou ansioso por saber a sua opinião ou por me informar se precisar de mais esclarecimentos.
Cumprimentos,
Sayan
Hi,
Sou novo no Oracle BRM e gostaria de o aprender. Pode ajudar-me a saber por onde começar? Existe algum documento disponível online para o efeito.
Hi,
Pode tentar pesquisar na Internet. Deve encontrar alguns vídeos do YouTube; além disso, deve encontrar alguns documentos Oracle BRM. Como parceiro Oracle Gold, dispomos de livros Oracle Communications Billing and Revenue Management (abreviaturas Oracle BRM, OBRM, OCBRM). Sugiro que comece com o Oracle BRM Essentials, e depois continue, de acordo com as suas necessidades (Desenvolvimento OCBRM, Desenvolvimento OCBRM Pipeline, Precificação OCBRM, Administração OBRM, etc.).
Cumprimentos,
Cervejas
Obrigado, Ales, agradeço a sua sugestão.
Tenho um problema relacionado com a "falta de ciclo de avanço" (a maioria dos erros "bad parse of proto / hostname / port" nos registos), descobrimos novamente a presença de vários casos de "falta de ciclo de avanço".
O erro "" bad parse of proto / hostname / port "já não é detectado.
porque é que isto aconteceu?
Pode dar-nos a solução para este problema?
Olá pessoal,
Tenho uma pergunta a fazer-lhe. Trata-se da faturação diferida. Qual é o impacto de ativar a faturação diferida?
Atualmente, estamos a enfrentar problemas com a execução da faturação, o que diminuiu significativamente o desempenho, uma vez que temos de executar a faturação duas vezes, a faturação parcial e a faturação final. Atualmente, a primeira fase demora mais de 2 dias a ser concluída e os problemas detectados ao nível da base de dados são TX - contenção de bloqueio de linha em bal_grp_t através desta instrução "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" e também a leitura sequencial do ficheiro db.
Talvez possa dar um conselho relacionado com esta questão.
Cumprimentos.
Olá Ayazul!
A faturação diferida permite-lhe basicamente faturar eventos mais antigos do que o ciclo de faturação para o qual está a criar a fatura. Pode utilizá-la se estiver a receber eventos que precisa de faturar, mas que foram realizados durante o ciclo de faturação para o qual a faturação já foi executada. Por exemplo, os operadores móveis que fornecem roaming internacional podem receber eventos até 30 dias após a realização do evento/chamada, pelo que precisam de faturar também os eventos "antigos".
Relativamente ao seu problema de desempenho de faturação e à instrução SQL mencionada, este TX - contenção de bloqueio de linha em bal_grp_t é apenas o sintoma, não a causa do problema. A instrução SQL acima está a ser utilizada no BRM como um mecanismo principal de bloqueio dentro de uma transação. Por padrão, o BRM não bloqueia todos os objetos que estão sendo modificados dentro de uma transação. Em vez disso, bloqueia apenas o grupo de saldo da conta para a qual os objectos estão a ser modificados. Por exemplo, durante a operação de emissão de facturas ou durante a operação de cobrança de um evento.
Esta contenção de bloqueio de linha apenas lhe mostra que a operação/transação na conta ainda não foi concluída, mas que outra operação/transação já começou e está a pedir o bloqueio no mesmo objeto e está, obviamente, à espera que a primeira faça o seu trabalho e termine a sua transação, fazendo um commit ou um rollback.
Para diagnosticar operações SQL lentas durante o billrun, basta usar o Oracle Database Enterprise Manager e ir para Preformance, secção Top Activity e observar as principais instruções SQL em execução nesse momento. Preste atenção àqueles que consomem muito I/O ou CPU excessiva, eles podem ser candidatos para ajuste. Por vezes, apenas as estatísticas da base de dados utilizadas pelo SQL Optimizer ficaram desatualizadas e o optimizador escolheu um plano suboptimizado. Por vezes, precisa de criar um novo índice ou talvez alterar a instrução SQL se estiver a criar alguns procedimentos de faturação personalizados e não prontos a utilizar.
Como a sua quilometragem pode variar, é difícil diagnosticar os seus problemas de desempenho apenas através deste blogue. Por vezes, os problemas são mais profundos, como uma má conceção da arquitetura, código personalizado, servidor de base de dados mal ajustado (por exemplo, não há fusos de disco suficientes para a base de dados, uma vez que, nos tempos modernos, os vendedores de TI gostam de vender terabytes e esquecem os IOPS).
Com os melhores cumprimentos,
Ognjen Antonic
Hi,
Qual é a diferença entre a funcionalidade de Pin_billd e Pin_bill_accts? quais são os parâmetros de entrada para eles?
precisa de saber a diferença entre balance_group e item e event?
Hi,
O saldo atual presente na tabela "bal_sub_bals_t" não está a ser refletido no separador Saldo do centro do cliente. Qual poderá ser o problema? e como resolver esta questão. Por favor, ajude-nos.
Tenho um cliente que cancelou as suas subscrições e é suposto reembolsá-lo, mas o seu cartão de crédito expirou, pelo que não consigo processá-lo e está a aparecer na minha discrepância todos os meses, por isso, o que devo fazer para resolver este problema, exceto dizer ao cliente para atualizar o cartão de crédito?
Olá: Numa das publicações anteriores (28 de outubro de 2011 por admin), há uma referência ao livro Oracle BRM essentials Book for Oracle Gold Partners. Pode dar-me mais informações sobre como obter acesso a estes livros? Estes livros são vendidos por si ou pelo Oracle? Obrigado, desde já.
A faturação e a cobrança são sempre executadas em modo único, pelo que o valor per_batch não tem qualquer importância.
Hi,
Gostaria de saber se existem restrições quanto ao número de facturas que podem ser geradas numa conta no BRM.
Em caso afirmativo, pode informar-nos onde podemos verificar o mesmo.
Os seus cumprimentos
Basicamente, não há restrições e pode ter muitas facturas por conta. Para tal, tem de criar mais grupos de saldo e atribuir cada um deles a uma unidade de conta recém-criada (/billinfo)
Para saber mais, leia em http://ow.ly/TKGc308tB9F
Olá Rana,
Não concordo que a faturação e a cobrança sejam sempre executadas em modo único. Atributo por lote
especifica o número de objectos processados por cada thread de trabalho em modo batch.
Para correr em mais threads, tem de definir o atributo children para 2 ou mais.
O atributo Children especifica o número de threads de trabalho gerados para executar o trabalho especificado. A predefinição é 5.
O exemplo mostra a configuração com 10 threads.
- pin_mta filhos 10
- pin_mta por lote 600
- pin_mta por_passo 1500
- pin_mta fetch_size 6000
Obrigado,
Igor
Olá pessoal,
Como é que verifica a faturação e a cobrança?
Como é que verifica se todas as facturas foram criadas?
Como é que verifica se todas as facturas foram criadas?
Obrigado,
Karl
Para além das consultas para verificar o progresso, o desempenho e a conclusão da execução dos utilitários pin_bill_accts e pin_inv_accts, existe um conjunto de consultas que podem ser executadas uma vez terminada a faturação para verificar a exatidão dos dados gerados por estes processos. As consultas são as seguintes:
- Existe alguma diferença entre evento e item?
seleccione 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=)
e eb.resource_id=978
group by i.account_obj_id0,i.poid_id0,name,item_total
tendo sum(amount)-item_total0
order by sum(amount)-item_total desc;
-Esperado: Não foram encontradas linhas
João
Como é que enfrenta os desafios de desempenho no Oracle BRM?
Patrick
Hi,
Ao executar os seguintes utilitários de faturação do Oracle BRM MTA, obtém os seguintes erros :
[pin_billd]$ pin_bill_accts -v
pin_bill_accts: erro de pesquisa de símbolo: pin_bill_accts: símbolo indefinido:
pcm_set_multithread
[pin_billd]$ pin_collect
pin_collect: erro de pesquisa de símbolo: pin_collect: símbolo indefinido:
pcm_set_multithread
[ pin_billd]$ pin_inv_accts
pin_inv_accts: erro de pesquisa de símbolo: pin_inv_accts: símbolo indefinido:
pcm_set_multithread
Por favor, ajude-me
Já passou algum tempo desde o meu último post. Deixe-me partilhar algumas consultas SQL, que podem ajudar qualquer operador Oracle BRM. Devido a restrições de segurança do blogue, tem de substituir SLT por select.
- Existe alguma conta que tenha artigos e não tenha facturas?;
SLT a.poid_id0,first_name,last_name,a.status
from account_t a,account_nameinfo_t an
where an.obj_id0=a.poid_id0
e não existe (SLT 1 from bill_t b
where bill_no is not null
e end_t=
e b.account_obj_id0=a.poid_id0)
e existe (SLT 1 do item_t i
where a.poid_id0=i.account_obj_id0
e effective_t=
-e item_no não é nulo
e item_total!=0.00)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- Mais uma forma;
SLT a.poid_id0,first_name,last_name,a.status
from account_t a,account_nameinfo_t an
where an.obj_id0=a.poid_id0
e não existe (SLT 1 from bill_t b
where bill_no is not null
e end_t=
e b.account_obj_id0=a.poid_id0)
e existe (SLT 1 from item_t i,billinfo_t bi
where a.poid_id0=i.account_obj_id0
e i.account_obj_id0=bi.account_obj_id0
e i.bill_obj_id0=bi.last_bill_obj_id0
e item_total!=0.00)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- Existe alguma diferença entre item e fatura?) b,
SLT poid_id0 fatura,total_actual total_factura,total_itens
from (SLT poid_id0,current_total from bill_t
em que end_t=
(SLT bill_obj_id0,sum(round(item_total,2)) item_total
de item_t
group by bill_obj_id0) i
where i.bill_obj_id0=b.poid_id0
e abs(current_total-item_total)>0,01;
- Esperado: Nenhuma linha encontrada
Estou a adicionar algumas consultas SQL para verificar a faturação e a cobrança do Oracle BRM:
- Existe algum elemento não facturado?) ou status=1 ou ar_bill_obj_id0=0 ou ar_billinfo_obj_id0=0)
SLTdistinct account_obj_id0,bill_obj_id0 from item_t i
onde existe
(SLT1 de bill_t b
where b.poid_id0=i.bill_obj_id0
e end_t=
e (effective_t!=
;
- Existe alguma conta não facturada?
SLTpoid_id0, nome, apelido, a.status
from account_t a, account_nameinfo_t an
where a.poid_id0=an.obj_id0
e created_t<
and not exists (SLTb.account_obj_id0 from bill_t b
em que end_t=
e b.account_obj_id0=a.poid_id0);
-Resultado esperado: Não foram encontradas linhas
- Outra forma);
SLT* from billinfo_t bi
em que billing_state=0
e last_bill_t=
e não existe
(SLT1 from bill_t b where b.account_obj_id0=bi.account_obj_id0
e bill_no não é nulo e end_t=
-Resultados esperados: Não foram encontradas linhas
- Existe alguma conta com duas facturas?
SLTcount(*),account_obj_id0
de bill_t
em que end_t=
group by account_obj_id0
tendo count(*)>1;
-Resultados esperados: Não foram encontradas linhas
- Existe alguma fatura sem fatura não?
SLT* de bill_t
em que end_t=
e bill_no é nulo;
- Esperado: Nenhuma linha encontrada
A análise do ldd libcmpin.so, libportal.so, libportal64.so e libpcmcpp67.so mostrou que a causa raiz deste erro está relacionada com (definições de caminho)
libportal.so => /brmdata/opt/ifw/lib/libportal.so (0xf76c7000)
Verifique a variável $LD_LIBRARY_PATH, que por defeito aponta para o IFW.
Para corrigir os erros, execute:
fonte $PIN_HOME/source.me.csh
e continue as operações.
Os seus utilitários Oracle BRM devem estar agora bem.
Também estou a utilizar as consultas anexas para analisar a minha faturação e a faturação do Oracle BRM.
- Existe alguma fatura com um número de fatura duplicado?
SLT count(*),bill_no from invoice_t
group by bill_no
tendo count(*)>1;
- Esperado: Nenhuma linha encontrada
- A faturação falhou?
SLT * de billinfo_t
where billing_state = 4
- e bill_info_id<>"Unidade de faturação(1)";
-Resultados esperados: Não foram encontradas linhas
- As facturas têm informação adequada?
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
where b.account_obj_id0=bi.account_obj_id0
e end_t=
e (b.billinfo_obj_id0<>bi.poid_id0 ou b.ar_billinfo_obj_id0<>bi.ar_billinfo_obj_id0);
- Esperado: Nenhuma linha encontrada
- As facturas para crianças têm uma fatura adequada para os pais?
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
where b.account_obj_id0=bi.account_obj_id0
e bi.poid_id0!=bi.ar_billinfo_obj_id0
e bi.ar_billinfo_obj_id0=bip.poid_id0
e bip.account_obj_id0=bp.account_obj_id0
e b.end_t=
e bp.end_t=
e b.parent_id0<>bp.poid_id0;
- Esperado: Nenhuma linha encontrada
- As contas para crianças estão correctas?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0
from bill_t b,billinfo_t bi
where b.account_obj_id0=bi.account_obj_id0
e bi.poid_id0!=bi.ar_billinfo_obj_id0
e end_t=
e (total_actual<>devido ou subords_total<>0 ou parent_id0=0);
- Esperado: Nenhuma linha encontrada
- As contas dos pais reais estão correctas?
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
where b.account_obj_id0=bi.account_obj_id0
e bi.poid_id0=bi.ar_billinfo_obj_id0
e end_t=
e subords_total<>0
e (total_actual<>0 ou parent_id0<>0 ou subords_total<>devido ou ar_hierarchy_size=0);
Esperado: Nenhuma linha encontrada
- A soma das facturas dos filhos e dos pais é igual?
SLT poid_id0,subords_total,children.current_total
de bill_t b,
(SLT parent_id0,sum(current_total) current_total
from factura_t where pai_id0<>0
group by parent_id0) crianças
where b.poid_id0=filhos.parent_id0
e end_t=
e filhos.current_total<>subords_total;
- Esperado: Nenhuma linha encontrada
- A informação de faturação last_bill_t está corretamente definida? –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
e an.obj_id0=a.poid_id0
e bi.last_bill_t!=
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- A informação de faturação next_bill_t está corretamente definida?;
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
e an.obj_id0=a.poid_id0
e bi.next_bill_t!= 1201820400 -01.02
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- A informação de faturação future_bill_t está corretamente definida?;
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
e an.obj_id0=a.poid_id0
e bi.future_bill_t!=1204326000 -01.03
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- O recibo de faturação last_bill_obj_id0 é gerado?;
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
e an.obj_id0=a.poid_id0
e não existe
(SLT 1 de bill_t b
where b.poid_id0=last_bill_obj_id0
e b.account_obj_id0=bi.account_obj_id0
e last_bill_t=end_t)
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- A informação de faturação next_bill_obj_id0 é gerada?;
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
e an.obj_id0=a.poid_id0
e não existe
(SLT 1 de bill_t b
where b.poid_id0=bill_obj_id0
e b.account_obj_id0=bi.account_obj_id0
e bi.last_bill_t=b.start_t)
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
- O recibo de faturação future_bill_obj_id0 é gerado?;
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
e an.obj_id0=a.poid_id0
e não existe
(SLT 1 de bill_t b
where b.poid_id0=next_bill_obj_id0
e b.account_obj_id0=bi.account_obj_id0
e bi.last_bill_t=b.start_t)
e billing_status in (0,4)
e a.created_t<
- Esperado: Nenhuma linha encontrada
OK!!!
- Existe alguma fatura para a qual não tenha sido criada?
SLT b.poid_id0,b.account_obj_id0,bill_no,due
from bill_t b,billinfo_t bi
where b.account_obj_id0=bi.account_obj_id0
e b.end_t=
e pay_type in (10001,10007)
e b.billinfo_obj_id0=b.ar_billinfo_obj_id0
e não existe
(SLT 1 de factura_t i
where i.bill_obj_id0 = b.poid_id0);
Esperado: Nenhuma linha encontrada
- Existe alguma fatura que não corresponda à fatura
SLT * from bill_t b,invoice_t i
where b.poid_id0=i.bill_obj_id0
e (b.bill_no<>i.bill_no ou b.end_t<>i.bill_date_t);
- Esperado: Nenhuma linha encontrada
- Existe alguma fatura com um número de fatura duplicado?
SLT count(*),bill_no from invoice_t
group by bill_no
tendo count(*)>1;
- Esperado: Nenhuma linha encontrada
Com os melhores cumprimentos,
Cervejas