Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Resumen

Los servicios parametricos son una nueva funcionalidad incorporada en el API Ceibo ( o API Tarjeta habientes ) .

Esta funcionalidad permite crear nuevos servicios dentro del API de Ceibo tan solo configurando datos en tablas parametricas.

La esencia de esta funcionalidad es poder agilizar los procesos de desarrollo, automatizando la comunicacion entre el consumidor de un servicio (Ej: Frontend) y la base de datos (Ceibo), sin la necesidad de tener que programar por cada nuevo procedure un nuevo servicio que lo invoque.

En resumen, esta funcionalidad permite convertir un Procedimientos Almacenados en Servicios RESTFul que retornen JSON y que pueden ser invocados por cualquier programa.

Restricciones y Limitaciones

El uso de esta funcionalidad tiene unas de restricciones y limitaciones las cuales detallaremos a continuación.

Expand
titleVer información
Info
titleImporante
  • El API no evalúa, ni evaluará los valores de los parámetros de salida retornados por SP.
  • Su única función es ejecutar el SP y devolver el resultado, según lo configurado para sus parámetros de salida.
  • Si el SP se ejecuto sin excepciones (fallos, errores, etc.) la ejecución fue exitosa.
  • Si se desean hacer controles adicionales sobre lo retornado por el SP, esta tarea queda a responsabilidad del invocador del Servicio.

Servicios

Request:
  • Los servicios que son disponibilizados a través de las parametrizaciones SOLO pueden recibir JSON como parámetro de entrada.
  • Los únicos tipos de datos aceptados son NUMERO/TEXTO/FECHA. El tipo de dato FECHA debe enviarse como un texto en formato dd/mm/yyyy o dd/mm/yyyy hh24:mi:ss.
  • Mas adelante se detallarán ejemplos de como invocar a los servicios.
Response:
  • La respuesta del servicio siempre será un JSON.
  • Para los diferentes tipos de datos que puedan ser retornados desde el SP, el api SIEMPRE devolverá una representación de un STRING del dato.
  • El Servicio siempre devolverá una representación de un STRING de cada dato retornado desde el SP.

Procedimientos Almacenados

Los procedimientos almacenados configurados deben cumplir obligatoriamente con los siguientes criterios:

Criterios Generales

  • Los procedimientos almacenados deben existir en @BAPY o en @OLPY. El API no se conecta a ninguna otra Base de Datos.
  • Los procedimientos deben poder ser vistos e invocados por el usuario: CREDITOPY.
  • Los procedimientos configurados deben estar programados de tal manera que PRIMERO se definan los parámetros de ENTRADA , luego los de SALIDA.

Parámetros de Entrada / Salida:

Entrada:

Solo son soportados los siguientes tipos de datos para los parámetros de entrada:

  • Número (Number, Double, Decimal, etc. )
  • Texto (Varchar, CHAR, CLOB )
  • Fecha (Date)
  • Obs: Cualquier otro tipo de dato será tratado por el API  como un String.
Salida:

Solo son soportados los siguientes tipos de datos para los parámetros de salida:

  • Número
  • Texto
  • Fecha
  • Cursor
  • Obs: Cualquier otro tipo de dato será tratado por el API como un String. Con los eventuales errores que esto pueda conllevar.

Plataforma de los Servicios Paramétricos

Diagrama 

Los servicios paramétricos son consumidos desde un servicio principal que recibe los parámetros de acceso (ruta o path del Servicio) y los datos de entrada (de enviarse) , busca los datos parametrizados para el servicio, y luego ejecuta el SP configurado, retornando la respuesta.

Expand
titleVer diagrama

Image Removed

API Ceibo / API Tarjeta Habientes

Todos los servicios habilitados o ha habilitarse serán invocados a través de un servicio principal o raíz que se encuentra en el API. Este servicio se encarga de las validaciones, verificaciones, configuración, ejecución y retorno de la respuesta de la ejecución del procedimiento almacenado que fue configurado

Expand
titleVer Información

Link del Servicio

Version 1:

http://host/ws-tarjetahabiente/prmservices/v1/sprunner/prmGroup/prmVersion/prmServicio

Observaciones: Este servicio quedará deprecado por la Version 2

Version 2:

http://host/ws-tarjetahabiente/prmservices/v2/sprunner/prmGroup/prmVersion/prmServicio

Donde:

  • prmGroup: Valor del Parámetro "Grupo" configurado para el Servicio.
  • prmVersion: Valor del Parámetro "Versión" configurado para el Servicio.
  • prmServicio: Valor del Parámetro del "Nombre" configurado para el Servicio.

Invocación del Servicio

Request:
  • Input Type: POST
  • Output Type: Content-Type:application/json
Expand
titleFormato Request v1

Esta version del request espera recibir un array de parámetros de entrada. Estos parametros que son utilizados para realizar la invocación del SP configurado para el servicio. La cantidad de parámetros de entrada así como también los tipos de datos y los nombres de los parámetros, variarán de acuerdo a cada SP configurado. Pudiendo incluso enviarse un array vacío o sin datos. 

Servicio Ejemplo:

http://host/ws-tarjetahabiente/prmservices/v1/sprunner/usuarios/v1/altaUsuario

Code Block
languagejs
titleRequest Body JSON
[
    {
        "prmNombre": "prmNroAlta",
        "prmValor": 123123123,
        "prmTipo": "NUMERO"
    },
    {
        "prmNombre": "prmNombreApellido",
        "prmValor": "Orlando Ojeda",
        "prmTipo": "TEXTO"
    },
    {
        "prmNombre": "prmFechaNac",
        "prmValor": "18/03/1990",
        "prmTipo": "TEXTO"
    },
    {
        "prmNombre": "prmFechaHoraRegistro",
        "prmValor": "18/03/2021 18:30:59",
        "prmTipo": "FECHA"
    }
]

Donde:

  • prmNombre: Es el nombre del parámetro que fue configurado. Esta propiedad es utilizada para asignar el valor del prm en su lugar especifico como parámetro de entrada del SP.
  • prmValor: El valor en sí del parámetro enviado.
  • prmTipo: El tipo de dato del parámetro enviado. Solo puede ser uno de tres posibles:
    1. NUMERO
    2. TEXTO
    3. FECHA
  • El tipo de Dato FECHA puede y debe enviarse como un texto en uno de los siguientes formatos: dd/mm/yyyy o dd/mm/yyyy hh24:mi:ss.
  • Si el valor enviado no puede ser convertido al tipo de dato especificado, las validaciones el servicio retornaran un error
  • Si el tipo de dato especificado no es uno de los valores permitidos, las validaciones el servicio retornaran un error
Expand
titleFormato Request v2

Esta version del request espera Objeto JSON (en lugar de un array de parametros) en donde cada propiedad del JSON representa el nombre del parametro de entrada definido en las configuraciones.

Servicio Ejemplo:

http://host/ws-tarjetahabiente/prmservices/v2/sprunner/usuarios/v1/altaUsuario

Code Block
languagejs
titleRequest Body JSON
{
   "prmNroAlta": 123123123,
   "prmNombreApellido": "Orlando Ojeda",
   "prmFechaNac": "18/03/1990",
   "prmFechaHoraRegistro": "18/03/2021 18:30:59"
}    

