Per prima cosa, diamo un'occhiata a una quadro generale di ciò che il Oracle BRM fatturazione Il processo lo fa:
- Compila l'importo totale degli impatti sul saldo che si sono verificati nell'ultimo mese. Questo può includere le spese di utilizzo e le spese di abbonamento.
- Cambia lo stato di tutte le voci di fattura associate alla fattura da in sospeso ad aperte, in modo che smettano di accumulare addebiti e si possano applicare i pagamenti. Inoltre, viene aggiunta una data di scadenza del pagamento alla fattura.
- Richiede automaticamente i pagamenti da un processore di carte di credito o richiede i pagamenti inviando le fatture.
- Aggiorna automaticamente il saldo del conto di un cliente quando un pagamento viene registrato nel database BRM.
Quindi, come si fa tutto questo nella pratica?
Prima di eseguire una fatturazione brm in produzione, è necessario eseguire tutte le fasi preliminari. Il primo passo consiste nel preparare una copia dell'ambiente di produzione - che può essere di pre-produzione o di un ambiente di test. Questa fase comprende l'installazione dell'ultima release di produzione in questo ambiente e la copia del database di produzione. Successivamente, le configurazioni dell'ambiente devono riflettere quelle della produzione. Ecco le configurazioni principali, che devono essere impostate in modo appropriato:
- cm ($HOME/pin/sys/cm/pin.conf),
o Verificare che la voce loglevel sia impostata su 1
o Modifichi la voce per il parametro agent_return a 0
o Modifichi la voce del parametro simulate_agent a 1.
Queste due ultime modifiche vengono effettuate in modo da non comportare alcuna azione di provisioning durante l'esecuzione della fattura.
- dm_oracle ($HOME/pin/sys/dm_oracle/pin.conf),
o Imposti il parametro dm_bigsize a 8388608 o superiore.
o Imposti il parametro dm_shmsize a 33554432 o superiore.
o Impostare dm_n_fe su 8
o Impostare dm_max_per_fe su 16
o Impostare dm_n_be su 24
o Impostare dm_trans_be_max su 22
- pin_fattura_atti ($HOME/pin/apps/pin_billd/pin.conf),
o Verifichi il livello di log. Lo modifichi con il valore appropriato a seconda di ciò che deve essere controllato durante il test della fattura, 1 o 3.
o Modifichi il parametro bambini per pin_billd e pin_mta a 5
o Modificare il parametro per_batch per pin_billd e pin_mta a 20000.
o Modificare il parametro fetch_size per pin_billd e pin_mta a 150000.
- pin_inv_accts ($HOME/pin/apps/pin_inv/pin.conf),
o Verifichi il livello di log. Lo modifichi con il valore appropriato a seconda di ciò che deve essere controllato durante il test della fattura, 1 o 3.
o Modifichi il parametro bambini per pin_billd e pin_mta a 5
o Modificare il parametro per_batch per pin_billd e pin_mta a 2000.
o Modificare il parametro fetch_size per pin_billd e pin_mta a 15000.
Per ottenere la migliore simulazione possibile della produzione, il pin_virtual_time della billrun deve essere impostato sulla data in cui verrà eseguita la billrun reale sulla produzione. Una volta fatto questo, la billrun può essere avviata.
Eseguiamo la fatturazione mensile con lo script pin_bill_day che crea circa 100.000 fatture all'ora. Lo script crea fatture per gli account la cui data di fatturazione è qualsiasi giorno precedente alla mezzanotte del giorno in cui eseguiamo la fatturazione. Che cosa fa lo script pin_billd_day? Esegue le seguenti utility di fatturazione:
- pin_deferred_act: Esegue azioni differite; ad esempio, se un conto deve diventare inattivo, questa utility esegue il cambio di stato alla data prevista.
- pin_fattura_conti: Calcola il saldo dovuto per i conti e crea una fattura per il saldo dovuto.
- pin_collect: Incassa il saldo dovuto per i conti che utilizzano carte di credito e metodi di pagamento diretto.
- pin_refund: Trova i conti che hanno voci di rimborso ed effettua transazioni di rimborso online.
- pin_inv_accts: Crea una fattura per ogni conto che viene fatturato.
- pin_cycle_fees: Applica l'impatto del saldo delle spese di spedizione del ciclo al conto del cliente e cancella i prodotti che hanno una data di cancellazione in sospeso scaduta.
Per verificare i progressi e le prestazioni dello script pin_bill_day, eseguiamo delle query sul database per ottenere informazioni su quante fatture sono state fatte, quante devono ancora essere fatte, se ci sono fatture con errori, ecc.
Una volta terminata la parte di fatturazione brm e create tutte le fatture, inizia la fatturazione. Dopo la creazione delle fatture, queste vengono esportate in documenti XML, che vengono poi convertiti in formato PDF.
Oltre alle query menzionate in precedenza, ci sono anche altre query che devono essere eseguite una volta terminate la fatturazione e la bollettazione, per verificare l'accuratezza dei dati generati da questo processo. Eseguiamo un gruppo di query; eccone alcune:
- La fatturazione è fallita?
selezionare * da billinfo_t dove billing_state = 4 e bill_info_id'Bill Unit(1)';
-Risultati attesi: Nessuna riga trovata
- Ci sono conti non fatturati?
selezionare poid_id0, nome_nome, cognome, a.status da account_t a, account_nameinfo_t an dove
a.poid_id0=an.obj_id0 e
creato_t< e
non esiste (selezionare b.account_obj_id0 da bill_t b
dove fine_t= e
b.account_obj_id0=a.poid_id0);
-Risultati attesi: Nessuna riga trovata
- Ci sono delle fatture senza numero di fattura?
selezionare * da bill_t dove end_t= e bill_no is null;
- Previsto: Nessuna riga trovata
Qualsiasi problema riscontrato viene poi analizzato e risolto attraverso il sistema di controllo delle versioni, dove le correzioni vengono poi incluse nella versione successiva.
Salve,
Posso sapere quale piattaforma sta utilizzando? Qual è il dimensionamento dell'hardware per supportare questa implementazione?
Saluti.
Ciao Ayazul,
Il nostro cliente utilizza due server HP-UX Intanium.
Server BRM:
- 2 x HP Integrity RX6600
- 4 x Intel Itanium Dual Core 1,8 GHz
- 64 GB di memoria
- HP UX B.11.23 64 bit
- multipli Gbit ETH e 4Gb FC
Server DB BRM:
- 2 x IBM x36502
- 2x Intel Xeon Dual Core 3,16 GHz
- 48 GB di memoria; Red Hat Enterprise Linux 4 (Nahant Update 8)
- 4 TB di spazio di archiviazione su disco allocato
- multipli Gbit ETH e 4Gb FC
- Oracle Database RAC 10.2 EE
Gestione automatica dello storage utilizzata per BRM in modalità attiva/standby
Nodo BRM secondario di standby db RAC utilizzato per la mediazione, il reporting e altri scopi.
Stoccaggio:
- 1 x HP XP 24000
- dischi dedicati per il database BRM gestito da ASM
- 64 GB di cache4 Gbit di larghezza di banda FC per il database BRM
Cordiali saluti,
Le birre
Può chiarire i miei dubbi in oracle brm, dopo la fatturazione nello stesso conto, alcuni piani sono stati incativi e altri no, come mai succede se qualche flag o qualche altro campo dati è stato perso, se allora mi faccia sapere la classe e il tipo di campo ........ Stiamo usando pin_bill_day per la fatturazione .......
Ciao, Abirami
Ci possono essere molte ragioni diverse per cui alcune offerte, piani o prodotti diventano inattivi dopo la fatturazione.
Gli script di fatturazione eseguono una o più utilità di fatturazione; pin_bill_day esegue le seguenti utilità di fatturazione:
* pin_deferred_act
* pin_bill_accts
* pin_collect
* pin_refund
* pin_inv_accts
* pin_deposit
* pin_cycle_fees
Può personalizzare pin_bill_day per specificare quali utility di fatturazione eseguire e impostare i parametri di ciascuna utility di fatturazione per specificare come eseguirle.
Per impostazione predefinita, l'utilità pin_deferred_act è inclusa nello script pin_bill_day e viene utilizzata per eseguire azioni differite. Ad esempio, se un CSR ha programmato un conto per diventare inattivo, l'utilità pin_deferred_act esegue il cambiamento di stato alla data prevista. Questo dovrebbe essere il motivo più comune per cui alcuni piani diventano inattivi dopo la fatturazione.
Il secondo motivo potrebbe essere l'esecuzione dell'utilità pin_cycle_fees, che è anche inclusa nello script pin_bill_day. L'utilità pin_cycle_fees cancella i prodotti che hanno una data di cancellazione scaduta. Ad esempio, se un prodotto è impostato per essere annullato in una data futura, l'utilità pin_cycle_fees annulla il prodotto.
Come ho già detto, può impostare i parametri per ogni utility di fatturazione, per specificare come eseguirli e quali azioni eseguiranno. Le suggerisco di prestare attenzione alle date che specificano quando un piano deve essere annullato, cycle_end_t (ora di fine del ciclo) e purchase_end_t (ora di fine dell'acquisto) sono impostate quando attiva un piano e attivano il cambiamento di stato (nel suo caso inattivo) quando esegue la fatturazione.
Spero che la mia risposta le sia utile, per una spiegazione più dettagliata avrei bisogno di informazioni più specifiche sugli account (piani) che diventano inattivi e sulla configurazione delle utility di fatturazione.
Cordiali saluti, Ales Cvetic
Salve,
Ho un problema. Nel mio database ci sono tre tipi di prodotti: ciclo in avanti, una tantum, ciclo arretrato. I prodotti arretrati del ciclo sono semplicemente inclusi nell'elenco dei prodotti. Tuttavia, quando eseguo pin_bill_day il 1° del mese successivo, nel sistema vengono generati due eventi duplicati. Di conseguenza, due righe uguali si riflettono nella fattura, generando una fattura con un importo doppio rispetto a quello che dovrebbe essere. Dopo un'analisi iniziale, ho scoperto che a causa di due eseguibili di pin_fattura_giorno vengono generate linee duplicate per i prodotti arretrati del ciclo. Uno è pin_bill_accts e l'altro è pin_cycle_fees.
Quindi, per favore, può farmi sapere in che modo posso filtrare il calcolo delle tariffe del prodotto arretrato del ciclo su pin_cycle_fees eseguito da pin_bill_day del 1 ° del mese successivo. Sono ansioso di sapere da lei o di farmi sapere se sono necessari ulteriori chiarimenti.
Saluti,
Sayan
Salve,
Sono nuovo di Oracle BRM e vorrei impararlo. potrebbe aiutarmi a capire da dove iniziare. Ci sono documenti disponibili online per lo stesso scopo.
Salve,
Può provare a fare una ricerca su Internet. Dovrebbe trovare alcuni video su YouTube; inoltre, dovrebbe trovare alcuni documenti Oracle BRM. In qualità di partner Oracle Gold, disponiamo di libri Oracle Communications Billing and Revenue Management (abbreviazioni Oracle BRM, OBRM, OCBRM). Le suggerisco di iniziare con Oracle BRM Essentials, e poi di continuare, in base alle sue esigenze (sviluppo OCBRM, sviluppo OCBRM Pipeline, OCBRM Pricing, amministrazione OBRM, ecc.)
Saluti,
Le birre
Grazie Ales, apprezzo il tuo suggerimento.
Ho un problema di "mancanza di ciclo in avanti" (la maggior parte dell'errore "bad parse of proto / hostname / port" nei log), abbiamo riscontrato la presenza di diversi casi di "mancanza di ciclo in avanti".
L'errore "" cattiva analisi di proto / hostname / porta "non viene più rilevato.
Perché è successo?
Può per favore fornire la soluzione a questo problema?
Ciao ragazzi,
Ho una domanda. Riguarda la fatturazione differita. Qual è l'impatto dell'attivazione della fatturazione differita?
Attualmente stiamo affrontando dei problemi con l'esecuzione delle fatture, che ha ridotto notevolmente le prestazioni, poiché dobbiamo eseguire la fatturazione due volte, la fatturazione parziale e la fatturazione finale. Al momento, ci vogliono > 2 giorni per completare la prima fase, e i problemi tracciati a livello di database sono TX - contesa di lock di riga su bal_grp_t da questa dichiarazione "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 per l'aggiornamento di bal_grp_t.poid_id0" e anche la lettura sequenziale del file db.
Forse può fornire un consiglio in merito a questo problema.
Saluti.
Ciao Ayazul!
La fatturazione ritardata consente fondamentalmente di fatturare eventi che sono più vecchi del ciclo di fatturazione per il quale sta creando la fattura. La si utilizza se si ricevono eventi che è necessario fatturare, ma che sono stati realizzati durante il ciclo di fatturazione per il quale è già stata eseguita la fatturazione. Ad esempio, gli operatori di telefonia mobile che forniscono roaming internazionale possono ricevere eventi anche fino a 30 giorni dopo il completamento dell'evento/chiamata, per cui hanno bisogno di fatturare anche eventi "vecchi".
Per quanto riguarda il suo problema di preformance di fatturazione e l'istruzione SQL menzionata, questo TX - row lock contention su bal_grp_t è solo il sintomo, non la causa del problema. L'istruzione SQL di cui sopra viene utilizzata in BRM come meccanismo principale di blocco all'interno di una transazione. Per impostazione predefinita, BRM non blocca tutti gli oggetti che vengono modificati all'interno di una transazione. Invece blocca solo il gruppo di bilancio del conto per il quale si stanno modificando gli oggetti. Ad esempio, durante l'operazione di billrun, o durante l'operazione di addebito di un evento.
Questa contesa sul blocco di riga mostra solo che l'operazione/transazione sul conto non è ancora terminata, mentre un'altra operazione/transazione è già iniziata e sta richiedendo il blocco sullo stesso oggetto e, naturalmente, sta aspettando che la prima faccia il suo lavoro e termini la transazione eseguendo un commit o un rollback.
Per diagnosticare le operazioni SQL lente durante il billrun, basta utilizzare Oracle Database Enterprise Manager e andare su Preformance, sezione Top Activity e osservare le principali istruzioni SQL in esecuzione in quel momento. Cerchi quelle che consumano molto I/O o una CPU eccessiva, possono essere candidate per la messa a punto. A volte le statistiche del database utilizzate da SQL Optimizer sono diventate obsolete e l'ottimizzatore ha scelto un piano non ottimale. A volte è necessario creare un nuovo indice o forse modificare l'istruzione SQL, se sta realizzando delle procedure di fatturazione personalizzate e non predefinite.
Poiché il suo chilometraggio può variare, è difficile diagnosticare i suoi problemi di prestazioni solo tramite questo blog. A volte i problemi alla radice si trovano più in profondità, come ad esempio una cattiva progettazione dell'architettura, un codice personalizzato, un server di database mal regolato (ad esempio, un numero insufficiente di fusi del disco per il database, dato che ai tempi moderni i venditori IT amano vendere terabyte e dimenticare gli IOPS).
Cordiali saluti,
Ognjen Antonic
Salve,
Qual è la differenza tra le funzionalità di Pin_billd e Pin_bill_accts? Quali sono i parametri di ingresso per loro?
Ha bisogno di conoscere la differenza tra balance_group, item ed event?
Salve,
Il saldo attuale presente nella tabella "bal_sub_bals_t" non si riflette nella scheda Saldo del centro clienti. Quale potrebbe essere il problema? E come risolvere questo problema. La prego di aiutarmi.
Ho dei clienti che hanno cancellato i loro abbonamenti e dovrei rimborsarli, ma la loro carta di credito è scaduta e quindi non sono in grado di elaborarla, e ogni mese si presenta nella mia discrepanza, quindi cosa devo fare per risolvere questo problema, a parte dire al cliente di aggiornare la carta di credito?
Salve: in uno dei post precedenti (28 ottobre 2011 da admin), si fa riferimento al Libro essenziale Oracle BRM per i partner Oracle Gold. Potrebbe fornirmi maggiori informazioni su come ottenere l'accesso a questi libri? Questi libri sono venduti da lei o da Oracle? Grazie, in anticipo.
La fatturazione e l'emissione di fatture vengono sempre eseguite in modalità singola e quindi il valore per_batch non ha alcuna importanza.
Salve,
Vorrei sapere se ci sono restrizioni sul numero di fatture che possono essere generate su un conto in BRM.
In caso affermativo, può farci sapere dove possiamo verificare lo stesso.
Saluti
Fondamentalmente non ci sono restrizioni e può avere molte fatture per conto. Per ottenere questo risultato, deve creare più gruppi di bilancio e assegnare ciascuno all'unità di conto appena creata (/billinfo).
Per saperne di più, legga su http://ow.ly/TKGc308tB9F
Ciao Rana,
Non sono d'accordo sul fatto che la fatturazione e l'emissione di fatture siano sempre eseguite in modalità singola. Atributo Per_batch
specifica il numero di oggetti elaborati da ciascun thread worker in modalità batch.
Per eseguire in più thread, deve impostare l'attributo children su 2 o più.
L'attributo Children specifica il numero di thread worker generati per eseguire il lavoro specificato. Il valore predefinito è 5.
L'esempio mostra la configurazione con 10 thread.
- pin_mta bambini 10
- pin_mta per_batch 600
- pin_mta per_step 1500
- pin_mta fetch_size 6000
Grazie,
Igor
Salve ragazzi,
Come si verifica la fatturazione e l'emissione di fatture?
Come fa a verificare che tutte le fatture siano state create?
Come fa a verificare che tutte le fatture siano state create?
Grazie,
Karl
Oltre alle query per verificare l'avanzamento, le prestazioni e il completamento dell'esecuzione delle utilità pin_bill_accts e pin_inv_accts, esiste una serie di query che possono essere eseguite una volta terminata la fatturazione per verificare l'accuratezza dei dati generati da questi processi. Le query sono le seguenti:
- C'è differenza tra evento e articolo?
selezioni i.account_obj_id0,i.poid_id0,i.name,item_total,sum(amount),sum(amount)-item_total
da event_bal_impacts_t eb,item_t i
dove eb.item_obj_id0=i.poid_id0
e i.bill_obj_id0 in (selezionare poid_id0 da bill_t dove start_t=)
e eb.resource_id=978
gruppo per i.account_obj_id0,i.poid_id0,nome,item_total
avendo somma(importo)-item_totale0
Ordina per somma(importo)-totale dell'articolo desc;
-Espettato: Nessuna riga trovata
Giovanni
Come affronta le sfide della performance in Oracle BRM?
Patrick
Salve,
Eseguendo le seguenti utility di fatturazione Oracle BRM MTA, si ottengono i seguenti errori:
[pin_billd]$ pin_bill_accts -v
pin_bill_accts: errore di ricerca dei simboli: pin_bill_accts: simbolo non definito:
pcm_set_multithread
[pin_billd]$ pin_collect
pin_collect: errore di ricerca dei simboli: pin_collect: simbolo non definito:
pcm_set_multithread
[ pin_billd]$ pin_inv_acts
pin_inv_accts: errore di ricerca dei simboli: pin_inv_accts: simbolo non definito:
pcm_set_multithread
Per favore, aiutatemi
È passato un po' di tempo dal mio ultimo post. Vorrei condividere alcune query SQL, che potrebbero essere utili a qualsiasi operatore Oracle BRM. A causa della restrizione di sicurezza del blog, deve sostituire SLT con select.
- Esiste un conto che ha articoli e non ha fatture?;
SLT a.poid_id0,nome_nome,cognome,a.status
da account_t a, account_nameinfo_t an
dove an.obj_id0=a.poid_id0
e non esiste (SLT 1 da bill_t b
dove bill_no non è nullo
e end_t=
e b.account_obj_id0=a.poid_id0)
ed esiste (SLT 1 da articolo_t i
dove a.poid_id0=i.account_obj_id0
e efficace_t=
-e item_no non è nullo
e item_total!=0.00)
e a.created_t<
- Previsto: Nessuna riga trovata
- Un altro modo;
SLT a.poid_id0,nome_nome,cognome,a.status
da account_t a, account_nameinfo_t an
dove an.obj_id0=a.poid_id0
e non esiste (SLT 1 da bill_t b
dove bill_no non è nullo
e end_t=
e b.account_obj_id0=a.poid_id0)
ed esiste (SLT 1 da item_t i,billinfo_t bi
dove 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<
- Previsto: Nessuna riga trovata
- C'è differenza tra articolo e fattura?) b,
SLT poid_id0 fattura, totale corrente fattura_totale, articolo_totale
da (SLT poid_id0,current_total da bill_t
dove end_t=
(SLT bill_obj_id0, somma(round(item_total,2)) item_total
da item_t
gruppo per bill_obj_id0) i
dove i.bill_obj_id0=b.poid_id0
e abs(current_total-item_total)>0,01;
- Previsto: Nessuna riga trovata
Sto aggiungendo alcune query SQL per verificare la fatturazione e l'emissione di fatture da parte di Oracle BRM:
- C'è qualche voce non fatturata?) o status=1 o ar_bill_obj_id0=0 o ar_billinfo_obj_id0=0)
SLTdistinguere account_obj_id0,bill_obj_id0 da item_t i
dove esiste
(SLT1 da bill_t b
dove b.poid_id0=i.bill_obj_id0
e end_t=
e (effective_t!=
;
- C'è qualche conto non fatturato?
SLTpoid_id0, nome_nome, cognome, a.status
da account_t a, account_nameinfo_t an
dove a.poid_id0=an.obj_id0
e created_t<
e non esiste (SLTb.account_obj_id0 da bill_t b
dove end_t=
e b.account_obj_id0=a.poid_id0);
-Risultato atteso: Nessuna riga trovata
- Altro modo);
SLT* da billinfo_t bi
dove stato_di_fatturazione=0
e ultima_fattura_t=
e non esiste
(SLT1 da bill_t b dove b.account_obj_id0=bi.account_obj_id0
e bill_no non è nullo e end_t=
-Risultati attesi: Nessuna riga trovata
- Esiste un conto con due fatture
SLTcount(*), account_obj_id0
da bill_t
dove end_t=
gruppo per account_obj_id0
avendo count(*)>1;
-Risultati attesi: Nessuna riga trovata
- Esiste un disegno di legge senza disegno di legge no?
SLT* da bill_t
dove end_t=
e bill_no è nullo;
- Previsto: Nessuna riga trovata
L'analisi di ldd libcmpin.so, libportal.so, libportal64.so e libpcmcpp67.so ha mostrato che la causa principale di questo errore è legata a ( impostazioni di percorso)
libportal.so => /brmdata/opt/ifw/lib/libportal.so (0xf76c7000)
Controlli la variabile $LD_LIBRARY_PATH, per impostazione predefinita punta a IFW.
Per risolvere gli errori, esegua:
sorgente $PIN_HOME/source.me.csh
e continuare le operazioni.
Le sue utility Oracle BRM dovrebbero essere a posto ora.
Sto utilizzando anche le query allegate per esaminare la mia fatturazione e la fatturazione di Oracle BRM.
- C'è una fattura con un numero di fattura duplicato?
SLT count(*),bill_no da invoice_t
gruppo per bill_no
avendo count(*)>1;
- Previsto: Nessuna riga trovata
- La fatturazione non è andata a buon fine?
SLT * da billinfo_t
dove stato_di_fatturazione = 4
- e bill_info_id<>'Unità di conto(1)';
-Risultati attesi: Nessuna riga trovata
- Le fatture hanno un'informazione corretta?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,bp.poid_id0
da bill_t b, billinfo_t bi
dove b.account_obj_id0=bi.account_obj_id0
e end_t=
e (b.billinfo_obj_id0<>bi.poid_id0 o b.ar_billinfo_obj_id0<>bi.ar_billinfo_obj_id0);
- Previsto: Nessuna riga trovata
- Le fatture per i bambini hanno una fattura adeguata per i genitori?
SLT b.poid_id0,b.account_obj_id0,b.current_total,b.due,b.total_due,b.subords_total,b.parent_id0
da bill_t b, billinfo_t bi, billinfo_t bip, bill_t bp
dove 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;
- Previsto: Nessuna riga trovata
- Le bollette per i bambini sono corrette?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0
da bill_t b, billinfo_t bi
dove b.account_obj_id0=bi.account_obj_id0
e bi.poid_id0!=bi.ar_billinfo_obj_id0
e end_t=
e (current_total<>dovuto o subordine_totale<>0 o parent_id0=0);
- Previsto: Nessuna riga trovata
- Le fatture per i genitori reali sono corrette?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,ar_hierarchy_size
da bill_t b, billinfo_t bi
dove b.account_obj_id0=bi.account_obj_id0
e bi.poid_id0=bi.ar_billinfo_obj_id0
e end_t=
e subordine_totale<>0
e (current_total<>0 o parent_id0<>0 o subords_total<>o ar_hierarchy_size=0);
Atteso: Nessuna riga trovata
- La somma delle fatture dei bambini e dei genitori è uguale?
SLT poid_id0, subordini_totale, bambini.current_totale
da bill_t b,
(SLT parent_id0, somma(current_total) current_total
da bill_t dove parent_id0<>0
gruppo per parent_id0) bambini
dove b.poid_id0=figli.parent_id0
e end_t=
e children.current_total<>subordine_totale;
- Previsto: Nessuna riga trovata
- Billinfo last_bill_t è impostato correttamente? –01.01 ;
SLT distingue a.poid_id0,nome_nome,cognome_nome,a.status,pin2date(ultima_fattura_t)
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e bi.ultima_fattura_t!=
e stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
- Billinfo next_bill_t è impostato correttamente?;
SLT distingue a.poid_id0,nome_nome,cognome_nome,a.status,pin2date(ultima_fattura_t)
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e bi.next_bill_t!= 1201820400 -01.02
e stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
- Billinfo future_bill_t è impostato correttamente?;
SLT distingue a.poid_id0,nome_nome,cognome_nome,a.status,pin2date(ultima_fattura_t)
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e bi.future_bill_t!=1204326000 -01.03
e stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
- Il Billinfo last_bill_obj_id0 viene generato?;
SLT a.poid_id0,nome_nome,cognome,a.status
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e non esiste
(SLT 1 da bill_t b
dove b.poid_id0=ultimo_fattura_obj_id0
e b.account_obj_id0=bi.account_obj_id0
e ultima_fattura_t=fine_t)
e stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
- Viene generato il Billinfo next_bill_obj_id0?;
SLT a.poid_id0,nome_nome,cognome,a.status
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e non esiste
(SLT 1 da bill_t b
dove b.poid_id0=fattura_obj_id0
e b.account_obj_id0=bi.account_obj_id0
e bi.last_bill_t=b.start_t)
e stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
- Il Billinfo future_bill_obj_id0 viene generato?;
SLT a.poid_id0,nome_nome,cognome,a.status
da billinfo_t bi, account_t a, account_nameinfo_t an
dove account_obj_id0=a.poid_id0
e an.obj_id0=a.poid_id0
e non esiste
(SLT 1 da bill_t b
dove 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 stato_di_fatturazione in (0,4)
e a.created_t<
- Previsto: Nessuna riga trovata
OK!
- C'è qualche fattura per la quale non viene creata la fattura?
SLT b.poid_id0,b.account_obj_id0,bill_no,due
da bill_t b, billinfo_t bi
dove b.account_obj_id0=bi.account_obj_id0
e b.end_t=
e tipo_di_pagamento in (10001,10007)
e b.billinfo_obj_id0=b.ar_billinfo_obj_id0
e non esiste
(SLT 1 da fattura_t i
dove i.bill_obj_id0 = b.poid_id0);
Atteso: Nessuna riga trovata
- C'è una fattura che non corrisponde alla fattura?
SLT * da bill_t b, invoice_t i
dove b.poid_id0=i.bill_obj_id0
e (b.bill_no<>i.bill_no o b.end_t<>i.bill_date_t);
- Previsto: Nessuna riga trovata
- C'è qualche fattura con il numero di fattura duplicato?
SLT count(*),bill_no da invoice_t
gruppo per bill_no
avendo count(*)>1;
- Previsto: Nessuna riga trovata
Cordiali saluti,
Le birre