wiki:interfaces_ejecucionlivecurl

Código Ejecución Live Interfaces Contables - cURL

El código para manejo de Interfaces Contables en ejecución Live, tiene tres archivos bases que se encuentran ubicados en distintos puntos en los proyectos Symfony que proveen los servicios para GWT, estos se conectan a partir de cURL con el servidor DJANGO, con el fin de ejecutar al momento que se genere la transacción, la interfaz provista. Los archivos que generan esta ejecución son:

ARCHIVO APP.YML

Este archivo contiene la configuración básica de la ip del servidor DJANGO donde se va a ejecutar la ejecución lie, así mismo contiene los ids de ejecución de las interfaces para ese módulo, una variable de control para saber si se puede o no ejecutar el servicio y una variable para manejo de solo iva en facturación.

    ipServidorInterfaz:    xxx.xxx.xxx.xxx:90/batch/add.json?id_username=
    idModuloNotasCredito:    'xx'
    idTransaccionNotasCredito:    'xx'
    idModuloNotasDebito:    'xx'
    idTransaccionNotasDebito:    'xx'
    idModuloFacturaPOS:    'xx'
    idTransaccionFacturaPOS:    'xx'
    idModuloFacturaPOSIVA:    'xx'
    idTransaccionFacturaPOSIVA:    'xx'
    idModuloNovedadDebito:    'xx'
    idTransaccionNovedadDebito:    'xx'
    idCiaInterfazContable:    '1'
    utilizaSoloFacturacionIva:    '0'

ARCHIVO CN_TABLE (sfActions en módulos con solo Symfony)

En este archivo reside el método para el llamado de cURL, el cual contiene el seteo de las parametrizaciones y la llamada al servidor.

//Llamada a ejecución de interfaces contables, este se ejecuta desde DJANGO, a partir de una llamada
    //hecha por cURL, el proceso se ejecuta en el servidor DJANGO y retorna los mensajes de ejecución exitosa
    //Este ejecuta de acuerdo a la fehca establecida y solo recorre la fecha que se ha seteado.
    //@entrada:
            //$fechaEjecucion: Fecha de ejecucion del proceso
            //$user: Id del usuario que esta ejecutando
            //$cenop: Id del Centro de operaciones del que se ejecuta
            //$cia: Id de la compañia que ejecuta
            //$moduloEjecucion: Modulo que ejecuta para traer los parametros desde app.yml
    //@salida: None
     public static function callInterfazContableExecute($fechaEjecucion,$user,$cia,$moduloEjecucion,$idMovimientoContable){
         $logger = sfContext::getInstance()->getLogger();
        //Se verifica el módulo con el que se va a ejecutar para traer el id del módulo y el id de la transacción.
        switch($moduloEjecucion){
            case "Notas Credito":
                //Setea lso valores de acuerdo a la operación
                $transaccion=sfConfig::get('app_idTransaccionNotasCredito');
                $modulo=sfConfig::get('app_idModuloNotasCredito');
            break;
            case "Notas Debito":
                //Setea lso valores de acuerdo a la operación
                $transaccion=sfConfig::get('app_idTransaccionNotasDebito');
                $modulo=sfConfig::get('app_idModuloNotasDebito');
            break;
            case "Factura POS":
                //Setea lso valores de acuerdo a la operación
                $transaccion=sfConfig::get('app_idTransaccionFacturaPOS');
                $modulo=sfConfig::get('app_idModuloFacturaPOS');
            break;
            case "Novedad Debito":
                //Setea lso valores de acuerdo a la operación
                $transaccion=sfConfig::get('app_idTransaccionNovedadDebito');
                $modulo=sfConfig::get('app_idModuloNovedadDebito');
            break;
            default:
                $logger->info("[INTERFACES - CONTABLES] No se encuentra tipo de movimiento para ejecutar las Interfaces Contables");
                die();
        }
        //Se trae de la configuracipon la url que se ha establecido para las interfaces contables
        $url=sfConfig::get('app_ipServidorInterfaz');
        //Se ingresa a la url el id del usuario que ejecuta
        $url =$url.$user;
        $url ="http://".$url;
        //Se setean los parametros para ejecución
        //MOdificación - Se valida si viene o no id de movimiento para ejecutar en bloque o individual
        if($idMovimientoContable==0){
            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion;
        }
        else{
            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion.'&id_movimiento_ejecutado='.$idMovimientoContable;  
        }
        //Se inicializa con la URL el cURL
        $sesion = curl_init($url);
        $logger->info("URL Llamado Interfaces Contables: ".$url);
        $logger->info("Parametros: ".$parametros_post);
        //Define el tipo de ejecución, en este caso POST
        curl_setopt ($sesion, CURLOPT_POST, true);  
        //Se ingresan los parametos estabelcidos 
        curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
        //Parametros de retorno en cURL
        curl_setopt($sesion, CURLOPT_HEADER, false); 
        curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
        curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
        //Ejecuta la petición
        $respuesta = curl_exec($sesion); 
        //Se cierra la conexión
        curl_close($sesion);
        $utilizaIva=sfConfig::get('app_utilizaSoloFacturacionIva');
        if ($utilizaIva==1 && $moduloEjecucion="Factura POS"){
            $transaccion=sfConfig::get('app_idTransaccionFacturaPOSIVA');
            $modulo=sfConfig::get('app_idModuloFacturaPOSIVA');
            //Se trae de la configuracipon la url que se ha establecido para las interfaces contables
            $url=sfConfig::get('app_ipServidorInterfaz');
            //Se ingresa a la url el id del usuario que ejecuta
            $url =$url.$user;
            $url ="http://".$url;
            //Se setean los parametros para ejecución
            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion.'&id_movimiento_ejecutado='.$idMovimientoContable;
            //Se inicializa con la URL el cURL
            $sesion = curl_init($url);
            $logger->info("URL Llamado Solo Iva: ".$url);
            $logger->info("Parametros: ".$parametros_post);
            //Define el tipo de ejecución, en este caso POST
            curl_setopt ($sesion, CURLOPT_POST, true);  
            //Se ingresan los parametos estabelcidos 
            curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
            //Parametros de retorno en cURL
            curl_setopt($sesion, CURLOPT_HEADER, false); 
            curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
            curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
            //Ejecuta la petición
            $respuesta = curl_exec($sesion); 
            //Se cierra la conexión
            curl_close($sesion);
        }
        //Retorna la respuesta que genero el cURL
        return($respuesta);
     }

