Asientos automáticos de caja egresos

Función

La finalidad de este programa es llevar los movimientos producidos en el área de Caja egresos al área de Contabilidad. Procesa todas las operaciones de caja egresos (Pagos de siniestros, agentes, empleados, 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 "Caja egresos". La fecha leída en este registro corresponde a la fecha de inicio del proceso.
  • Se realiza la lectura de la tabla de cheques solicitados y emitidos (Cheques), tomando en cuenta los registros cuya fecha de contabilización (dLedger_dat) sea 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, y cuya fecha en que se contabilizó el cheque no tenga valor (Cheques.dPosted = "null"). 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 = Caja egresos
        Tipo de transacción = Concepto por el cual se realiza la solicitud del cheque (Cheques.nConcept) 
        Tipo de producto = Ambos
    • Si no se consigue ningún registro, se realiza la impresión correspondiente en el listado de "asientos no contabilizados" ( Tledautrejectm)  y se procesa el próximo registro de la tabla de cheques solicitados y emitidos (Cheques)  .
    • 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. Adicionalmente, se verifica si la cuenta maneja algunos de los auxiliares compuestos mencionados seguidamente: :
        • Co-Reasegurador/Ramo/Moneda, se toma el código de la compañía de co-reaseguro de la tabla de cuentas técnicas de reaseguro (Cuentecn, asociando la cuenta técnica correspondiente por medio del número de la solicitud del cheque, Cheques.nRequest_nu = Cuentecn.nRequestnu) 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 del ramo contable asociado al cheque (Cheques.nBranch_led)  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 origen del cheque (Chqeues.nCurrencyOri) 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.
      • Se actualiza la fecha en que se contabilizó el cheque (Cheques.dPosted) 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 ( Tledgerautdet). 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”.

    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 cheques solicitados y emitidos (Cheques) para colocar la fecha en que se contabilizó el movimiento.

    Notas para el programador

    La lectura de la tabla de cheques solicitados y emitidos (Cheques) se realiza ordenando la información por los siguientes campos:
  • Fecha de contabilización.
  • Concepto del cheque.
  • 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 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" (Tledaurejectm) y no se genera ningún tipo de información en la Tabla Temporal de Detalle de Asientos Automáticos Contables (Tledgerautdet).
    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 (Tledgerautdet) 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 (Tledgerautdet). 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 (Tledgerautdet).
    La descripción de las líneas de (los) asiento(s) generado(s) 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 caja egresos”; además, se indica que el comprobante es automático (sInd_automa).
    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 (La cuenta no esta registrada, no se encuentra la guía contable, etc.). 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:
  • Número de línea .
  • 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.