Donde:

  • Las claves o nombres de las propiedades dentro del JSON representan a los nombres de los parametros de entrada configurados
  • El valor de cada propiedad corresponde al VALOR en sí del parámetro enviado.
  • El tipo de dato enviado solo puede ser uno de tres posibles:
    1. NUMERO
    2. TEXTO
    3. FECHA
  • El tipo de dato FECHA puede y debe enviarse como un texto en uno de los siguientes formatos: dd/mm/yyyy o dd/mm/yyyy hh24:mi:ss.
  • Si el valor enviado no puede ser convertido al tipo de dato especificado, las validaciones el servicio retornaran un error
  • Si el tipo de dato especificado no es uno de los valores permitidos, las validaciones el servicio retornaran un error
Response:

La respuesta del servicio depende de las configuraciones de los parámetros de salida del SP configurado. Pudiendo retornar desde ningún parámetro hasta N parametros.

Code Block
languagejs
titleResponse JSON
{
    "header": {
        "codReturn": "0",
        "txtReturn": ""
    },
    "data": {
        "numeroX": "12312312",
        "descripcion": "This is a Test",
        "fechaSistema": "15/05/2021 14:54:30",   
        "registro": {
            "NRO": "12312312",
            "FECHA1": "01/02/2021",
            "FECHA2": "01/02/2021 22:01:33",
            "TEXTO_RANDOM": "parangaricutirimicuaro"
        }
        "departamentos": [
            { "ID": "0", "DESCRIPCION": "DISTRITO CAPITAL" },
            { "ID": "1", "DESCRIPCION": "CONCEPCION" },
            { "ID": "2", "DESCRIPCION": "SAN PEDRO" },
            { "ID": "3", "DESCRIPCION": "CORDILLERA" },
            { "ID": "4", "DESCRIPCION": "GUAIRA" },
            { "ID": "5", "DESCRIPCION": "CAAGUAZU" },
            { "ID": "6", "DESCRIPCION": "CAAZAPA" },
            { "ID": "7", "DESCRIPCION": "ITAPUA" },
            { "ID": "8", "DESCRIPCION": "MISIONES" },
            { "ID": "9", "DESCRIPCION": "PARAGUARI" },
            { "ID": "10", "DESCRIPCION": "ALTO PARANA" },
            { "ID": "11", "DESCRIPCION": "CENTRAL" },
            { "ID": "12", "DESCRIPCION": "ÑEEMBUCU" },
            { "ID": "13", "DESCRIPCION": "AMAMBAY" },
            { "ID": "14", "DESCRIPCION": "CANINDEYU" },
            { "ID": "15", "DESCRIPCION": "PRESIDENTE HAYES" },
            { "ID": "16", "DESCRIPCION": "BOQUERON" },
            { "ID": "17", "DESCRIPCION": "ALTO PARAGUAY" }
        ],
    }
}

Observaciones

  • El API transforma cada uno de los datos retornados a su representación de un String. Excepto para los tipos de datos CURSOR o ESTRUCTURA
  • Para las fechas aplica automáticamente el formato dd/mm/yyyy o dd/mm/yyyy hh24:mi:ss, dependiendo de si la fecha tiene o no horas.
  • Para el tipo de dato CURSOR:
    1. El response es mapeado como un array de estructuras.
    2. En donde cada estructura tiene tantas propiedades como campos o columnas que han sido retornados en el cursor del SP.
    3. En el ejemplo de mas arriba puede verse a este tipo de dato como la propiedad: "departamentos"
  • Para el tipo de dato ESTRUCTURA:
    1. Este tipo de dato es también un CURSOR, pero manejado de manera diferente por el API
    2. La diferencia consiste en que en lugar de retornar un array de registros, solo retorna el primer elemento del Array como una estructura.
    3. En el ejemplo de mas arriba puede verse a este tipo de dato como la propiedad: "registro"

Base de Datos

Todas las configuraciones para los Servicios paramétricos se hacen en la base de datos BAPY CEIBO

Paquete PL/SQL
Expand
titleVer Informacion

CREDITOPY.PKG_API_CEIBO

Todas los métodos necesarios para que los servicios otorgados por el API Paramétrico funcionen se encuentran en este PKG.

Observaciones IMPORTANTES !!:

