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.