Productividad por agente UF

Función general

En esta transacción se emite un reporte detalle que muestra el número de agentes para el mes en tratamiento, las propuestas vendidas, las propuestas por agente, los Uf vendidas y los UF por agente, para el ramo y mes en tratamiento y los totales respectivos. También se emite un listado resumen que muestra el número de agentes, las propuestas vendidas, las propuestas por agente, los Uf vendidas y los UF por agente, para el mes en tratamiento y los totales respectivos.

Información técnica

 

Productividad por agente UF

(AGL880)

Parámetros

Validaciones

Campo

Descripción

 Error/adv

Año

Año debe estar lleno 60490

Frecuencia de ejecución

A petición del usuario.

Requisitos

No aplica.

Instrucciones de ejecución

Este reporte se ejecuta desde el módulo de reportes de intermediarios con la opción menú de reportes de intermediarios.

Instrucciones en caso de interrupción

Volver a ejecutar.

Proceso batch

Proceso

Para seleccionar los campos de parámetros:
  • Ramo: Para mostrar los valores posibles para este campo se lee la tabla de ramos comerciales (table10), y se muestran los registros de la tabla cuyo estado sea igual a '1-activo' (table10.sStatregt = '1').
  • El parámetro "Año" se utiliza para generar la fecha de "inicio" y "final" del reporte, para ello se debe colocar como "fecha inicio", el primer de Enero del año seleccionado por el parámetro, y  como "fecha final", el 31 de Diciembre del año seleccionado.

    Para obtener la información que se mostrará en este reporte, se realiza el siguiente proceso:

    • Se leen de la tabla de meses (table7013), todos los registros válidos.
      • Se cuenta la cantidad de agentes vigentes al mes en tratamiento en la tabla de agentes (intermedia), para ello se determina la 'fecha de inicio agentes', tomando el primero del mes en tratamiento y el año indicado como parámetro y para la 'fecha de fin agentes', se toma último del mes en tratamiento y el año indicado como parámetro, para esto se toma en cuenta el mes indicado para saber si el último día es 30 o 31 y si el mes es febrero, se verifica si el año es bisiesto o no, para saber, si el último día es 28 o 29. Se utiliza la tabla temporal (temp_agl880A), para guardar la información.
      • Para la determinación de la cantidad de propuestas vendidas:
        • Por cada mes, se cuentan, por ramo, de la tabla de certificados (certificat), todos aquellos registros de pólizas activas y emitidas en el año indicado como parámetro y que correspondan al mes en tratamiento.
        • Se utiliza la tabla temporal (temp_agl880), para guardar la información, si la búsqueda no arroja resultado se deberá guardar cero en la columna 'temp_agl880.ncount', para ramo y mes en tratamiento.
      • Para la determinación de las UF vendidas
        • Por cada mes, se lee el primer recibo asociado a la póliza-certificado en tratamiento, de las tablas de certificados y recibos (certificat y premium), tomando en cuenta todas aquellas pólizas activas y emitidas en el año indicado como parámetro y que correspondan a mes en tratamiento.
        • Con el número de recibo ubicado, se busca en la tabla de detalle del recibo (detail_pre), la prima anual de cada detalle y su moneda. Por cada registro leído se debe toma la moneda y la fecha de la póliza-certificado. Los montos leídos del detalle de recibos están expresados en distintas monedas, para poder llevar el acumulado de prima anual por ramo, agencia y mes,  se convierten a UF, ya que así van a salir en el reporte, para ello se convierte cada monto de la moneda original del detalle (detail_pre.ncurrency) a UF (código de moneda 3). Se hace uso de la rutina de conversión del sistema: 'insCalConvertExchange2'. Es importante destacar que la fecha que se utilice para convertir los montos en el caso de este reporte es la fecha de efecto de la póliza certificado (certificat.ddate_origi). Con el monto convertido a UF, se debe acumular por ramo y mes. Se utiliza la tabla temporal (temp_agl875), para guardar la variable acumulada de prima anual por ramo y mes. Esta variable una vez almacenada debe ser inicializada con cero.
        • Se utiliza la tabla temporal (temp_agl880), para actualizar la información, es decir, se debe modificar el campo 'temp_agl880.npremium', para el ramo y mes en tratamiento . Si la búsqueda no arroja resultado se deberá guardar cero en la columna 'temp_agl880.npremium', para ramo y mes en tratamiento.
    • Al momento de ejecutar el reporte se lee la información de la tabla temporal (temp_agl880) agrupada y ordenada por ramo (temp_agl880.nbranch) y mes (temp_agl880.nmonth) y se lee de la tabla temporal auxiliar (temp_agl880A), para el mes en tratamiento, la información necesaria para los cálculos.
    • La descripción del ramo se ubica en la tabla ramos (table10), según el código del ramo en tratamiento. La descripción del mes se ubica en la tabla meses (table7013), según el código mes en tratamiento.

    Efecto

    Se almacenan los datos en dos tablas temporales, denominadas temp_agl880 y temp_agl880A.
    Antes de usar las tablas, las mismas no debe tener datos, por lo que se deberá eliminar toda la información que se encuentre en ellas.

    Notas al programador

    Búsqueda de valores posibles de la tabla de ramos comerciales (table10)

    Campos a seleccionar

  • nbranch
  • sdescript
  • Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Ramo comercial nbranch > 0 Se toman todos los ramos comerciales
    Estado del registro sstatregt = '1' Se toman los ramos válidos

    Búsqueda para la tabla de meses (table7013)

    Campos a seleccionar

    • ncodignt

    Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Código de mes ncodigint > 0 Se toman todas los meses
    Estado del registro sstatregt = '1' Se toman los meses válidos

    Búsqueda para la tabla de agentes (intermedia)

    Campos a seleccionar

    • cantidad de agentes vigentes

    Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Fecha de ingreso intermedia.dinpdate <= 'fecha de inicio agentes' del mes en tratamiento Fecha calculada en el proceso en función del mes y año en tratamiento
    Fecha de anulación intermedia.dnulldate >= 'fecha de fin agentes' del mes en tratamiento Fecha calculada en el proceso en función del mes y año en tratamiento

    Búsqueda para la tabla de certificados (certificat)

    Campos a seleccionar

    • certificat.nbranch
    • cantidad de pólizas-certificados por ramo y mes

    Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Tipo de registro certificat.scertype = '2' Se toman sólo pólizas
    Código de ramo certificat.nbranch > 0 Se toman los certificados de  todos los ramos, sino se indicó ningún ramo como parámetro
    o (or) certificat.nbranch = Ramo indicado como parámetro Se toman los certificados del ramo indicado, si se indicó alguno como parámetro.
    Código de producto certificat.nproduct > 0 Se toman certificados de todos los productos
    Número de póliza certificat.npolicy > 0 Se toman todas las pólizas
    Número de certificado certificat.ncertif > 0 Se toman todos los certificados de todas las pólizas
    Estado del registro certificat.sstatusva not in ('2', '3') Se toman sólo las pólizas válidas. Valores según table181
    Fecha de efecto de la póliza certificat.ddate_origi >= 'Fecha inicial' calculada Fecha calcula en función del año indicado como parámetro en la transacción
    y certificat.ddate_origi <= 'Fecha final' calculada Fecha calcula en función del año indicado como parámetro en la transacción
    Mes de la fecha de efecto mes(certificat.ddate_origi) = table7013.ncodigint Mes en tratamiento

    Búsqueda para la tabla de certificados y recibos (certificat y premium)

    Campos a seleccionar

    • certificat.scertype
    • certificat.nbranch
    • certificat.nproduct
    • min(premium.nreceipt)
    • premium.ndigit
    • premium.npaynumbe
    • certificat.ddate_origi

    Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Tipo de registro certificat.scertype = '2' Se toman sólo pólizas
    Código de ramo certificat.nbranch > 0 Se toman los certificados de  todos los ramos, sino se indicó ningún ramo como parámetro
    o (or) certificat.nbranch = Ramo indicado como parámetro Se toman los certificados del ramo indicado, si se indicó alguno como parámetro.
    Código de producto certificat.nproduct > 0 Se toman certificados de todos los productos
    Número de póliza certificat.npolicy > 0 Se toman todas las pólizas
    Número de certificado certificat.ncertif > 0 Se toman todos los certificados de todas las pólizas
    Estado del registro certificat.sstatusva not in ('2', '3') Se toman sólo las pólizas válidas. Valores según table181
    Fecha de efecto de la póliza certificat.ddate_origi >= 'Fecha inicial' calculada Fecha calcula en función del año indicado como parámetro en la transacción
    y certificat.ddate_origi <= 'Fecha final' calculada Fecha calcula en función del año indicado como parámetro en la transacción
    Mes de la fecha de efecto mes(certificat.ddate_origi) = table7013.ncodigint Mes en tratamiento
    Tipo de registro premium.scertype = certificat.scertype Tipo de registro en tratamiento
    Código de ramo premium.nbranch = certificat.nbranch Ramo en tratamiento
    Código de producto premium.nproduct = certificat.nproduct Producto en tratamiento
    Dígito de control premium.ndigit > 0 Dígito de control de recibos
    Número de recibo premium.nreceipt > 0 Se toman todos los recibos
    Parte del convenio premium.npaynumbe >= 0 Número que identifica la parte del convenio de pago del recibo

    Búsqueda para la tabla detalles de recibos (detail_pre)

    Campos a seleccionar

  • ncurrency
  • npremanual
  • Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Tipo de registro  scertype = certificat.scertype Tipo de registro del recibo en tratamiento
    Código del Ramo nbranch = certificat.nbranch Código de ramo del recibo en tratamiento
    Código del producto nproduct = certificat.nproduct Código de producto del recibo en tratamiento
    Número de recibo nreceipt = premium.nreceipt Número del recibo en tratamiento
    Dígito de control ndigit = premium.ndigit Dígito de control de recibos
    Parte del convenio de pago npaynumbe = premium.npaynumbe Número que identifica la parte del convenio de pago del recibo
    Número de desglose de prima nid_bill > 0 Número consecutivo de desglose de prima para un recibo
    Tipo de registro en el detalle de prima stype_detai in (1,2,4,5,6) Indica que se tomará detalle por coberturas, recargos técnicos, impuestos, descuentos técnicos, recargos comerciales y descuentos comerciales

    Búsqueda de descripción en la tabla de ramos (table10)

    Campos a seleccionar

  • sdescript
  • Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Código de los ramos nbranch = temp_agl880.nbranch Ramo en tratamiento

    Búsqueda de descripción en la tabla de meses (table7013)

    Campos a seleccionar

    • sdescript

    Condición de búsqueda

    Información

    Campo

    Operador

    Valor

    Observación

    Código del mes ncodigint = temp_agl880.nmonth Mes en tratamiento

    Archivo TEMP_AGL880

    En la tabla temporal temp_agl880 se almacena la información determinada en las condiciones de búsqueda antes indicada. Al momento de ejecutar el reporte, se extrae la información agrupada y ordenada por ramo (nbranch) y mes (nmonth). Los campos que se deberán colocar en la tabla temporal son:

    Información

    Campo

    Valor

    Observación

    Número de mes nmonth table7013.ncodigint Mes en tratamiento
    Código del ramo nbranch certificat.nbranch Ramo en tratamiento
    Cantidad de pólizas-certificados ncount cantidad de pólizas por ramo y mes Se toma de la lectura de la tabla de certificados (certificat)
    Total prima anual npremium Sumatoria de primas anuales en UF Variable que acumula la prima anual de las pólizas emitidas por ramo y mes en tratamiento.

    Archivo TEMP_AGL880A

    En la tabla temporal temp_agl880A se almacena la información determinada en las condiciones de búsqueda antes indicada. Al momento de ejecutar el reporte, se extrae la información para el mes en tratamiento. Los campos que se deberán colocar en la tabla temporal auxiliar son:

    Información

    Campo

    Valor

    Observación

    Mes nmonth table7013.ncodigint Mes en tratamiento en tratamiento
    Cantidad de agentes ncount cantidad de agentes para el mes Se toma de la lectura de la tabla de agentes (intermedia)

    Fórmulas

    Sólo se van a mencionar los campos que manejen fórmula
    Listado detalle
    Cuerpo
  • Propuestas por agente: Campo 'propuestas vendidas' / campo 'número de agentes vigentes', para el ramo y mes en tratamiento.
  • UF por agente: Campo 'UF vendidas' / campo 'número de agentes vigentes', para el ramo y mes en tratamiento.
  • Totales
  • Propuestas por agente por ramo: Campo 'propuestas vendidas por ramo' / campo 'total número de agentes vigentes', para el ramo en tratamiento.
  • UF por agente por ramo: Campo 'UF vendidas por ramo' / campo 'total número de agentes vigentes', para el ramo en tratamiento.
  • Listado resumen
    Cuerpo
  • Propuestas por agente: Campo 'propuestas vendidas' / campo 'número de agentes vigentes', para el mes en tratamiento.
  • UF por agente: Campo 'UF vendidas' / campo 'número de agentes vigentes', para el mes en tratamiento.
  • Totales
  • Total propuestas por agente: Campo 'total propuestas vendidas' / campo 'total número de agentes vigentes'.
  • Total UF por agente: Campo 'total UF vendidas' / campo 'total número de agentes vigentes'.
  •  

    Listados

    Listado detalle
    Encabezado
  • Página: "Página" + 'número de página'.
      • Título: "Productividad por agente UF".
      • Subtítulo: "Listado detalle".
      • "Año: " + 'año indicado como parámetro'.
    Cuerpo
      • Ramo: Descripción del ramo (table10.sdescript). Se debe hacer ruptura de control por el ramo (temp_agl875.nbranch).
      • Mes-año:  Mes y año de la información (table7013.sdescript + 'año indicado como parámetro').
      • Número de agentes vigentes: Cantidad de agentes vigentes para el mes en tratamiento (temp_agl880A.ncount, para el mes).
      • Propuestas vendidas: Cantidad de propuestas vendidas para el ramo y mes en tratamiento (temp_agl880.ncount, para el ramo y mes en tratamiento). Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
    • Propuestas por agente: Promedio de propuestas por agente. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
    • UF vendidas: Primas vendidas, expresadas en UF (temp_agl880.npremium, para el ramo y mes en tratamiento).  Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
    • UF por agente: Promedio de primas vendidas expresado en UF. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
      Totales
    • Total de agentes vigentes: Sumatoria de la columna 'número de agentes vigentes', para el ramo en tratamiento.
    • Propuestas vendidas por ramo: Sumatoria de la columna 'propuestas vendidas', para el ramo en tratamiento.
    • Propuestas por agente por ramo: Promedio de propuestas por agente, para el ramo en tratamiento. Ver fórmula.
    • UF vendidas por ramo: Sumatoria de la columna 'UF vendidas', para el ramo en tratamiento, expresadas en UF.
    • UF por agente por ramo: Promedio de primas vendidas, para el ramo en tratamiento, expresado en UF. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.


    Listado resumen

    Encabezado
  • Página: "Página" + 'número de página'.
  • Título: "Productividad por agente UF".
  • Subtítulo: "Listado resumen".
  • "Año: " + 'año indicado como parámetro'.
  • Cuerpo
  • Mes-año:  Mes y año de la información (table7013.sdescript + 'año indicado como parámetro').
  • Número de agentes vigentes: cantidad de agentes vigentes para el mes en tratamiento (temp_agl880A.ncount, para el mes).
  • Propuestas vendidas: Cantidad de propuestas vendidas para el mes en tratamiento (temp_agl880.ncount, para el mes en tratamiento). Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
  • Propuestas por agente: Promedio de propuestas por agente. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
  • UF vendidas: Primas vendidas, expresadas en UF (temp_agl880.npremium, para el mes en tratamiento). Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
  • UF por agente: Promedio de primas vendidas expresado en UF. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.
  • Totales
  • Total propuestas vendidas: Sumatoria de la columna 'propuestas vendidas'.
  • Total propuestas por agente: Promedio de propuestas por agente. Ver fórmula.
  • Total UF vendidas: Sumatoria de la columna 'UF vendidas', expresadas en UF.
  • Total UF por agente: Promedio de primas vendidas, expresado en UF. Ver fórmula. Si el valor de este campo es cero, en el reporte se debe mostrar espacios en blanco.