La idea de este PKG es ser un package aislado, por lo cual dentro de este package SOLO deben existir los métodos relacionados al funcionamiento de la parametrizacion del SPs como servicios
  • En resumen, NO INCLUIR AQUI:
    • Códigos PARTICULARES, PROPIOS del Proyecto en si y NO de este PKG
      • No agregar procedures, funciones, types, referencias, etc.
    • No tocar este PCK salvo si sea para hacer ajustes en el API Paramétrico
  • Tablas de Configuracion
    Expand
    titleVer Info de Tablas

    DER:

    Image Removed

    Detalle de Tablas:

    Tabla:CREDITOPY.API_CEIBO_PROCEDURESDescripcion:

    Tabla principal de configuraciones de los servicios parametricos.

    En esta tabla se configuran los procedures que seran invocados, la base de datos donde esta alojado el SP y el path de accesion en el API

    CAMPOSid_api_spId único de la tablacategoriaDato informativo sobre la categoria en la que estan divididos los servicios o endpoints. (comercios / autorizaciones / entidades / ceibo / etc. )descripcionDescripcion del proposito del servicio / procedureapi_path_groupEl grupo o bloque en el que esta agrupado el servicio. Ej:
    {group}/v1/getDatosapi_path_version

    La version del servicio disponibilizado. Ej:

    tarjetas/{version}/getDatos

    api_path_name

    El nombre del servicio. Ej:

    tarjetas/v1/{servicio}

    procedure_database

    La base de datos en las que es ejecutado el Procedure (BAPY / OLPY)

    procedure_schema

    El nombre del esquema en el que se encuentra el procedure.

    Obs: El usuario que ejecuta el SP es CREDITOPY, asi que debe tener permisos de ejecucion sobre el esquema.pkg.procedure

    procedure_name

    El nombre del procedimiento almacenado a ejecutar.

    Obs: Configurar aqui el procedure procedure_name o pkg_name.procedure_name, sin el esquema. El API concatenará durante la ejecucion el esquema.sp_name o esquema.pkg_name.sp_name

    simplificar_response_s_nS/N. Indicador que permite simplificar el response del API en el caso de que tenga un solo item de respuestafecha_hora_insFecha / hora de insercion del registrousuario_insUsuario de Insercionfecha_hora_updFecha Hora de Actualizacion del registro.usuario_updUsuario de Actualizacion del registro.Tabla:CREDITOPY.API_CEIBO_PROCEDURES_PRMS_INDescripcion:

    Tabla hija de la tabla anterior y tiene como funcion registrar el detalle de los parametros de entrada con los que cuenta el procedure configurado

    CAMPOSid_api_spId del SP del API. FK a la tabla: API_CEIBO_PROCEDURESparam_nameNro de Orden en el que se encuentra el parametro de entradaparam_nameNombre del parametro recibido desde el APItipo_dato

    Especifica el tipo de dato permitido. Valores permitidos:

    • NUMERO
    • TEXTO
    • FECHA

    Obs: Fecha en formato: dd/mm/yyyy o dd/mm/yyyy hh24:mi:ss

    requerido_api_sS/N. Indicador si el dato debe ser enviado o no desde el request del servicionulable_s_nS/N. Indicador que especifica si el valor puede ser enviado como nulodefault_value

    El valor por defecto del parametro. Los datos deben ponerse en lenguaje SQL.

    Ejemplos:

    • 123456
    • 'S'
    • TO_CHAR(12323)
    • to_date('01/01/2021', 'dd/mm/yyyy')
    • sysdate
    • f_get_dato...
    Tabla:CREDITOPY.API_CEIBO_PROCEDURES_PRMS_OUTDescripcion:

    Tabla que registra el detalle de los parametros de salida con los que cuenta el procedure configurado

    CAMPOSid_api_spId del SP del API. FK a la tabla: API_CEIBO_PROCEDURESparam_nameNro de Orden en el que se encuentra el parametro de salidaparam_nameNombre del parametro de salida con el que se retornara el dato en el APItipo_dato

    Mapeo del tipo de dato que es retornado por el SP. Este dato se utiliza para la creacion del statement de ejecucion del SP contra la base de datos.

    Especifica el tipo de dato permitido. Valores permitidos:

    • NUMERO
    • TEXTO
    • FECHA
    • CURSOR
    • ESTRUCTURA

    Obs: El tipo de dato "ESTRUCTURA" es un tipo de dato personalizado que representa el primer registro retornado por un Cursor. El API toma este tipo de dato y lo devuelve como un objeto JSON en lugar de como un Array JSON.

    retornar_api_s_nS/N. Indicador que especifica si el valor de este parametro de salida debe ser o no retornado dentro del response del APITabla:CREDITOPY.API_CEIBO_USERSDescripcion:En esta tabla se registran los usuarios de aplicacion/login que es utilizado por el API para autenticarse y luego ejecutar los procedimientos almacenadosCAMPOSid_usuarioId único de la tablausuarioSigla del Usuariopasswordcontraseñafecha_altafecha de alta

    Ejemplo de Configuración de Servicios

    Ejemplo rápido de configuración de un SP como servicio.

    Expand
    titleVer Ejemplo

    Según lo expuesto mas arriba para agregar nuevos servicios se debe:

    1. Contar con un Procedimiento Almacenado (en BAPY/OLPY, parámetros de entrada, luego salida, etc.)
    2. Configurar el mismo en las tablas de configuraciones
      1. Grupo Servicio en el Path
      2. Versión del Servicio en el Path
      3. Nombre Servicio en el Path
      4. Base de Datos
      5. Esquema
      6. Nombre del SP
      7. Parámetros de Entrada.
      8. Parámetros de Salida.

    Supongamos que hemos agregado una nueva configuración, con sus parámetros de entrada y salida

    id_api_sp9999categoriaDatos GenéricosdescripcionObtener la Lista de Departamentos y Ciudadesapi_path_groupdatosGenericosapi_path_version

    v1

    api_path_name

    getLocalidades

    procedure_database

    BAPY

    procedure_schema

    creditopy

    procedure_name

    pkg_dimo_ceibo.sp_ciudades

    simplificar_response_s_nS

    Para consumir el servicio tomamos de base el path raíz que mencionamos mas arriba reemplazando el valor por los valores configurados.

    Tomando como base

    http://host/ws-tarjetahabiente/prmservices/v2/sprunner/prmGroup/prmVersion/prmServicio

    El servicio será:

    http://host/ws-tarjetahabiente/prmservices/v2/sprunner/datosGenericos/v1/getLocalidades

    Y ya nada mas queda realizar una prueba vía postman. (En este caso el SP no recibe ningún parámetro de entrada)

    Image Removed

    El usuario se conecta por ssh, mediante un cliente de ssh (Putty), al servidor de producción donde están los scripts y programas cobol. Mediante el logueo, por una configuración del servidor, se ejecuta el archivo "LoginOper.sh" que es un script de shell que presenta un menú al usuario para realizar varias tareas relacionadas con la operación de cupones, cierres, pagos, autorizaciones, de comercios, la administración de impresiones, entre otros. Lo que se resume en 17 opciones presentadas al usuario.



    Opciones desplegadas al usuario

    A continuación se describe las opciones que se despliegan al usuario:

    1. TARJETA DE CREDITO: Ejecuta el script MENUCREDITO.scr.
    2. Query de Control - Comercios: Ejecuta el script MenuOperComercio.sh.
    3. Actualizaciones para el proceso diario: Ejecuta el script MenuActualizaProceso.sh.
    4. Reportes de la Diaria: Ejecuta el script REPORTES.scr.
    5. Reportes de Novedades de Usuarios: Ejecuta el script USNOV.scr.
    6. Impresion Informes de Comercios: Ejecuta el script MenuImprimeComerio.sh.
    7. Querys de Socios: Ejecuta el script MenuOperSocios.sh.
    8. Deposito de archivos SFTP PANAL: Ejecuta el script SFTP_PANAL.scr.
    9. Generacion de Resumenes (Usuarios): Cambia al directorio de impresiones y ejecuta RESUMENES.scr.
    10. Impresion de Resumenes (Usuarios): Ejecuta una serie de scripts (Selec_COLA.sh y Selec_YYYY.sh), solicita información al usuario (como emisor y periodo), y realiza la impresión de resumenes.
    11. Cancelacion de spool de $USER: Muestra las impresiones disponibles (lpstat), solicita al usuario el trabajo a cancelar, y cancela la impresión seleccionada.
    12. Consulta de pagina de Resumenes: Ejecuta un comando SQL para obtener y mostrar información sobre una cuenta específica.
    13. Conversion Debitos Automaticos Manuales: Ejecuta el script Convert_Da_Manual.sh.
    14. Captura de MAEOPIN de intercambio: Ejecuta el script Captura_MAEOPIN.sh.
    15. Conciliacion de Operaciones Locales y Extranjeras: Ejecuta el script MenuConciliaciones.sh.
    16. Backups: Actualmente muestra el mensaje "NO DISPONIBLE AUN".
    17. Especiales: Ejecuta un proceso especial definido por el comando exec PR_SCRIPT; en Oracle.

    Detalle de los procesos ejecutados por opciones del menú principal

    1. TARJETA DE CRÉDITO

      1. Archivos ejecutados:

        1. MENUCREDITO.scr

        2. menu.scr

        3. menues.PARAGUAY

          • Image AddedCOVALCUP.scr
          • CTARLIMPIAR.scr
          • CTVERFTP.scr
          • FILTRAR_PAGO_0.scr
          • GENERA_AJUSTES_PC.scr
          • GENERA_OT_EMBOZADO.scr
          • GENSCRIPT.scr
          • PROMO_CUPONES.scr
      2. Descripción:

        1. La opción "TARJETA DE CREDITO" en el script LoginOper.sh se encarga de varios procesos relacionados con las operaciones de tarjetas de crédito. A continuación, se describen las subopciones y los subprocesos ejecutados por cada una.

      3. SubOpciones y SubProcesos Ejecutados.

        1. Menú Principal de Tarjeta de Crédito.
          1. Script Ejecutado: MENUCREDITO.scr
          2. Descripción: Este script maneja procesos relacionados con el módulo de Tarjeta de Crédito.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo MENUCREDITO.scr
            linenumberstrue
            collapsetrue
            #!/bin/ksh
            set +o noclobber
            # Script que tiene por objeto la generacion de procesos para el módulo de Tarjeta de credito.
            # Autor: H.Perez
            # Fecha: Junio 6 del 2000
            
            [ "$DEBUG" ] && set -x
            
            SCRIPTNAME=MENUCREDITO
            [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
            SCRIPTLOG=${SCRIPTLOG:-$RAIZ/lib/datos/logs/$SCRIPTNAME.log}
            umask '002'
            
            echo "--> Inicia $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
            
            # Cargando profile del grupo de desarrollo
            
            # menus.scr -f $RAIZ/lib/scripts/menues.PARAGUAY -s 'TARJETA DE CREDITO' -m ' ' -l $SCRIPTLOG
            
            echo "--> Fin $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
            
            
        2. SubMenú y SubProcesos Ejecutados:
          1. Archivo de Menús: 'menues.PARAGUAY'
          2. Descripción: Define los menús y los procesos que se ejecutan para el módulo de Tarjeta de Crédito.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo menues.PARAGUAY
            linenumberstrue
            collapsetrue
            # Menú de Tarjeta de Crédito
            
            TARJETA DE CREDITO:Procesos Diarios: Menú de Reportes Diarios:MENU:Menú de Reportes Diarios
            
            # Cargas Diarias
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Autorizaciones:SCRIPT:GENSCRIPT.scr -s COCARAUT -p COPRG901
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Debitos Automaticos:SCRIPT:GENSCRIPT.scr -s COCARGDEBAUT -p CTMENU01 -o COPRG065 ONLINE COPRG065
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Pagos:SCRIPT:GENSCRIPT.scr -s CTCARPAG -p CTCMD051
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Ajustes:SCRIPT:GENSCRIPT.scr -s CTCARAJU -p CTCMD061O
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Novedades:SCRIPT:GENSCRIPT.scr -s CTCARNOV -p CTCMD076
            TARJETA DE CREDITO:Menú de Carga de datos: Carga de Ajustes a Socios por Contracargos:SCRIPT:GENSCRIPT.scr -s COCONTRA -p CTMENU01 -o COPRG045 ONLIN COPRG045
            TARJETA DE CREDITO:Menú de Carga de datos: Limpiar Datos de Carga :SCRIPT:CTCARLIMPIAR.scr
            TARJETA DE CREDITO:Menú de Carga de datos: Verificar Datos Generacion VisualBasic:SCRIPT:CTVERFTP.scr
            TARJETA DE CREDITO:Menú de Carga de datos: Procesar Promocion de Cupones :SCRIPT:PROMO_CUPONES.scr
            TARJETA DE CREDITO:Menú de Carga de datos: Generar Orden de Embozado:SCRIPT:GENERA_OT_EMBOZADO.scr
            TARJETA DE CREDITO:Menú de Carga de datos: Proceso de Ajustes Automaticos al Pago Minimo:SCRIPT:GENERA_AJUSTES_PM.scr
            TARJETA DE CREDITO:Menú de Carga de datos: Proceso de Filtro de Pagos en Cero :SCRIPT:FILTRA_PAGO_0.scr
            
            # Validaciones
            TARJETA DE CREDITO:Menú de Validación: Validación de Cupones :SCRIPT:COVALCUP.scr
            
            
          4. Subprocesos Detallados:
            1. 'GENSCRIPT.scr': Este script es una plantilla genérica para la ejecución de programas y scripts según parámetros que se le pasen.
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo GENSCRIPT.scr
                linenumberstrue
                collapsetrue
                #!/bin/ksh
                # Script generico de ejecucion de programas y scripts
                # Los parametros son muy simples:
                # Sintaxis
                #     GENSCRIPT.scr -s SCRIPTNAME -p PGMNAME [-l SCRIPTLOG ]
                
                set +o noclobber
                
                Ayuda() {
                  echo "Sintaxis:  GENSCRIPT.scr -s SCRIPT -p PROGRAMA [-a ARGUMENTO][ -l LOG ][-w SWITCH][ -o OTRO-PGM ][ ARGUMENTO]"
                  exit 1
                }
                
                [ "$DEBUG" ] && set -x
                [ $# -lt 2  ] && Ayuda
                
                while getopts "w:s:p:l:o:a:h" OPCION
                do
                    case $OPCION in
                      s) SCRIPTNAME=$OPTARG;;
                      p) PGMNAME=$OPTARG;;
                      a) LINEA_ARG=$OPTARG;;
                      l) SCRIPTLOG=$OPTARG;;
                      o) OTROPGM=$OPTARG;;
                      w) typeset -x COBSW=$OPTARG;;
                      h) Ayuda;;
                    esac
                done
                shift `expr $OPTIND - 1`
                
                if [ ! "$SCRIPTLOG" ]
                then
                   NAME=${SCRIPTNAME:-"GENSCRIPT"}
                   [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$NAME.log
                   SCRIPTLOG=${SCRIPTLOG:-$RAIZD/logs/$NAME.log}
                fi
                
                [ ! "$SCRIPTNAME" ] && {
                  echo "===> ERROR. No se especifico nombre de SCRIPT" | tee -a $SCRIPTLOG
                  exit 1
                }
                
                [ ! "$PGMNAME" ] && {
                  echo "===> ERROR. No se especifico nombre de PROGRAMA" | tee -a $SCRIPTLOG
                  exit 2
                }
                
                [ "$OTROPGM" ] && OTROPGM="-o $OTROPGM"
                [ ! "$LINEA_ARG" ] && LINEA_ARG=$@
                [ "$LINEA_ARG" ] && export LINEA_ARG
                
                echo "--> Inicia $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                [ "$COBSW" ] && {
                  echo "    SWITCH especificado --> [$COBSW] " >> $SCRIPTLOG
                }
                
                echo "    GENSCRIPT: Argumento --> $LINEA_ARG" >>$SCRIPTLOG
                echo "    GENSCRIPT:Argumentos sobrantes:  $@" >>$SCRIPTLOG
                
                rtsora.sc -p $PGMNAME -s $SCRIPTNAME -l $SCRIPTLOG $OTROPGM
                STATUS=$?
                if [ $STATUS -ne 0 ]
                then
                    echo "---> Ejecucion de programa $PGMNAME con error. Status: $STATUS" | tee -a $SCRIPTLOG
                    echo "     Pulse [ENTER] para continuar"
                    read PAUSA
                    exit $STATUS
                fi
                
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
            2. 'CTARLIMPIAR.scr': Este script se encarga de limpiar y respaldar ciertos archivos en un directorio específico.
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo CTCARLIMPIAR.scr
                linenumberstrue
                collapsetrue
                NAME="CTCARLIMPIAR"
                SCRIPTLOG=$DIRLOGS/${NAME}.log
                DIRCARGA=$RAIZD/cargas
                HORA=$(date +%y%m%d%H%M)
                
                echo "--> Inicia CTACARLIMPIAR $(date) - $USER" | tee -a $SCRIPTLOG
                cd $DIRCARGA
                echo "    Directorio de trabajo: `pwd`" | tee -a $SCRIPTLOG
                
                if [ -f respaldo ]
                then
                    mv respaldo respaldo_arch
                    mkdir respaldo
                    chmod 775 respaldo
                    echo "    respaldo creado por unica vez." | tee -a $SCRIPTLOG
                else
                  if [ -d respaldo ]
                  then
                      continue
                  else
                      mkdir respaldo
                      chmod 775 respaldo
                      echo "    respaldo creado por unica vez." | tee -a $SCRIPTLOG
                  fi
                fi
                
                for ARCH_PROC in CABALCB3 pagosemin cabalcb5c maeopin.txt
                do
                  if [ -a $ARCH_PROC ]
                  then
                    cp -p $ARCH_PROC ${DIRCARGA}/respaldo/${ARCH_PROC}_${HORA}
                    > $ARCH_PROC
                    echo "    Inicializacion ok: $ARCH_PROC" | tee -a $SCRIPTLOG
                  fi
                done
                
                echo "--> Fin normal CTACARLIMPIAR $(date)" | tee -a $SCRIPTLOG
                
                
            3. 'CTVERFTP.scr': Este Script se encarga de verificar los datos de ciertos archivos generados antes de continuar con el proceamiento
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo CTVERFTP.src
                linenumberstrue
                collapsetrue
                NAME="CTCARLIMPIAR"
                SCRIPTLOG=$DIRLOGS/${NAME}.log
                DIRCARGA=$RAIZD/cargas
                HORA=$(date +%y%m%d%H%M)
                
                echo "--> Inicia ${NAME} $(date) - $USER" | tee -a $SCRIPTLOG
                cd $DIRCARGA
                echo "    Directorio de trabajo: `pwd`" | tee -a $SCRIPTLOG
                echo
                ls -lth pagosemin CABALCB3 cabalcb5c | tee -a $SCRIPTLOG
                
                error="0"
                
                for ARCH in pagosemin CABALCB3 cabalcb5c
                do
                  case $ARCH in
                   pagosemin) PROCESO=Pagos;;
                   CABALCB3)  PROCESO=Novedades;;
                   cabalcb5c) PROCESO=Ajustes;;
                  esac
                  SIZE=$(du -h $ARCH | awk '{ print $1 }')
                  if  [ $SIZE = "0" ]
                  then
                    echo "\n          *** Archivo de $PROCESO = $ARCH no tiene datos ***\n          Verifique generacion antes de continuar " | tee -a $SCRIPTLOG
                    error="1"
                  else
                    echo
                    echo "Archivo de $PROCESO = $ARCH ok."
                  fi
                done
                echo
                
                if [ $error = "1" ]
                then
                  echo "\n**********************************************\n***  NO SE PUEDEN PROCESAR LAS CARGAS.     ***\n***  AVISE A SISTEMAS ANTES DE CONTINUAR!  ***\n********************************************** " | tee -a $SCRIPTLOG
                else
                  echo "--> Fin normal CTACARLIMPIAR $(date)" | tee -a $SCRIPTLOG
                fi
                echo | tee -a $SCRIPTLOG
                
                
            4. 'FILTRA_PAGO_0.scr': Este script se encarga de filtrar los pagos con importe 0 desde la BBDD utilizando SQLPLUS
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo FILTRA_PAGO_0.scr
                linenumberstrue
                collapsetrue
                #!/bin/bash
                # Script para ejecutar el filtro de los pagos con importe 0
                # desde el sqlplus
                # Amalia Rodriguez.  mar sep 12 17:34:31 PYST 2017
                
                . funciones_py.scr
                
                SCRIPTNAME=FILTRA_PAGOS
                [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
                SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
                
                echo "--> Inicia $SCRIPTNAME `date` - $USER " | tee -a $SCRIPTLOG
                
                clear
                echo -n "
                         USUARIO NO INGRESADO POR PROGRAMA
                         INGRESE USUARIO: $USER_BAPY
                         PASSWORD       : "
                
                VerPasswdOracle
                if  [ $PASE_OK = "0" ]
                then
                    W_USUARIO=$USER
                    echo
                
                echo Inicio del proceso - $(date)
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} &> $HOME/$SCRIPTNAME.sqllog <<!
                exec CEIBO_UTILES.PR_CEIBO_LOG('PAGO_IMPORTE_CERO','FILTRO_PAGOS','INICIO DE PROCESO filtro_pago_importe_cero',SYSDATE,'$USER');
                exec CREDITOPY.SP_FILTRO_PAGO_IMPORTE_CERO@OLPY;
                commit;
                exit
                !
                    chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                    $HOME/ejecuta_$SCRIPTNAME.sh | tee -a $SCRIPTLOG | cat
                
                    ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                    
                    if [ $ret_cod -ne 0 ]
                    then
                      echo | tee -a $SCRIPTLOG | cat
                      echo "ERROR(ES) AL FILTRAR PAGOS CERO: " | tee -a $SCRIPTLOG | cat
                      grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                      echo "*** AVISE A SISTEMAS ANTES DE CONTINUAR CON EL PROCESO ***" | tee -a $SCRIPTLOG | cat
                      date | tee -a $SCRIPTLOG | cat
                    else
                      echo "Fin filtro de pagos - $(date) - $USER " | tee -a $SCRIPTLOG | cat
                    fi
                    rm -f $HOME/ejecuta_$SCRIPTNAME.sh
                fi
                
                rm -f $HOME/$SCRIPTNAME.sqllog
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
            5. 'GENERA_AJUSTES_PM.scr': Este escript se encarga de generar ajustes al pago mínimo desde la BBDD usando sqlplus.
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo 'GENERA_AJUSTES_PM.scr'
                linenumberstrue
                collapsetrue
                #!/bin/bash
                # Script para ejecutar la generacion de ajustes al pago minimo
                # desde el sqlplus
                # Amalia Rodriguez.  jue sep  7 17:14:19 PYST 2017
                
                . funciones_py.scr
                
                SCRIPTNAME=GENERA_AJUSTES_PM
                [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
                SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
                
                echo "--> Inicia $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                clear
                echo -n "
                         USUARIO NO INGRESADO POR PROGRAMA
                         INGRESE USUARIO: $USER_BAPY
                         PASSWORD       : "
                
                VerPasswdOracle
                if  [ $PASE_OK = "0" ]
                then
                    W_USUARIO=$USER
                    echo
                
                echo Inicio del proceso - $(date)
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} &> $HOME/$SCRIPTNAME.sqllog <<!
                exec CREDITOPY.CEIBO_EMISORES.PR_PROCESAR_AAPM_II();
                exec pkg_ceibo_fix.sp_fix_alta_mov_ajustes_dupli@olpy;
                commit;
                exit
                !
                    chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                    $HOME/ejecuta_$SCRIPTNAME.sh | tee -a $SCRIPTLOG | cat
                
                    ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                    
                    if [ $ret_cod -ne 0 ]
                    then
                      echo | tee -a $SCRIPTLOG | cat
                      echo "ERROR(ES) AL GENERAR AJUSTES AL PM: " | tee -a $SCRIPTLOG | cat
                      grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                      echo "*** AVISE A SISTEMAS ANTES DE CONTINUAR CON EL PROCESO ***" | tee -a $SCRIPTLOG | cat
                      date | tee -a $SCRIPTLOG | cat
                    else
                      echo "Fin generacion de ajustes - $(date)" | tee -a $SCRIPTLOG | cat
                    fi
                    rm -f $HOME/ejecuta_$SCRIPTNAME.sh
                fi
                
                rm -f $HOME/$SCRIPTNAME.sqllog
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
            6. 'GENERA_OT_EMBOZADO.scr': Este script se encarga de generar órdenes de embozado desde la BBDD usando sqlplus
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo GENERA_OT_EMBOZADO.scr
                linenumberstrue
                collapsetrue
                #!/bin/bash
                # Script para ejecutar la generacion de ordenes de embozado
                # desde el sqlplus
                # Amalia Rodriguez.  Mon Oct 29 17:27:39 PYST 2012
                
                . funciones_py.scr
                
                SCRIPTNAME=GENERA_OT
                [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
                SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
                
                echo "--> Inicia $SCRIPTNAME `date` - $USER " | tee -a $SCRIPTLOG
                
                clear
                echo -n "
                         USUARIO NO INGRESADO POR PROGRAMA
                         INGRESE USUARIO: $USER_BAPY
                         PASSWORD       : "
                
                VerPasswdOracle
                if  [ $PASE_OK = "0" ]
                then
                    W_USUARIO=$USER
                    echo
                
                echo Inicio del proceso - $(date)
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} &> $HOME/$SCRIPTNAME.sqllog <<!
                alter session set NLS_LANGUAGE = 'SPANISH';
                prompt Procesando cierre embozado...;
                exec creditopy.PR_GENERA_OT(805,0,'$W_USUARIO',0);
                exit
                !
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} <<!
                set linesize 120;
                set head off;
                select 'Fecha: ' || a.fecha_orden || ' Procesador: ' || a.procesador || ' Nro Orden: ' || lpad(a.nro_orden,6) ||
                       ' Cnt.Tarjetas: ' || lpad(a.cant_tarjetas,6) || ' - Generado por: ' || a.usuario
                from ot_ordenes a where a.fecha_registro > trunc(sysdate) and upper(a.usuario) = upper('$W_USUARIO') order by a.nro_orden;
                exit
                !
                    chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                    $HOME/ejecuta_$SCRIPTNAME.sh | tee -a $SCRIPTLOG | cat
                
                    ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                    
                    if [ $ret_cod -ne 0 ]
                    then
                      echo | tee -a $SCRIPTLOG | cat
                      echo "ERROR(ES) AL CERRAR ORDEN:" | tee -a $SCRIPTLOG | cat
                      grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                      echo "*** NO SE PUEDEN EMBOZAR TARJETAS - AVISE A SISTEMAS ***" | tee -a $SCRIPTLOG | cat
                      date | tee -a $SCRIPTLOG | cat
                    else
                      echo "Fin proceso de generacion de orden - $(date)" | tee -a $SCRIPTLOG | cat
                    fi
                    rm -f $HOME/ejecuta_$SCRIPTNAME.sh
                fi
                
                rm -f $HOME/$SCRIPTNAME.sqllog
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
            7. 'PROMO_CUPONES.scr': Este Script se encarga de ejecutar la promoción de cupones desde la BBDD usando sqlplus.
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo PROMO_CUPONES.scr
                linenumberstrue
                collapsetrue
                #!/bin/bash
                # Script para ejecutar la promocion de cupones
                # desde el sqlplus
                # Amalia Rodriguez.  Wed Dec  9 15:46:17 PYST 2009
                
                . funciones_py.scr
                
                SCRIPTNAME=PROMO_CUPONES
                [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
                SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
                
                echo "--> Inicia $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                clear
                echo -n "
                         USUARIO NO INGRESADO POR PROGRAMA
                         INGRESE USUARIO: $USER_BAPY
                         PASSWORD       : "
                
                VerPasswdOracle
                if  [ $PASE_OK = "0" ]
                then
                    W_USUARIO=$USER
                    echo
                
                echo Inicio del proceso - $(date)
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} &> $HOME/$SCRIPTNAME.sqllog <<!
                prompt Generando promocion de cupones...;
                exec creditopy.PR_PROMO_PROCESAR('$W_USUARIO',805,to_date('01/01/1900','dd/mm/yyyy'),0,0);
                exit
                !
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} <<!
                set head off;
                select 'Proceso: '||nombre_proceso, 'Cnt.Cup: '||ent1 from creditopy.control_datos
                 where fecha_proceso = trunc(sysdate) and nombre_proceso like 'PROMO%';
                exit
                !
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} <<!
                set echo off;
                prompt Aplicando cotizacion a autorizaciones...;
                exec creditopy.PR_BUG_COTIZACIONES;
                commit;
                prompt Generando creditos por intereses con tasa 0...;
                exec creditopy.PR_DEVOLVER_INTERES(null);
                commit;
                prompt Generando cargos por cobranza...;
                exec creditopy.PROCESAR_CARGOS.PR_GENERAR_COMISION(805,0,null,'$W_USUARIO');
                commit;
                exit
                !
                    chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                    $HOME/ejecuta_$SCRIPTNAME.sh | tee -a $SCRIPTLOG | cat
                
                    ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                    
                    if [ $ret_cod -ne 0 ]
                    then
                      echo | tee -a $SCRIPTLOG | cat
                      echo "ERROR(ES) AL PROCESAR PROMOCION:" | tee -a $SCRIPTLOG | cat
                      grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                      echo "*** NO PROCESAR LA DIARIA - AVISE A SISTEMAS ***" | tee -a $SCRIPTLOG | cat
                      date | tee -a $SCRIPTLOG | cat
                    else
                      echo "Fin proceso de promocion de cupones - $(date)" | tee -a $SCRIPTLOG | cat
                    fi
                    rm -f $HOME/ejecuta_$SCRIPTNAME.sh
                fi
                
                rm -f $HOME/$SCRIPTNAME.sqllog
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
            8. 'COVALCUP.scr': Este script se encarga del proceso de validación de cupones.
              1. Código:

                Code Block
                languagebash
                themeDJango
                titleResumen del archivo COVALCUP.scr
                linenumberstrue
                collapsetrue
                #!/bin/ksh
                set +o noclobber
                # Script que tiene por objeto la validacion de cupones - prg025
                # H.Perez - Junio 6 del 2000
                
                SCRIPTNAME=COVALCUP
                [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
                SCRIPTLOG=${SCRIPTLOG:-$RAIZ/lib/datos/logs/$SCRIPTNAME.log}
                umask '002'
                
                echo "--> Inicia $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                while getopts w:h: OPCION
                do
                    case $OPCION in
                      w) COBS
                
                W=$OPTARG;; 
                      h) Ayuda;;
                    esac
                done
                
                shift `expr $OPTIND - 1`
                
                PGMNAME=COPRG025
                
                echo "Programado COPRG025 $COBSW" | tee -a $SCRIPTLOG
                
                sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<!
                
                prompt Ejecutando prg025....;
                exec PR_CUENTAS_RECALCULO;
                
                exit;
                !
                
                if [ $STATUS -ne 0 ]
                then
                    echo "---> Ejecucion de programa $PGMNAME con error. Status: $STATUS" | tee -a $SCRIPTLOG
                    exit $STATUS
                fi
                
                echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
                
                
    2. Query de Control - Comercios

    3. Actualizaciones para el proceso diario

    4. Reportes de la Diaria

    5. Reportes de Novedades de Usuarios

    6. Impresion Informes de Comercios

    7. Querys de Socios

      1. Archivos ejecutados:

        1. MenuOperSocios.sh
          1. ConsultaSeguridad.scr
          2. PR_NotifCTADisponibleMayorLimite.sh
          3. PR_Recalculo.sh
          4. PR_Recalculo_PostFact.sh
          5. Time_Out_Autoriz.sh
          6. UPD_FECHAS_PAGOS.sh
          7. Upd_TIPNOV2.sh
          8. Venc_Tarjetas.sh
      2. Descripción:

        1. El menú "Querys de Socios" en el script MenuOperSocios.sh proporciona varias opciones para realizar operaciones y controles relacionados con los socios. A continuación, se describen las opciones del menú y los subprocesos ejecutados por cada una.

      3. SubOpciones y SubProcesos Ejecutados.

        1. Actualización de Novedades de Dirección

          1. Script Ejecutado: Upd_TIPNOV2.sh
          2. Descripción: Este Script ejecuta procedimientos almacenados para actualizar direcciones y límites de crédito.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo Upd_TIPNOV2.sh
            linenumberstrue
            collapsetrue
            #!/bin/bash
            # Ejecucion del PR_ACTU_DIRECCIONES
            
            fpid=$$
            fshell="ejecuta$fpid.sh"
            
            echo "Ejecucion actualiza direccion y limites - $(date)"
            
            echo "
            sqlplus -S creditopy/hajimenoippo@$ORACLE_SID <<!
            set time on;
            exec PR_ACTU_LIMITES_BA;
            exec PR_ACTU_DIRECCIONES(null);
            exit;
            !" > $HOME/$fshell
            
            chmod +x $HOME/$fshell
            $HOME/$fshell
            rm -f $HOME/$fshell
            
            echo "Fin actualiza direccion - $(date)"
            
            
        2. Control de Generación de Plásticos.
          1. Script Ejecutado: Qry_Plasticos.sh
          2. Descripción: Este script controla la generación de plásticos para una fecha específica.
          3. Código: Actualmente está comentado la ejecución de este script.
        3. Control de Inserción de Pines Faltantes.
          1. Script Ejecutado: Upd_Imp_Pines.sh
          2. Descripción: Este script controla la generación de pines para una fecha específica.
          3. Código: Actualmente está comentado la ejecución de este script.
        4. Actualización de Pagos con Fecha Mayor  Hoy
          1. Script Ejecutado: UPD_FECHAS_PAGOS.scr
          2. Descripción: Este script actualiza las fechas de pagos procesados que tienen una fecha mayor a la actual.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo UPD_FECHAS_PAGOS.scr
            linenumberstrue
            collapsetrue
            #!/bin/bash
            # Script para ejecutar la actualizacion de fechas de pagos procesados por archivo con fecha mayor a hoy
            # desde el sqlplus
            # Amalia Rodriguez.  Wed Jan  2 13:51:23 PYST 2013
            
            . funciones_py.scr
            
            SCRIPTNAME=UPD_FECHAS_PAGOS
            [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
            SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
            
            echo "--> Inicia $SCRIPTNAME `date` - $USER " | tee -a $SCRIPTLOG
            
            clear
            echo -n "
                     USUARIO NO INGRESADO POR PROGRAMA
                     INGRESE USUARIO: $USER_BAPY
                     PASSWORD       : "
            
            VerPasswdOracle
            if  [ $PASE_OK = "0" ]
            then
                W_USUARIO=$USER
                echo
                echo Inicio del proceso - $(date)
                sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} &> $HOME/$SCRIPTNAME.sqllog <<!
            alter session set NLS_LANGUAGE = 'SPANISH';
            prompt Actualizando fecha de pagos...;
            UPDATE LOG_TRANSACC_CR@OLPY A SET A.FECHA=TO_DATE(TO_CHAR(A.FECHA,'DDMM')||(TO_CHAR(SYSDATE,'YYYY') - 1),'DDMMYYYY')
             WHERE A.PLAN=6 AND TRUNC(A.FECHA)>TRUNC(SYSDATE);
            commit;
            exit
            !
            
                chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                $HOME/ejecuta_$SCRIPTNAME.sh | tee -a $SCRIPTLOG | cat
            
                ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                
                if [ $ret_cod -ne 0 ]
                then
                  echo | tee -a $SCRIPTLOG | cat
                  echo "ERROR(ES) AL ACTUALIZAR PAGOS:" | tee -a $SCRIPTLOG | cat
                  grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                  echo "*** AVISE A SISTEMAS ***" | tee -a $SCRIPTLOG | cat
                  date | tee -a $SCRIPTLOG | cat
                else
                  echo "Fin proceso de actualizacion de pagos. - $(date)" | tee -a $SCRIPTLOG | cat
                fi
                rm -f $HOME/ejecuta_$SCRIPTNAME.sh
            fi
            
            rm -f $HOME/$SCRIPTNAME.sqllog
            echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
            
            
        5. Procesos Diarios: Vencer Autorizaciones y Recalcular Disponible
          1. Script Ejecutado: Time_out_Autoriz.sh - PR_Recalculo.sh
          2. Descripción: 'Time_out_Autoriz.sh' Ejecuta el procedimiento de tiempo de espera de autorizaciones. 'PR_Recalculo.sh' Ejecuta el procedimiento de recalculo de cuentas.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo Time_Out_Autoriz.sh
            linenumberstrue
            collapsetrue
            # ejecucion del pr_time_out_autoriz
            W_PID=$$
            echo "Ejecucion time-out de Autorizaciones - $(date)" 
            echo "Ejecucion time-out de Autorizaciones - $(date)" >> $DIRLOGS/time_out_autoriz.log
            
            echo "
            sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<! 
            
            set time on;
            prompt exec PROCESO_CUPONES.pr_time_out_autoriz;
            exec PROCESO_CUPONES.pr_time_out_autoriz(lpad('$USER',8));
            
            exit;
            !" > $HOME/ejecuta.sh_$USER$W_PID
            chmod -f +x $HOME/ejecuta.sh_$USER$W_PID
            
            $HOME/ejecuta.sh_$USER$W_PID | tee -a  $DIRLOGS/time_out_autoriz.log | cat
            
            echo "time-out de Autorizaciones finalizado - $(date)" 
            echo "time-out de Autorizaciones finalizado - $(date)" >> $DIRLOGS/time_out_autoriz.log
            
            rm $HOME/ejecuta.sh_$USER$W_PID
            
            
          4. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo PR_Recalculo.sh
            linenumberstrue
            collapsetrue
            # ejecucion del PR_Recalculo.sh
            # Mon Aug 31 16:50:33 PYT 2015 - ARodrigu
            W_PID=$$
            echo "-----------------------------------------------" >> $DIRLOGS/PR_CUENTAS_RECALCULO.log
            echo "Ejecucion PR_Recalculo.sh - $(date)" | tee -a $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            echo "
            sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<!
            
            set time on;
            prompt exec PR_CUENTAS_RECALCULO;
            exec PR_CUENTAS_RECALCULO(0,CEIBO_SOCIOS.CC_PROC_DISPONIBLE);
            commit;
            exit;
            
            !" > $HOME/ejecuta.sh_$USER$W_PID
            chmod -f +x $HOME/ejecuta.sh_$USER$W_PID
            
            $HOME/ejecuta.sh_$USER$W_PID | tee -a  $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            echo "PR_Recalculo.sh finalizado - $(date)" | tee -a $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            rm $HOME/ejecuta.sh_$USER$W_PID
            
            
            
        6. Notificación de Cuentas con Disponible Mayor al Límite
          1. Script: PR_NotifCTADisponibleMayorLimite.sh
          2. Descripción: Este script ejecuta el procedimiento de notificación de cuentas con disponible mayor a su límite.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo PR_NotifCTADisponibleMayorLimite.sh
            linenumberstrue
            collapsetrue
            # ejecucion del pr_time_out_autoriz
            W_PID=$$
            echo "Ejecucion de Notificaciones de Cuentas con Disponible mayor a su Limite - $(date)" 
            echo "Ejecucion de Notificaciones de Cuentas con Disponible mayor a su Limite - $(date)" >> $DIRLOGS/pr_notif_cta_disponible_limite.log
            
            echo "
            sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<! 
            
            set time on;
            prompt exec creditopy.pkg_notificaciones_proceso.sp_disponible_mayor_limite_cta;
            exec creditopy.pkg_notificaciones_proceso.sp_disponible_mayor_limite_cta;
            
            exit;
            !" > $HOME/ejecuta.sh_$USER$W_PID
            chmod -f +x $HOME/ejecuta.sh_$USER$W_PID
            
            $HOME/ejecuta.sh_$USER$W_PID | tee -a  $DIRLOGS/pr_notif_cta_disponible_limite.log | cat
            
            echo "Notificaciones de Cuentas con Disponible mayor a su Limite finalizado - $(date)" 
            echo "Notificaciones de Cuentas con Disponible mayor a su Limite finalizado - $(date)" >> $DIRLOGS/pr_notif_cta_disponible_limite.log
            
            rm $HOME/ejecuta.sh_$USER$W_PID
            
            
        7. Procesos Mensuales: Vencimiento de Tarjetas
          1. Script Ejecutado: Venc_Tarjetas.sh
          2. Descripción: Este script ejecuta el procedimiento de vencimiento de tarjetas.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo Venc_Tarjetas.sh
            linenumberstrue
            collapsetrue
            # ejecucion del pr_venc_tarjetas
            W_PID=$$
            echo "Ejecucion vencimiento de tarjetas: $1 - $(date)" >> $DIRLOGS/vencimiento_tarjetas.log
            
            echo "
            sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<!
            
            prompt exec pr_venc_tarjetas;
            exec pr_venc_tarjetas(to_date('$1','ddmmyyyy'),lpad('$USER',8));
            
            select 'Cant. tarjetas vencidas: '||cant||' - Fecha de ejecucion: '||l.fecha_proceso mensaje
              from log_vto_tarjetas l where fecha_vto = to_date('$1','ddmmyyyy');
            
            exit
            !" > $HOME/ejecuta.sh_$USER$W_PID
            chmod -f +x $HOME/ejecuta.sh_$USER$W_PID
            
            $HOME/ejecuta.sh_$USER$W_PID | tee -a  $DIRLOGS/vencimiento_tarjetas.log | cat
            
            rm $HOME/ejecuta.sh_$USER$W_PID
            
            echo "Vencimiento de tarjetas finalizado - $(date) "  >> $DIRLOGS/vencimiento_tarjetas.log
            
            
        8. Procesos Post-Facturación: Recalculo de Disponibles
          1. Script Ejecutado: PR_Recalculo_PostFact.sh
          2. Descripción: Este script ejecuta el procedimiento de recalculo de cuentas post-facturación.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo PR_Recalculo_PostFact.sh
            linenumberstrue
            collapsetrue
            # ejecucion del PR_Recalculo_PostFact.sh
            # Mon Aug 31 16:50:33 PYT 2015 - ARodrigu
            W_PID=$$
            echo "-----------------------------------------------" >> $DIRLOGS/PR_CUENTAS_RECALCULO.log
            echo "Ejecucion PR_Recalculo_PostFact.sh - $(date)" | tee -a $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            echo "
            sqlplus creditopy/${PASE_BAPY}@${ORACLE_SID} <<!
            
            set time on;
            
            prompt exec PR_CUENTAS_RECALCULO;
            exec PR_CUENTAS_RECALCULO(1,CEIBO_SOCIOS.CC_PROC_DISPONIBLE);
            commit;
            exit;
            
            !" > $HOME/ejecuta.sh_$USER$W_PID
            chmod -f +x $HOME/ejecuta.sh_$USER$W_PID
            
            $HOME/ejecuta.sh_$USER$W_PID | tee -a  $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            echo "PR_Recalculo_PostFact.sh finalizado - $(date)" | tee -a $DIRLOGS/PR_CUENTAS_RECALCULO.log | cat
            
            rm $HOME/ejecuta.sh_$USER$W_PID
            
            
        9. Consulta Seguridad:
          1. Script Ejecutado: ConsultaSeguridad.scr
          2. Descripción: Este script consulta el código de seguridad de una tarjeta en la BBDD, verificando primero si el usuario que ejecuta el script está autorizado.
          3. Código:

            Code Block
            languagebash
            themeDJango
            titleResumen del archivo ConsultaSeguridad.scr
            linenumberstrue
            collapsetrue
            #!/bin/bash
            # Script para consultar codigo de seguridad
            # desde el sqlplus
            # Amalia Rodriguez. lun ene 13 13:06:05 PYST 2020
            
            . funciones_py.scr
            
            SCRIPTNAME=CONSULTA_SEG
            [ "$DIRLOGS" ] && SCRIPTLOG=$DIRLOGS/$SCRIPTNAME.log
            SCRIPTLOG=${SCRIPTLOG:-$RAIZ/datos/logs/$SCRIPTNAME.log}
            
            echo "--> Inicia $SCRIPTNAME `date` - $USER " | tee -a $SCRIPTLOG
            
            # verifico si el operador es un operador autorizado
            
            case $USER in 
                mfischer|lacosta|rcenturion|jportillo|rbenegas|aestigarribia|forrego|otatton) 
            
            # se habilita la consulta
            clear
            echo -n "
                     USUARIO NO INGRESADO POR PROGRAMA
                     INGRESE USUARIO: $USER_BAPY
                     PASSWORD       : "
            VerPasswdOracle
            if  [ $PASE_OK = "0" ]
            then
                W_USUARIO=$USER
                echo
                echo -n "Ingrese Tarjeta: "
                read TARJETA
                echo
            
            sqlplus -S -L ${USER_BAPY}/${PASE_BAPY}@${ORACLE_SID} <<!
            
            set echo off;
            set head off;
            
            select F_CONSULTA_SEG(trim('$TARJETA'),'$USER') detalle from dual;
            
            exit
            !
            
                chmod +x $HOME/ejecuta_$SCRIPTNAME.sh
                $HOME/ejecuta_$SCRIPTNAME.sh 
            
                ret_cod=$(grep -c ORA- $HOME/$SCRIPTNAME.sqllog )
                
                if [ $ret_cod -ne 0 ]
                then
                  echo | tee -a $SCRIPTLOG | cat
                  echo "ERROR(ES) AL CONSULTAR: " | tee -a $SCRIPTLOG | cat
                  grep ORA- $HOME/$SCRIPTNAME.sqllog | tee -a $SCRIPTLOG | cat
                  date | tee -a $SCRIPTLOG | cat
                else
                  echo "Fin consulta - $(date) - $USER " | tee -a $SCRIPTLOG | cat
                fi
                rm -f $HOME/ejecuta_$SCRIPTNAME.sh
            fi
            
            rm -f $HOME/$SCRIPTNAME.sqllog
                ;;
            # fin de la consulta
            
              *) echo
                 echo "$USER no habilitado." | tee -a $SCRIPTLOG | cat
                 echo
                 ;;
            esac
            
            echo "--> $SCRIPTNAME `date`" | tee -a $SCRIPTLOG
            
            
    8. Deposito de archivos SFTP PANAL

    9. Generacion de Resumenes (Usuarios)

    10. Impresion de Resumenes (Usuarios)

    11. Cancelacion de spool de $USER

    12. Consulta de pagina de Resumenes

    13. Conversion Debitos Automaticos Manuales

    14. Captura de MAEOPIN de intercambio

    15. Conciliacion de Operaciones Locales y Extranjeras

    16. Backups

    17. Especiales






    Autor:  Arturo Sosa

    Fecha:  

    Fecha modificación: 

    Versión: 1.0.0.0