Asientos automáticos de siniestros

Función general

La finalidad de este programa es llevar los movimientos producidos en el área de Siniestros al área de Contabilidad. Este procesa todas las operaciones de siniestros (Inicios de reservas, ajustes de reservas, etc.) realizadas entre las fechas indicadas.
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 "Siniestros". La fecha leída en este registro corresponde a la fecha de inicio del proceso.
  • Se realiza la lectura de la Tabla de Historia del Siniestro (Claim_his) con todos los registros cuya fecha de contabilización (dOperDate) es posterior a la fecha de inicio de proceso - fecha obtenida 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:
    • Se realiza la lectura del archivo de la Tabla de Detalle de la Guía Contable (Det_lines) a fin de obtener todos los registros correspondientes a:
         
        Área = Siniestros
        Tipo de transacción = Tipo de operación en la Tabla de  Historia del Siniestro (Claim_his.nOper_type)
        Tipo de producto = Tipo de producto obtenido
        Tipo de pago = Solo aplica para los movimientos de pagos de siniestros
    • Si 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 Historia del Siniestro (Claim_his).
    • 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.
      • Se verifica el tipo de auxiliar que tiene asociado la cuenta, dependiendo de este valor se busca el código correspondiente (Moneda, Zona o Sucursal, Ramo, Ramo Contable, cliente, etc.) en la tabla que corresponda. Particularmente, los auxiliares compuestos se obtienen de la siguiente manera:
        • Sucursal/Ramo, se obtiene el código de la sucursal asociada al siniestro en la tabla de datos generales del siniestro (Claim) 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 del ramo contable asociado al siniestro en la tabla de coberturas asociadas a un siniestro (Cl_cover) 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.
        • Ramo/Sucursal/Moneda, se toma el código de ramo contable asociado al siniestro en la tabla de coberturas asociadas a un siniestro (Cl_cover) 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 siniestro en la tabla de datos generales del siniestro (Claim) 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 historia del siniestro (Claim_his) 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.
        • Moneda/Sucursal, se obtiene el código de la moneda asociado al movimiento en la tabla de historia del siniestro (Claim_his) 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 siniestro en la tabla de datos generales del siniestro (Claim) 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.
      • Se actualiza la fecha en que se contabilizó el movimiento (campo "dPosted" de la tabla de Historia del Siniestro (Claim_his) con la fecha del asiento enviada como parámetro.
    • 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 tipo de proceso indicado como parámetro es "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 Historia del Siniestro (Claim_his) para colocar la fecha en que se contabilizó el movimiento.

    Notas para el programador

    La lectura de la Tabla de Historia del Siniestro (Claim_his) se realiza ordenando la información por los siguientes campos:
  • Fecha de contabilización.
  • Tipo de movimiento.
  • Rutina de asientos

    Esta rutina debe recibir como parámetros los siguientes datos:
      • Monto de la línea.
      • Monto retenido del movimiento.
      • Factor de cambio del movimiento.
      • 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 está llena, 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) a la 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 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
  • 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 o comprobante 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 de la(s) línea(s) de (los) asiento(s) generado(s) en la tabla, se obtiene según el código de agrupación de asientos (valores posibles según la tabla 641). Se actualiza en la tabla de Comprobantes contables (Acc_transa) la descripción del comprobante contable generado (sDescript) como “Asiento automático de siniestros”; además, se indica que el comprobante es automático (sInd_automa).

    Fórmulas

    La tabla de parámetros para la compañía de seguros que rige el área de siniestros es la siguiente:
     

    Número

    Nombre

    Condición y cálculo

    17

    Monto del movimiento Cl_m_cover.nAmount + Cl_m_cover.nVat_amount

    20

    Siniestro cedido en reaseguro Claim_ces.nCed_amnt 

    21

    Siniestro cedido en coaseguro Claim_cesco.nCed_amnt 

    40

    Monto neto Cl_m_cover.nAmount

    43

    IVA Cl_m_cover.nVat_amount

    44

    Ajuste para aumentar la reserva Cl_m_cover.nAmount > 0 

    45

    Ajuste para disminuir la reserva Cl_m_cover.nAmount < 0

    49

    Deducible de la cobertura
    Cl_m_cover.nDed_Amount

    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 siniestro.
  • 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.
  • Tipo de póliza contable. (Este proceso sólo genera asientos de diario).
  • 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.