Llamada en ejecución de los módulos

En cada módulo existe una llamada al archivo (CN_TABLE o sfActions) de acuerdo a los parámetros recibidos y retorna la respuesta en caso que en la ejecución suceda un error.

//INTERFACES CONTABLES - Código para ejecución Live de Interfaces Contables
                //Llama al método para ejecutar las interfaces contables desde el CN_TABLE
                //Se agrega la información para hacer el llamado a Interfaces Contables
                //Se setea la fecha de ejecución de la interfaz con la fecha del movimiento
                $fechaEjecucion=date($request['fecha_proceso']);
                $this->logMessage("Fecha Movimiento: ".$fechaEjecucion);
                //Captura del id del usuario - maeter
                $idUserName=$request['id_mae_ter'];
                $this->logMessage("Id Mater: ".$idUserName);
                //Id de la Compañía
                $idCia=sfConfig::get('app_idCiaInterfazContable');
                $this->logMessage("Configuracion Compañia: ".$idCia);
                //Tipo de movimiento a Evaluar
                $movimientoInventario=$request['mov_ejecutado'];
                $this->logMessage("Tipo de movimiento: ".$movimientoInventario);
                //Id del movimiento ejecutado:
                //MOdificación - Revisa si esta o no seteado el id del movimiento para procesar en bloque o individual
                if(isset($request['id_movimiento'])){
                    $idMovimientoContable=$request['id_movimiento'];
                }
                else{
                    $idMovimientoContable=0;
                }
                $this->logMessage("Id Movimiento: ".$idMovimientoContable);
                $this->logMessage("Llama a el método de Interfaces Contables");
                //Se hace el llamado al método de Interfaces Contables que se encuentra en CN_TABLE 
                $respuestaInterfaz=CN_TABLE::callInterfazContableExecute($fechaEjecucion,$idUserName,$idCia,$movimientoInventario,$idMovimientoContable);
                //Transforma el JSON en array para capturar los datos
                $arrayRespuestaInterfaz= json_decode($respuestaInterfaz,true);
                //Verifica el status, si es diferente de 0, ocurrio un error al subir la interfaz y debe reportarlo
                if($arrayRespuestaInterfaz['response']['status']!=0){
                    $mensaje=$arrayRespuestaInterfaz['response']['data']; 
                    $this->status = 3;
                    $a = $mensaje[0]['mensaje'];
                    $b = htmlspecialchars($a, ENT_QUOTES);
                    $this->mensajeError = $b;
                }
                else{
                    $this->logMessage("Ejecuta correctamente la interfaz contable");
                    $this->logMessage("Estatus de ejecución".$arrayRespuestaInterfaz['response']['status']);
                    $this->logMessage(print_r($arrayRespuestaInterfaz));
                }
                $this->list_data = array();

Con estos archivos se genera la llamada Live al servidor.

Last modified 10 years ago Last modified on 08/25/14 16:31:07
Note: See TracWiki for help on using the wiki.