Asientos automáticos de primas

Función

La finalidad de este programa es llevar los movimientos producidos en el área de Cartera y Cobranzas al área de Contabilidad. Este procesa todas las operaciones de primas (emisiones, modificaciones, renovaciones, anulaciones, cobros, etc.) realizadas entre las fechas indicadas al solicitar el proceso.
Este programa puede ser ejecutado con la periodicidad que el usuario desee, y ésta puede ir variando en el tiempo; ya que el programa está en capacidad de verificar a partir de una fecha dada los registros que están sin procesar. El usuario siempre debe indicar la fecha hasta la cual desea que se realicen los asientos automáticos.

Este proceso requiere que existan previamente las guías contables correspondientes a los movimientos a contabilizar.

Proceso batch

Proceso

  • Se realiza la lectura de la Tabla de Control de Fechas de Ejecución de Procesos (Ctrol_date) a fin de obtener la fecha de última ejecución del proceso contable de "primas". La fecha leída en este registro corresponde a la fecha de inicio del proceso.
  • Se realiza la lectura de la Tabla de Movimientos de Recibos (Premium_mo) con todos los registros cuya fecha de contabilización (dLedgerDat) es posterior a la fecha de inicio de proceso - fecha de la Tabla de Control de Fechas de Ejecución de Procesos (Ctrol_date) e inferior o igual a la fecha hasta de proceso dado como parámetro. Si en esta lectura no se obtiene ningún registro, se envía error correspondiente y se termina el proceso.
  • Por cada registro obtenido de esta lectura, se realiza lo siguiente:
    • Si el recibo del movimiento en tratamiento difiere del anteriormente tratado:
      • Se obtiene el registro de la Tabla de Recibos (Premium) correspondiente al recibo en tratamiento.
      • Se obtiene el registro de la Tabla de Información General de la Póliza (Policy) correspondiente a la póliza asociada del recibo en tratamiento.
      • Si la póliza tiene coaseguro (sCoinsuri) de la Tabla de Información General de la Póliza (Policy)), se busca en la Tabla de Distribución de Coaseguro (Coinsuran) la participación propia de la compañía a la que pertenece el recibo (distribución válida de la póliza asociada al recibo en tratamiento a la fecha de efecto del recibo), a fin de obtener el porcentaje de participación propia y el porcentaje de gastos administrativos.
      • Si la póliza no tiene coaseguro, el porcentaje de participación propia es 100%.
      • Si el código del ramo-producto difiere del anteriormente tratado, se realiza la lectura del registro correspondiente al ramo-producto en la Tabla Maestro de Productos (ProdMaster), a fin de obtener el tipo de producto (campo sBrancht) en tratamiento.
      • Se obtiene el tipo de producto a utilizar en la contabilidad, éste depende del tipo de producto asociado al registro leído en la Tabla Maestro de Productos (ProdMaster)
         
        ProdMaster.nBrancht Tipo de Producto
          1 1
        >1 2
      • Si el tipo de movimiento corresponde a “cobro” o “reverso de cobro”, se verifica si el recibo en tratamiento se encuentra “domiciliado” o “Con cargo automático” (campo sDirdebit) de la Tabla de Recibos (Premium). Dependiendo de este valor se procede a buscar en la Tabla de Domiciliación Bancaria (Dir_debit) el tipo de domiciliación asociado a la póliza del recibo en tratamiento.
         
        Premium.sDirDebit Tipo de domiciliación o pago.
        1 1 (En cobranza)
        2 Se debe buscar el tipo de domiciliación en la Tabla de Domiciliación Bancaria (Dir_debit) para la póliza en tratamiento
    • Se realiza la lectura en el archivo de la Tabla de Detalle de la Guía Contable (Det_lines) a fin de obtener todos los registros correspondientes a:
      •  
        Area = Primas
        Tipo de transacción = Tipo de movimiento de Premium_mo
        Origen del recibo = Origen del recibo de Premium
        Tipo del Recibo = Tipo del Recibo de Premium
        Tipo de producto = Tipo de producto obtenido
        Forma de pago de siniestros = Valor cero (0)
        Forma de pago de recibos
        =
        Forma de pago del movimiento de Premium_mo
        ó
        Valor "NULL"
    • Si no se consigue información asociada, se realiza la misma lectura cambiando sólo el tipo de producto por 'ambos' (3). Si aun no se consigue ningún registro, se realiza la impresión correspondiente en el listado de "asientos no contabilizados" y se procesa el próximo registro de la Tabla de Movimientos de Recibos (Premium_mo).
    • Si se consigue información se procede de la siguiente manera:
    • Basándose en el valor del complemento obtenido del archivo de la Tabla de Detalle de la Guía Contable (Det_lines), se obtiene la cuenta asociada a la línea del asiento a realizar. Los posibles complementos que se pueden utilizar en este proceso son:
        • No aplica, es decir, no se añade nada a la cuenta.
        • Código del ramo contable, esta información se obtiene del código de ramo contable asociado en la tabla de Detalle o Desglose del Recibo (Detail_pre).
      • Se verifica el tipo de auxiliar que tiene asociado la cuenta, dependiendo de este valor se busca el código correspondiente (moneda, zona, ramo, ramo contable, etc.) en la tabla que corresponda. Los tipos de auxiliar que se pueden utilizar en este proceso son los siguientes:
        • Moneda, la información se obtiene del código de moneda asociado al movimiento en la Tabla de Movimientos de Recibos (Premium_mo).
        • Ramo contable, la información se obtiene del código de ramo contable asociado al recibo en la Tabla de Detalle o Desglose del Recibo (Detail_pre).
        • Ramo, la información se obtiene del código de ramo asociado al recibo en la Tabla de Detalle o Desglose del Recibo (Detail_pre).
        • Sucursal, la información se obtiene del código de la sucursal asociada al recibo en la Tabla de Recibos (Premium).
        • Moneda/Sucursal, se obtiene el código de la moneda asociado al movimiento en la tabla de movimientos del recibo (Premium_mo) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Luego se toma el código de la sucursal asociada al recibo en la tabla de recibos (Premium) y también se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Por último, se concatenan ambos códigos una vez convertidos y el resultado es el código del auxiliar de la cuenta.
        • Moneda/Sucursal/Ramo, se obtiene el código de la moneda asociado al movimiento en la tabla de movimientos del recibo (Premium_mo) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Se toma el código de la sucursal asociada al recibo en la tabla de recibos (Premium) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Luego se toma el código de ramo contable asociado al recibo en la tabla de detalle o desglose del recibo (Detail_pre) y también se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Por último, se concatenan los tres códigos una vez convertidos y el resultado es el código del auxiliar de la cuenta.
        • Co-Reasegurador/Moneda, en el caso de este auxiliar, los códigos tanto de la compañía de Co/Reaseguro como de Moneda, se obtienen a partir del parámetro indicado en la guía. Luego, cada código se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones) y posteriormente se concatenan ambos códigos y el resultado es el auxiliar de la cuenta. Es de suma importancia verificar que la combinación "Parámetro-Auxiliar" sea la correcta, ya que de cualquier otro modo no se puede obtener la información necesaria para la contabilización de este tipo de auxiliar.
        • Ramo/Sucursal/Moneda, se toma el código de ramo contable asociado al recibo en la tabla de detalle o desglose del recibo (Detail_pre) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Se toma el código de la sucursal asociada al recibo en la tabla de recibos (Premium) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Luego, se obtiene el código de la moneda asociado al movimiento en la tabla de movimientos del recibo (Premium_mo) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Por último, se concatenan los tres códigos una vez convertidos y el resultado es el código del auxiliar de la cuenta.
        • Ramo/Moneda, se toma el código de ramo contable asociado al recibo en la tabla de detalle o desglose del recibo (Detail_pre) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Luego, se obtiene el código de la moneda asociado al movimiento en la tabla de movimientos del recibo (Premium_mo) y se convierte al tipo de dato "Carácter" con una longitud de cinco (5) posiciones (rellenando con ceros a la izquierda para ocupar las cinco posiciones). Por último, se concatenan ambos códigos una vez convertidos y el resultado es el código del auxiliar de la cuenta.
      • Se actualiza la fecha en que se contabilizó el movimiento (campo "dPosted" de la tabla Movimientos de Recibos (Premium_mo)) con la fecha del día
    • Se realiza una agrupación de la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail). Esto con el fin de poder “resumir” (sumarizar) las líneas generadas por los movimientos contabilizados.
    • Si el parámetro "Tipo de Proceso" indicado es igual a "Definitivo", entonces, se generan los registros correspondientes en la Tabla de Líneas de un Asiento (Acc_lines) y en la Tabla de Comprobantes Contables (Acc_transa) con la información indicada en la tabla temporal. El número de comprobante debe ser buscado en la Tabla Numerador (Numerator) con el tipo de número correspondiente a “numeración de asientos” (nTypenum = 97).

    Efecto

    Las líneas de asiento se generan en la Tabla de Líneas de un Asiento (Acc_lines), la información general del asiento o comprobante es generado en la Tabla de Comprobantes Contables (Acc_transa).
    Actualiza la Tabla de Control de Fechas de Ejecución de Procesos (Ctrol_date) y la Tabla de Movimientos de Recibos (Premium_mo) para colocar la fecha en que se contabilizó el movimiento.
    Al finalizar el proceso se debe borrar toda la información que contenga la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail).

    Notas para el programador

    La lectura de la Tabla de Movimientos de Recibos (Premium_mo) se realiza ordenando la información por los siguientes campos:
  • Fecha de contabilización.
  • Tipo de movimiento.
  • Origen de la transacción.
  • El formato de la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail), contiene la siguiente estructura:
    • Código de la compañía contable, esta información se obtiene de la Tabla Maestro de la Guía Contable (Tab_lines).
    • Código de grupo de asiento, esta información se obtiene de la Tabla Maestro de la Guía Contable (Tab_lines).
    • Cuenta contable, código de la cuenta que es afectada en el movimiento.
    • Auxiliar, código del auxiliar asociado a la cuenta contable (solo si la cuenta tiene asociado un auxiliar).
    • Indicador de “Débito” (1) o “Crédito” (2).
    • Monto con el cual es afectada la cuenta (en la moneda de la compañía contable).
    • Moneda original del movimiento.
    • Monto en moneda original del movimiento.
    • Fecha del movimiento, es la fecha en que fue creado el movimiento.
    Rutina de asientos:
    Esta rutina debe recibir como parámetros los siguientes datos:
    • Monto de la línea.
    • Valores del registro de la Tabla de Detalle de la Guía Contable (Det_lines) correspondiente al asiento a realizar.
    • Código de la cuenta contable.
    • Valor del complemento a agregar a la cuenta contable.
    • Valor del auxiliar de la cuenta contable.
    Es importante aclarar que esta rutina es utilizada por todos los procesos de asientos automáticos, ya que en todos los casos es el mismo procedimiento a realizar.
    Con el código de la compañía contable asociado a la Tabla Maestro de la Guía Contable (Tab_lines), se actualiza en el arreglo el campo que indica que la compañía ha sido utilizada, se coloca el valor de afirmativo.
    Si la variable que contiene el valor del complemento esta lleno, se agrega éste al código de cuenta contable donde debe realizarse el asiento. Para agregar el complemento se debe verificar el nivel (esta información se obtiene de la Tabla de Compañías Contables (Led_compan)) al que pertenece la cuenta y la cantidad de caracteres asociados al nivel al que pertenece el complemento a agregar. Por ejemplo, la estructura del código contable es la siguiente:
     
    Nivel Caracteres
    1 3
    2 2
    3 2
    4 4
    La cuenta a afectar es 001-03-12 y el valor del complemento es 2. Se debe completar el valor del complemento con ceros hasta llegar a la cantidad de caracteres del nivel 4 que sería el nivel de la cuenta final. El resultado debe ser 001-03-12-0002.
    El código de cuenta después de agregado el complemento y tomando en cuenta el auxiliar (si la cuenta tiene asociado alguno), debe estar registrado en el catálogo de cuentas de la Tabla de Cuentas Contables (Ledger_acc) de la compañía contable que se afecta con el asiento. En caso de no existir la cuenta, se realiza la impresión correspondiente en el listado de "asientos no contabilizados" y no se genera ningún tipo de información en la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail).
    En caso de que se encuentre registrada la cuenta en la Tabla de Cuentas Contables (Ledger_acc) se procede de la siguiente manera:
  • Se agrega un registro en la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail), tomando en cuenta el monto recibido como parámetro y la información contenida en el registro de la Tabla de Detalle de la Guía Contable (Det_lines) recibido como parámetro.
  • Si se ha solicitado la impresión del detalle de los asientos generados, se debe imprimir la línea del reporte correspondiente a cada una de las líneas generadas en el asiento.
  • Para la generación de los asientos y las líneas de los mismos se toma en cuenta la información generada en la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail). Esta información debe estar agrupada (sumarizada) por los siguientes campos:
  • Código de la compañía contable.
  • Código de grupo de asiento.
  • Cuenta contable.
  • Auxiliar de la cuenta (solo si la cuenta tiene asociado un auxiliar).
  • Moneda original del movimiento.
  • Fecha del movimiento, es la fecha en que fue creado el movimiento.
  • Indicador de “débito” (1) o “Crédito” (2).
  • Por cada código de compañía contable y código de grupo de asiento se genera un asiento en la Tabla de Comprobantes Contables (Acc_transa) con sus respectivas líneas asociadas en la Tabla de Líneas de un Asiento (Acc_lines), según la información de la Tabla Temporal de Detalle de Asientos Automáticos Contables (LedgerAutDetail).
    La descripción del (los) asiento(s) generado(s) se obtiene según el código de agrupación de asientos (valores posibles según tabla 641), además se actualiza el área del asiento “primas” y que el mismo es un asiento automático (campos de la Tabla de Comprobantes Contables (Acc_transa)). La descripción de las líneas generadas del asiento es “asiento automático de primas”.
    El proceso no toma en cuenta los siguientes movimientos:

    Fórmulas

    La tabla de parámetros que rige el área de primas es la siguiente:

    Número

    Nombre

    Condición

    Cálculo

    1

    Prima total La sumatoria de todos los conceptos de facturación del recibo. MONTO* Porcentaje de participación / 100

    2

    Prima neta
    La sumatoria de los registros cuyo concepto de facturación no se encuentre entre los recargos genéricos (Valores posibles según tabla 4). MONTO* Porcentaje de participación / 100

    3

    Recargo administrativo
    Se debe encontrar el monto asociado al desglose “Recargo Administrativo” (nbill_item = 50). MONTO* Porcentaje de participación / 100

    4

    Derecho de emisión
    Se debe encontrar el  monto asociado al desglose “Derecho de Emisión” (nbill_item = 52). MONTO* Porcentaje de participación / 100

    5

    Cargo financiero Se debe encontrar el monto asociado al desglose “Cargo Financiero” (nbill_item = 53). MONTO* Porcentaje de participación / 100

    6

    Comisión bruta del agente premium.ncomamou * (commiss_pr.nshare / 100)

    7

    Prima neta cedida en coaseguro Si existe coaseguro para la póliza en tratamiento se aplica el cálculo para cada concepto de facturación con la excepción de los impuestos detail_pre.npremium * (coinsuran.nshare / 100)

    8

    Prima total coaseguro cedido (Part. Pro.) Si existe coaseguro para la póliza en tratamiento se aplica el cálculo para cada concepto de facturación detail_pre.npremium * (coinsuran.share / 100)

    9

    Comisión en coaseguro cedido Si existe coaseguro para la póliza en tratamiento se aplica el cálculo al importe de la comisión del recibo premium.ncomamou * (coinsuran.nshare) / 100

    10

    Impuesto en coaseguro cedido Si existe coaseguro para la póliza en tratamiento se aplica el cálculo al importe de impuestos premium.ntaxamou * (coinsuran.nshare / 100)

    11

    IVA – Débito fiscal General Se debe encontrar el monto asociado al desglose “IVA – Débito Fiscal” (nbill_item = 55). MONTO* Porcentaje de participación / 100

    12

    Prima neta del recibo (CA) Se suman todos los conceptos de facturación menos los impuestos solo para pólizas con coaseguro aceptado detail_pre.npremium

    13

    Prima neta del recibo (RA) Se suman todos los conceptos de facturación menos los impuestos solo para pólizas con reaseguro aceptado detail_pre.npremium

    14

    Comisión coaseguro aceptado Solo para pólizas con coaseguro aceptado premium.ncomamou * (commiss_pr.nshare / 100)

    15

    Comision reaseguro aceptado Solo para pólizas con reaseguro aceptado premium.ncomamou * (commiss_pr.nshare / 100)

    16

    Comisiones Monto de comisión del recibo COMISION* Porcentaje de participación / 100

    17

    Importe del movimiento Monto del movimiento. Premium_mo.nAmount

    18

    Recaudado Es el resultado de restar al monto total de prima del recibo, el monto del saldo pendiente del recibo premium.nPremium - premium.nBalance

    19

    Balance o saldo por pagar del recibo Es el saldo pendiente del recibo premium.nBalance

    20

    Prima cedida en reaseguro Es el monto total de la prima del recibo que se ha cedido en reaseguro SUM(cession_pr.nPremium)

    21

    Prima cedida en coaseguro Es el monto total de la prima del recibo que se ha cedido en coaseguro SUM(cession_pr.nPremium)

    22

    Descuento por reaseguro Es el monto total de las comisiones sobre las cesiones de prima en reaseguro SUM(cession_pr.nCommission)

    23

    Prima por pagar en reaseguro Se obtiene de restar al monto total de prima cedida en reaseguro, el monto de las comisiones sobre la prima cedida en reaseguro SUM(cession_pr.nPremium) - SUM(cession_pr.nCommission)

    24

    Comisión de coaseguro Es el monto total de las comisiones sobre las cesiones de prima en coaseguro SUM(cession_pr.nCommission)

    25

    Prima por pagar en coaseguro Se obtiene de restar al monto total de prima cedida en coaseguro, el monto de las comisiones sobre la prima cedida en coaseguro SUM(cession_pr.nPremium) - SUM(cession_pr.nCommission)

    26

    Comisiones - Agente directo Monto de comisión del recibo cuando el intermediario es del tipo "Agente directo" (Commiss_pr.nRole = 1) commiss_pr.nAmount

    27

    Comisiones - Contratante/Banco Monto de comisión del recibo cuando el intermediario es del tipo "Contratante/Banco" (Commiss_pr.nRole = 2) commiss_pr.nAmount

    28

    Comisiones - Corredor/Broker Monto de comisión del recibo cuando el intermediario es del tipo "Corredor/Broker" (Commiss_pr.nRole = 3) commiss_pr.nAmount

    29

    Comisiones - Agente de mantención Monto de comisión del recibo cuando el intermediario es del tipo "Agente de mantención" (Commiss_pr.nRole = 4) commiss_pr.nAmount

    30

    Comisiones - Supervisor Monto de comisión del recibo cuando el intermediario es del tipo "Supervisor" (Commiss_pr.nRole = 5) commiss_pr.nAmount

    31

    Comisiones - Agente compañía Monto de comisión del recibo cuando el intermediario es del tipo "Agente compañía" (Commiss_pr.nRole = 6) commiss_pr.nAmount

    32

    Comisiones - Sociedades de corretaje Monto de comisión del recibo cuando el intermediario es del tipo "Sociedades de corretaje" (Commiss_pr.nRole = 7) commiss_pr.nAmount

    33

    Comisiones - Cobradores Monto de comisión del recibo cuando el intermediario es del tipo "Cobradores" (Commiss_pr.nRole = 8) commiss_pr.nAmount

    34

    Comisiones - Asistentes de seguros Monto de comisión del recibo cuando el intermediario es del tipo "Asistentes de seguros" (Commiss_pr.nRole = 9) commiss_pr.nAmount

    35

    Comisiones - Agente libre Monto de comisión del recibo cuando el intermediario es del tipo "Agente libre" (Commiss_pr.nRole = 10) commiss_pr.nAmount

    36

    Comisiones - Supervisor de mantención Monto de comisión del recibo cuando el intermediario es del tipo "Supervisor de mantención" (Commiss_pr.nRole = 11) commiss_pr.nAmount

    37

    Comisiones - Jefe de ventas Monto de comisión del recibo cuando el intermediario es del tipo "Jefe de ventas" (Commiss_pr.nRole = 50) commiss_pr.nAmount

    38

    Comisiones - Jefe de oficina Monto de comisión del recibo cuando el intermediario es del tipo "Jefe de oficina" (Commiss_pr.nRole = 51) commiss_pr.nAmount

    39

    Comisiones - Asistente comercial Monto de comisión del recibo cuando el intermediario es del tipo "Asistente comercial" (Commiss_pr.nRole = 52) commiss_pr.nAmount
    NOTA: es importante verificar que cuando se usan cuentas cuyos auxiliares son compuestos e involucran códigos de compañías de Co/Reaseguro, también se estén utilizando parámetros cónsonos con dichos auxiliares, puesto que son los parámetros los que retornarán los códigos de los auxiliares a utilizar.

    Listados

    Este programa produce al mismo tiempo los asientos y un listado donde se desglosa cada una de las líneas del mismo.
    El proceso emite dos salidas. Una para los movimientos contabilizados y otra para los no contabilizados.
    Por cada movimiento no contabilizado se tiene la siguiente salida:
  • Ramo.
  • Producto.
  • Póliza.
  • Número del recibo.
  • Tipo de movimiento.
  • Monto.
  • Fecha del movimiento.
  • Moneda en que se efectuó el movimiento.
  • Causa, descripción por lo cual no se contabiliza el movimiento. Valores posibles según tabla 1009.
  • Por cada asiento creado se tiene la siguiente salida:
  • Compañía contable.
  • Moneda de la compañía contable.
  • Número de asiento.
  • Fecha del asiento
  • Descripción del asiento
  • Por cada asiento se muestran las líneas que lo componen dando la siguiente información:
  • Línea, número y descripción de la misma.
  • El número y descripción de la cuenta involucrada.
  • Código y descripción del auxiliar (si aplica).
  • El monto del débito o crédito.
  • El sistema totaliza por asiento creado.

    Observaciones

    Si los asientos generados no cuadran, o bien existe algún error y se desea recuperar la información de la base de datos antes de la ejecución del programa se realizan los siguientes pasos:
    Luego, si se desea, se puede volver a ejecutar el programa.