En primer lugar, echemos un vistazo a un panorama general de lo que el Oracle BRM facturación proceso lo hace:
- Recopila el importe total de los impactos de saldo que se han producido en el último mes. Puede incluir cuotas de uso y cuotas de suscripción.
- Cambia el estado de todas las partidas de factura asociadas a la factura de pendientes a abiertas para que dejen de acumular cargos y se les puedan aplicar pagos. Además, se añade una fecha de vencimiento de pago a la factura.
- Solicite automáticamente los pagos a un procesador de tarjetas de crédito o solicite los pagos mediante el envío de facturas.
- Actualiza automáticamente el saldo de la cuenta de un cliente cuando se registra un pago en la base de datos BRM.
Entonces, ¿cómo se hace todo esto en la práctica?
Antes de ejecutar una facturación brm en producción, es necesario que se ejecuten todos los pasos previos. El primer paso consiste en preparar una copia del entorno de producción, que puede ser de preproducción o algún entorno de pruebas. Este paso incluye la instalación de la última versión de producción en este entorno y la copia de la base de datos de producción. A continuación, las configuraciones del entorno tienen que reflejar las de producción. Estas son las principales configuraciones, que deben establecerse adecuadamente:
- cm configuración ($HOME/pin/sys/cm/pin.conf),
o Verifique que la entrada loglevel está ajustada a 1
o Cambie la entrada del parámetro agent_return a 0
o Cambie la entrada del parámetro simulate_agent a 1
Estos dos últimos cambios se realizan para no implicar ninguna acción de aprovisionamiento durante la facturación.
- dm_oracle configuración ($HOME/pin/sys/dm_oracle/pin.conf),
o Ajuste el parámetro dm_bigsize a 8388608 o superior
o Establezca el parámetro dm_shmsize en 33554432 o superior
o Establezca dm_n_fe en 8
o Establezca dm_max_per_fe en 16
o Ajuste dm_n_be a 24
o Establezca dm_trans_be_max en 22
- pin_bill_accts configuración ($HOME/pin/apps/pin_billd/pin.conf),
o Verifique el nivel de registro. Cámbielo al valor adecuado en función de lo que deba comprobarse durante la prueba de facturación, ya sea 1 ó 3.
o Cambie el parámetro children para pin_billd y pin_mta a 5
o Cambie el parámetro per_batch para pin_billd y pin_mta a 20000
o Cambie el parámetro fetch_size para pin_billd y pin_mta a 150000
- pin_inv_accts configuración ($HOME/pin/apps/pin_inv/pin.conf),
o Verifique el nivel de registro. Cámbielo al valor adecuado en función de lo que deba comprobarse durante la prueba de facturación, ya sea 1 ó 3.
o Cambie el parámetro children para pin_billd y pin_mta a 5
o Cambiar el parámetro per_batch para pin_billd y pin_mta a 2000
o Cambie el parámetro fetch_size para pin_billd y pin_mta a 15000
Para obtener la mejor simulación posible de la producción, el pin_virtual_time del billrun debe ajustarse a la fecha en la que se ejecutará el billrun real en la producción. Una vez hecho esto, se puede iniciar el billrun.
Ejecutamos la facturación mensualmente con el script pin_bill_day que crea unas 100.000 facturas por hora. El script crea facturas para cuentas en las que la fecha de facturación es cualquier día anterior a la medianoche del día en que ejecutamos la facturación. ¿Qué hace realmente el script pin_billd_day? Ejecuta las siguientes utilidades de facturación:
- pin_accion_aplazada: Ejecuta acciones diferidas; por ejemplo, si una cuenta debe volverse inactiva, esta utilidad realiza el cambio de estado en la fecha programada.
- pin_bill_accts: Calcula el saldo adeudado de las cuentas y crea una factura por el saldo adeudado.
- pin_collect: Cobra el saldo adeudado de las cuentas que utilizan tarjetas de crédito y métodos de pago de débito directo.
- pin_refund: Busca cuentas que tengan elementos de reembolso y realiza transacciones de reembolso en línea.
- pin_inv_accts: Crea una factura para cada cuenta facturada.
- pin_cycle_fees: Aplica a la cuenta del cliente el impacto del saldo de la tarifa por ciclo y cancela los productos que tienen una fecha de cancelación pendiente de vencimiento.
Para verificar el progreso y el rendimiento del script pin_bill_day, ejecutamos consultas contra la base de datos para obtener información sobre cuántas facturas están hechas, cuántas quedan por hacer, si hay alguna factura con errores, etc.
Una vez finalizada la parte de facturación brm y creadas todas las facturas, se inicia la facturación. Una vez creadas las facturas, se exportan a documentos XML, que luego se convierten a formato PDF.
Además de las consultas mencionadas anteriormente, también hay otras consultas que deben ejecutarse una vez finalizada la facturación, con el fin de verificar la exactitud de los datos generados por este proceso. Ejecutamos un lote de consultas; he aquí algunas de ellas:
- ¿Ha fallado la facturación?
select * from billinfo_t where billing_state = 4 and bill_info_id'Factura Unidad(1)';
-Resultados esperados: No se han encontrado filas
- ¿Hay cuentas sin facturar?
select poid_id0, first_name,last_name,a.status from account_t a, account_nameinfo_t an where
a.poid_id0=an.obj_id0 y
created_t< y
not exists (select b.account_obj_id0 from bill_t b
where fin_t= and
b.account_obj_id0=a.poid_id0);
-Resultados esperados: No se han encontrado filas
- ¿Hay facturas sin número de factura?
select * from factura_t where fin_t= and factura_no es null;
- Esperado: No se han encontrado filas
A continuación, se investigan los problemas encontrados y se corrigen a través del sistema de control de versiones, donde las correcciones se incluyen posteriormente en la siguiente versión de lanzamiento.
Hola,
¿Puedo saber qué plataforma está utilizando? ¿Cuál es el tamaño del hardware para soportar esta implementación?
Saludos.
Hola Ayazul,
Nuestro cliente utiliza dos servidores HP-UX Intanium.
Servidores BRM:
- 2 x HP Integrity RX6600
- 4 x Intel Itanium Dual Core 1,8 GHz
- 64 GB de memoria
- HP UX B.11.23 64 bits
- múltiples Gbit ETH y 4Gb FC
Servidores BRM DB:
- 2 x IBM x36502
- 2x Intel Xeon Dual Core 3,16 GHz
- 48 GB de memoria; Red Hat Enterprise Linux 4 (Nahant Update 8)
- 4 TB de almacenamiento en disco asignados
- múltiples Gbit ETH y 4Gb FC
- Oracle 10.2 EE Base de datos RAC
Gestión automática de almacenamiento utilizada para BRM en modo activo / en espera
Nodo RAC db secundario BRM en espera utilizado para mediación, informes y otros fines
Almacenamiento:
- 1 x HP XP 24000
- discos dedicados para la base de datos BRM gestionada por ASM
- Caché de 64 GBAncho de banda de 4 Gbit FC para la base de datos BRM
Saludos cordiales,
Ales
puede u pls aclarar mis dudas en oracle brm , despues de facturar en la misma cuenta algunos planes se incative y algunos no , y su sucediendo si alguna bandera o algunos otros datos de campo perdido ,, si entonces me deja saber la clase y el tipo de campo ........ estamos utilizando pin_bill_day para la facturacion .......
Hola, Abirami
Puede haber muchas razones diferentes por las que algunas ofertas, planes o productos queden inactivos tras la facturación.
Los scripts de facturación ejecutan una o varias utilidades de facturación, pin_bill_day ejecuta las siguientes utilidades de facturación:
* pin_ferred_act
* pin_bill_accts
* pin_collect
* pin_refund
* pin_inv_accts
* pin_deposito
* pin_cycle_fees
Puede personalizar pin_bill_day para especificar qué utilidades de facturación ejecutar y establecer los parámetros de cada utilidad de facturación para especificar cómo ejecutarlas.
Por defecto, la utilidad pin_deferred_act se incluye en el script pin_bill_day y se utiliza para ejecutar acciones diferidas. Por ejemplo, si un CSR ha programado que una cuenta se vuelva inactiva, la utilidad pin_deferred_act realiza el cambio de estado en la fecha programada. Esta debería ser la razón más común por la que algunos planes se vuelven inactivos después de realizar la facturación.
La segunda razón podría ser la ejecución de la utilidad pin_cycle_fees, que también se incluye en el script pin_bill_day. La utilidad pin_cycle_fees cancela los productos que tienen una fecha de cancelación pendiente de vencimiento. Por ejemplo, si un producto está configurado para cancelarse en una fecha futura, la utilidad pin_cycle_fees cancela el producto.
Como he mencionado, puede establecer los parámetros de cada utilidad de facturación para especificar cómo ejecutarlas y qué acciones realizarán. Le sugiero que primero preste atención a las fechas que especifican cuándo debe cancelarse algún plan, cycle_end_t (hora de fin de ciclo) y purchase_end_t (hora de fin de compra) se establecen cuando activa algún plan, y activan el cambio de estado (en su caso a inactivo) cuando ejecuta la facturación.
Espero que mi respuesta le sea útil, para una explicación más detallada necesitaría información más concreta sobre las cuentas (planes) que quedan inactivas y sobre la configuración de las utilidades de facturación.
Saludos cordiales, Ales Cvetic
Hola,
Tengo un problema . En mi base de datos hay tres tipos de productos: productos de ciclo anterior, productos únicos y productos de ciclo posterior. Los productos de ciclo atrasado sólo se incluyen en la lista de productos . Sin embargo, cuando ejecuto pin_bill_day el día 1 del mes siguiente, se generan dos eventos duplicados en el sistema. Como resultado, se reflejan dos líneas iguales en la factura, lo que está generando una factura con un importe doble del que debería ser . Tras un análisis inicial he descubierto que debido a dos ejecutables de pin_bill_day se están generando líneas duplicadas para los productos atrasados del ciclo . Uno es pin_bill_accts y otro es pin_cycle_fees .
Por lo tanto, ¿puede usted por favor hágamelo saber cualquier manera para que yo pueda filtrar ciclo atraso producto cálculo de la tasa en pin_cycle_fees ejecutado por pin_bill_day del 1 del mes siguiente . Eager to know from you or let me know if further clarification is needed .
Saludos,
Sayan
Hola,
Soy nuevo en Oracle BRM y me gustaría aprenderlo. ¿podría por favor ayudarme por dónde empezar? ¿Hay algún documento disponible en línea para el mismo.
Hola,
Puede intentar buscar en Internet. Debería encontrar algunos vídeos en YouTube; además, debería encontrar algunos documentos Oracle BRM. Como socio Gold de Oracle, disponemos de los libros Oracle Communications Billing and Revenue Management ( abreviaturas Oracle BRM, OBRM, OCBRM). Le sugiero que empiece con Oracle BRM Essentials, y luego continúe, en función de sus necesidades (desarrollo de OCBRM, desarrollo de OCBRM Pipeline, fijación de precios de OCBRM, administración de OBRM, etc.).
Saludos,
Ales
Gracias Ales, le agradezco su sugerencia.
Tengo un problema sobre la "falta de ciclo de avance" (la mayoría de error "bad parse of proto / hostname / port" en los logs), hemos encontrado de nuevo la presencia de varios casos de "falta de ciclo de avance".
El error "" bad parse of proto / hostname / port "ya no se detecta.
¿por qué ocurrió?
¿podría darnos la solución a este problema?
Hola chicos,
Tengo una pregunta. Se trata de la facturación diferida. ¿Cuál es el impacto de activar la facturación diferida?
Actualmente nos enfrentamos a problemas con la ejecución de la facturación en la que ha disminuido el rendimiento significativamente ya que tenemos que ejecutar la facturación dos veces, la facturación parcial y la facturación final. En este momento, nos está llevando más de 2 días completar la primera etapa, y los problemas detectados a nivel de la base de datos son TX - row lock contention on bal_grp_t mediante esta sentencia "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" y también db file sequential read.
Tal vez pueda proporcionarnos un consejo relacionado con este tema.
Saludos.
¡Hola Ayazul!
La facturación diferida básicamente le permite facturar eventos que son anteriores al ciclo de facturación para el que está creando la factura. Se utiliza cuando se reciben eventos que es necesario facturar, pero que se realizaron durante el ciclo de facturación para el que ya se hizo la factura. Por ejemplo, los operadores de telefonía móvil que ofrecen itinerancia internacional pueden recibir eventos incluso hasta 30 días después de que se haya realizado el evento/llamada, por lo que necesitan facturar también los eventos "antiguos".
En lo que respecta a su problema de rendimiento de facturación y a la sentencia SQL mencionada, esta contención de bloqueo de TX - fila en bal_grp_t es sólo el síntoma, no la causa del problema. La sentencia SQL mencionada se está utilizando en BRM como mecanismo principal de bloqueo dentro de una transacción. BRM por defecto no bloquea todos los objetos que están siendo modificados dentro de una transacción. En su lugar, sólo bloquea el grupo de saldos de la cuenta cuyos objetos se están modificando. Por ejemplo, durante la operación de facturación, o durante la operación de cobro de un evento.
Esta contención de bloqueo de fila sólo le muestra, que la operación/transacción en la cuenta aún no ha terminado, sin embargo otra operación/transacción ya ha comenzado y está solicitando el bloqueo en el mismo objeto y por supuesto está esperando a que la primera haga su trabajo y termine su transacción ya sea haciendo un commit o rollback.
Para diagnosticar las operaciones SQL lentas durante el billrun, sólo tiene que utilizar Oracle Database Enterprise Manager e ir a Preformance, sección Top Activity y observar las principales sentencias SQL que se estén ejecutando en ese momento. Fíjese en aquellas que consumen mucha E/S o excesiva CPU, pueden ser candidatas a ser afinadas. A veces, simplemente las estadísticas de la base de datos utilizadas por el Optimizador SQL se han quedado obsoletas y el optimizador ha elegido un plan subóptimo. A veces es necesario crear un nuevo índice o tal vez cambiar la sentencia SQL si está realizando algunos procedimientos de facturación personalizados que no vienen de fábrica.
Como su kilometraje puede variar, es difícil diagnosticar sus problemas de rendimiento sólo a través de este blog. A veces los problemas de fondo son más profundos, como un mal diseño de la arquitectura, un código personalizado, un servidor de base de datos mal ajustado (por ejemplo, no hay suficientes husillos de disco para la base de datos, ya que en los tiempos modernos a los vendedores de TI sólo les gusta vender terabytes y olvidarse de las IOPS).
Saludos cordiales,
Ognjen Antonic
Hola,
¿cuál es la diferencia entre la funcionalidad de Pin_billd y Pin_bill_accts.?¿cuáles son los parámetros de entrada para ellos?
¿necesita saber la diferencia entre balance_group y item y event?
Hola,
El saldo actual presente en la tabla "bal_sub_bals_t" no se refleja en la pestaña Saldo del centro de clientes. ¿Cuál puede ser el problema? y ¿cómo resolver este problema? Por favor, ayuda.
Tengo clientes que han cancelado sus suscripciones y se supone que debo devolverles el dinero, pero su tarjeta de crédito ha caducado, por lo que no puedo procesarlo y aparece en mis discrepancias todos los meses.
Hola: En uno de los posts anteriores (28 de octubre de 2011 por admin), se hace referencia al Oracle BRM essentials Book for Oracle Gold Partners. ¿Podría facilitarme más información sobre cómo acceder a estos libros? ¿Estos libros los vende usted o Oracle? Gracias de antemano.
La facturación se ejecuta siempre en modo único y, por tanto, el valor per_batch carece de importancia.
Hola,
Quiero saber si hay alguna restricción sobre el número de facturas que se pueden generar en una cuenta en BRM.
En caso afirmativo, ¿podría indicarnos dónde podemos comprobarlo?
Saludos
Básicamente no hay restricciones y puede tener muchas facturas por cuenta. Para ello debe crear más grupos de saldos y asignar cada uno a una unidad de factura recién creada (/billinfo)
Para saber más, lea en http://ow.ly/TKGc308tB9F
Hola Rana,
No estoy de acuerdo en que la facturación se ejecute siempre en modo único. Atributo per_batch
especifica el número de objetos procesados por cada subproceso trabajador en un modo por lotes.
Para ejecutar en más hilos necesita establecer el atributo children a 2 o más.
El atributo Hijos especifica el número de subprocesos de trabajador generados para realizar el trabajo especificado. El valor predeterminado es 5.
El ejemplo muestra la configuración con 10 hilos.
- pin_mta niños 10
- pin_mta por_lote 600
- pin_mta por_paso 1500
- pin_mta fetch_size 6000
Gracias,
Igor
Hola chicos,
¿Cómo se verifica la facturación?
¿Cómo se verifica que se han creado todas las facturas?
¿Cómo se verifica que se han creado todas las facturas?
Gracias,
Karl
Además de las consultas para verificar el progreso, el rendimiento y la finalización de la ejecución de las utilidades pin_bill_accts y pin_inv_accts, existe un conjunto de consultas que pueden ejecutarse una vez finalizada la facturación para verificar la exactitud de los datos generados por estos procesos. Las consultas son las siguientes:
- ¿Hay alguna diferencia entre evento y artículo?
select i.account_obj_id0,i.poid_id0,i.name,item_total,sum(amount),sum(amount)-item_total
from evento_bal_impactos_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=)
y eb.resource_id=978
group by i.account_obj_id0,i.poid_id0,name,item_total
teniendo suma(importe)-total_artículo0
order by sum(amount)-item_total desc;
-Esperado: No se han encontrado filas
John
¿Cómo afronta los retos de rendimiento en Oracle BRM?
Patrick
Hola,
Al ejecutar las siguientes utilidades de facturación Oracle BRM MTA, obteniendo los siguientes errores :
[pin_billd]$ pin_bill_accts -v
pin_bill_accts: error de búsqueda de símbolo: pin_bill_accts: símbolo indefinido:
pcm_set_multihilo
[pin_billd]$ pin_collect
pin_collect: error de búsqueda de símbolo: pin_collect: símbolo indefinido:
pcm_set_multihilo
[ pin_billd]$ pin_inv_accts
pin_inv_accts: error de búsqueda de símbolo: pin_inv_accts: símbolo indefinido:
pcm_set_multihilo
Por favor, ayuda
Ha pasado algún tiempo desde mi último post. Permítanme compartir algunas consultas SQL, que podrían ayudar a cualquier operador Oracle BRM. Debido a la restricción de seguridad del blog tiene que sustituir SLT por select.
- ¿Hay alguna cuenta que tenga artículos y no tenga facturas?;
SLT a.poid_id0,first_name,last_name,a.status
from cuenta_t a,nombre_cuentainfo_t an
where an.obj_id0=a.poid_id0
y no existe (SLT 1 from bill_t b
where bill_no is not null
y end_t=
and b.account_obj_id0=a.poid_id0)
y existe (SLT 1 de item_t i
where a.poid_id0=i.account_obj_id0
y efectivo_t=
-y item_no es null
y item_total!=0.00)
y a.created_t<
- Esperado: No se han encontrado filas
- Una forma más;
SLT a.poid_id0,first_name,last_name,a.status
from cuenta_t a,nombre_cuentainfo_t an
where an.obj_id0=a.poid_id0
y no existe (SLT 1 from bill_t b
where bill_no is not null
y end_t=
and b.account_obj_id0=a.poid_id0)
y existe (SLT 1 from item_t i,billinfo_t bi
where a.poid_id0=i.account_obj_id0
and i.account_obj_id0=bi.account_obj_id0
and i.factura_obj_id0=bi.ultima_factura_obj_id0
y item_total!=0.00)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Hay alguna diferencia entre artículo y factura?) b,
SLT poid_id0 factura,total_actual total_factura,total_artículo
from (SLT poid_id0,current_total from bill_t
donde end_t=
(SLT factura_obj_id0,sum(round(item_total,2)) item_total
de item_t
group by factura_obj_id0) i
where i.factura_obj_id0=b.poid_id0
y abs(total_actual-total_artículos)>0,01;
- Esperado: No se han encontrado filas
Estoy añadiendo algunas consultas SQL para verificar la facturación Oracle BRM:
- ¿Hay alguna partida no facturada?) or status=1 or ar_bill_obj_id0=0 or ar_billinfo_obj_id0=0)
SLTdistinct account_obj_id0,bill_obj_id0 from item_t i
donde existe
(SLT1 de bill_t b
where b.poid_id0=i.bill_obj_id0
y end_t=
y (efectivo_t!=
;
- ¿Existe alguna cuenta no facturada?
SLTpoid_id0, nombre,apellido,a.estado
from cuenta_t a, nombre_cuenta_info_t an
where a.poid_id0=an.obj_id0
y created_t<
and not exists (SLTb.account_obj_id0 from factura_t b
donde end_t=
y b.account_obj_id0=a.poid_id0);
-Resultado esperado: No se han encontrado filas
- Otra forma);
SLT* de billinfo_t bi
donde estado_facturación=0
y last_bill_t=
y no existe
(SLT1 from factura_t b where b.account_obj_id0=bi.account_obj_id0
and bill_no is not null and end_t=
-Resultados esperados: No se han encontrado filas
- ¿Existe alguna cuenta con dos facturas
SLTcount(*),account_obj_id0
de bill_t
donde end_t=
group by cuenta_obj_id0
teniendo count(*)>1;
-Resultados esperados: No se han encontrado filas
- ¿Existe algún proyecto de ley sin proyecto de ley no?
SLT* de bill_t
donde end_t=
y bill_no es nulo;
- Esperado: No se han encontrado filas
El análisis de ldd libcmpin.so,libportal.so,libportal64.so y libpcmcpp67.so muestra que la causa raíz de este error está relacionada con ( configuración de la ruta)
libportal.so => /brmdata/opt/ifw/lib/libportal.so (0xf76c7000)
Por favor, compruebe la variable $LD_LIBRARY_PATH , por defecto apunta a IFW.
Para corregir los errores, ejecute:
source $PIN_HOME/source.me.csh
y continuar las operaciones.
Sus utilidades Oracle BRM deberían estar bien ahora.
Yo también utilizo las consultas adjuntas para revisar mi facturación Oracle BRM.
- ¿Hay alguna factura con el nº de factura duplicado?
SLT count(*),bill_no from factura_t
group by bill_no
teniendo count(*)>1;
- Esperado: No se han encontrado filas
- ¿Falló la facturación?
SLT * de billinfo_t
donde estado_facturación = 4
- y bill_info_id<>'Unidad de factura(1)';
-Resultados esperados: No se han encontrado filas
- ¿Las facturas tienen un billinfo adecuado?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,bp.poid_id0
from factura_t b,facturainfo_t bi
where b.account_obj_id0=bi.account_obj_id0
y end_t=
y (b.billinfo_obj_id0<>bi.poid_id0 o b.ar_billinfo_obj_id0<>bi.ar_billinfo_obj_id0);
- Esperado: No se han encontrado filas
- ¿Las facturas para los niños tienen factura adecuada para los padres?
SLT b.poid_id0,b.account_obj_id0,b.current_total,b.due,b.total_due,b.subords_total,b.parent_id0
from factura_t b,facturainfo_t bi,facturainfo_t bip,factura_t bp
where b.account_obj_id0=bi.account_obj_id0
y bi.poid_id0!=bi.ar_billinfo_obj_id0
and bi.ar_billinfo_obj_id0=bip.poid_id0
and bip.account_obj_id0=bp.account_obj_id0
y b.end_t=
y bp.end_t=
y b.parent_id0<>bp.poid_id0;
- Esperado: No se han encontrado filas
- ¿Las facturas de los niños son correctas?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0
from factura_t b,facturainfo_t bi
where b.account_obj_id0=bi.account_obj_id0
y bi.poid_id0!=bi.ar_billinfo_obj_id0
y end_t=
y (total_actual<>debido o subords_total<>0 o parent_id0=0);
- Esperado: No se han encontrado filas
- ¿Las facturas de los padres reales son correctas?
SLT b.poid_id0,b.account_obj_id0,current_total,due,total_due,subords_total,parent_id0,ar_hierarchy_size
from factura_t b,facturainfo_t bi
where b.account_obj_id0=bi.account_obj_id0
and bi.poid_id0=bi.ar_billinfo_obj_id0
y end_t=
y subords_total<>0
y (total_actual<>0 o parent_id0<>0 o subords_total<>debido o ar_hierarchy_size=0);
Esperado: No se han encontrado filas
- ¿La suma de las facturas de los hijos y de los padres es igual?
SLT poid_id0,subords_total,children.current_total
de bill_t b,
(SLT padre_id0,suma(total_actual) total_actual
from factura_t where padre_id0<>0
group by parent_id0) niños
where b.poid_id0=children.parent_id0
y end_t=
y children.current_total<>subords_total;
- Esperado: No se han encontrado filas
- Billinfo last_bill_t está correctamente configurado? –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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
y bi.ultima_factura_t!=
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Billinfo next_bill_t está correctamente configurado?;
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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
and bi.next_bill_t!= 1201820400 -01.02
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Future_bill_t de Billinfo está correctamente configurado?;
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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
y bi.futura_factura_t!=1204326000 -01.03
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Se genera el 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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
y no existe
(SLT 1 de bill_t b
where b.poid_id0=last_bill_obj_id0
and b.account_obj_id0=bi.account_obj_id0
y last_bill_t=end_t)
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Se genera el 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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
y no existe
(SLT 1 de bill_t b
where b.poid_id0=bill_obj_id0
and b.account_obj_id0=bi.account_obj_id0
y bi.ultima_factura_t=b.inicio_t)
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
- ¿Se genera el 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 cuenta_obj_id0=a.poid_id0
y an.obj_id0=a.poid_id0
y no existe
(SLT 1 de bill_t b
where b.poid_id0=next_bill_obj_id0
and b.account_obj_id0=bi.account_obj_id0
y bi.ultima_factura_t=b.inicio_t)
y estado_facturación en (0,4)
y a.created_t<
- Esperado: No se han encontrado filas
¡¡OK!!
- ¿Hay alguna factura para la que no se haya creado factura?
SLT b.poid_id0,b.account_obj_id0,bill_no,due
from factura_t b,facturainfo_t bi
where b.account_obj_id0=bi.account_obj_id0
y b.end_t=
y tipo_pago en (10001,10007)
and b.billinfo_obj_id0=b.ar_billinfo_obj_id0
y no existe
(SLT 1 de factura_t i
where i.bill_obj_id0 = b.poid_id0);
Esperado: No se han encontrado filas
- ¿Hay alguna factura que no corresponda a factura
SLT * from factura_t b,factura_t i
where b.poid_id0=i.bill_obj_id0
y (b.bill_no<>i.factura_no o b.fin_t<>i.fecha_factura_t);
- Esperado: No se han encontrado filas
- ¿Hay alguna factura con el nº de factura duplicado?
SLT count(*),bill_no from factura_t
group by bill_no
teniendo count(*)>1;
- Esperado: No se han encontrado filas
Saludos cordiales,
Ales