Changes between Version 1 and Version 2 of interfaces_ejecucionlivecurl


Ignore:
Timestamp:
08/25/14 16:31:07 (10 years ago)
Author:
Eduardo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • interfaces_ejecucionlivecurl

    v1 v2  
    55== ARCHIVO APP.YML ==
    66
     7Este 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.
    78
     9{{{
     10    ipServidorInterfaz:    xxx.xxx.xxx.xxx:90/batch/add.json?id_username=
     11    idModuloNotasCredito:    'xx'
     12    idTransaccionNotasCredito:    'xx'
     13    idModuloNotasDebito:    'xx'
     14    idTransaccionNotasDebito:    'xx'
     15    idModuloFacturaPOS:    'xx'
     16    idTransaccionFacturaPOS:    'xx'
     17    idModuloFacturaPOSIVA:    'xx'
     18    idTransaccionFacturaPOSIVA:    'xx'
     19    idModuloNovedadDebito:    'xx'
     20    idTransaccionNovedadDebito:    'xx'
     21    idCiaInterfazContable:    '1'
     22    utilizaSoloFacturacionIva:    '0'
     23}}}
     24
     25
     26== ARCHIVO CN_TABLE (sfActions en módulos con solo Symfony) ==
     27
     28En este archivo reside el método para el llamado de cURL, el cual contiene el seteo de las parametrizaciones y la llamada al servidor.
     29
     30
     31{{{
     32//Llamada a ejecución de interfaces contables, este se ejecuta desde DJANGO, a partir de una llamada
     33    //hecha por cURL, el proceso se ejecuta en el servidor DJANGO y retorna los mensajes de ejecución exitosa
     34    //Este ejecuta de acuerdo a la fehca establecida y solo recorre la fecha que se ha seteado.
     35    //@entrada:
     36            //$fechaEjecucion: Fecha de ejecucion del proceso
     37            //$user: Id del usuario que esta ejecutando
     38            //$cenop: Id del Centro de operaciones del que se ejecuta
     39            //$cia: Id de la compañia que ejecuta
     40            //$moduloEjecucion: Modulo que ejecuta para traer los parametros desde app.yml
     41    //@salida: None
     42     public static function callInterfazContableExecute($fechaEjecucion,$user,$cia,$moduloEjecucion,$idMovimientoContable){
     43         $logger = sfContext::getInstance()->getLogger();
     44        //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.
     45        switch($moduloEjecucion){
     46            case "Notas Credito":
     47                //Setea lso valores de acuerdo a la operación
     48                $transaccion=sfConfig::get('app_idTransaccionNotasCredito');
     49                $modulo=sfConfig::get('app_idModuloNotasCredito');
     50            break;
     51            case "Notas Debito":
     52                //Setea lso valores de acuerdo a la operación
     53                $transaccion=sfConfig::get('app_idTransaccionNotasDebito');
     54                $modulo=sfConfig::get('app_idModuloNotasDebito');
     55            break;
     56            case "Factura POS":
     57                //Setea lso valores de acuerdo a la operación
     58                $transaccion=sfConfig::get('app_idTransaccionFacturaPOS');
     59                $modulo=sfConfig::get('app_idModuloFacturaPOS');
     60            break;
     61            case "Novedad Debito":
     62                //Setea lso valores de acuerdo a la operación
     63                $transaccion=sfConfig::get('app_idTransaccionNovedadDebito');
     64                $modulo=sfConfig::get('app_idModuloNovedadDebito');
     65            break;
     66            default:
     67                $logger->info("[INTERFACES - CONTABLES] No se encuentra tipo de movimiento para ejecutar las Interfaces Contables");
     68                die();
     69        }
     70        //Se trae de la configuracipon la url que se ha establecido para las interfaces contables
     71        $url=sfConfig::get('app_ipServidorInterfaz');
     72        //Se ingresa a la url el id del usuario que ejecuta
     73        $url =$url.$user;
     74        $url ="http://".$url;
     75        //Se setean los parametros para ejecución
     76        //MOdificación - Se valida si viene o no id de movimiento para ejecutar en bloque o individual
     77        if($idMovimientoContable==0){
     78            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion;
     79        }
     80        else{
     81            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion.'&id_movimiento_ejecutado='.$idMovimientoContable; 
     82        }
     83        //Se inicializa con la URL el cURL
     84        $sesion = curl_init($url);
     85        $logger->info("URL Llamado Interfaces Contables: ".$url);
     86        $logger->info("Parametros: ".$parametros_post);
     87        //Define el tipo de ejecución, en este caso POST
     88        curl_setopt ($sesion, CURLOPT_POST, true); 
     89        //Se ingresan los parametos estabelcidos
     90        curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
     91        //Parametros de retorno en cURL
     92        curl_setopt($sesion, CURLOPT_HEADER, false);
     93        curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
     94        curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
     95        curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
     96        //Ejecuta la petición
     97        $respuesta = curl_exec($sesion);
     98        //Se cierra la conexión
     99        curl_close($sesion);
     100        $utilizaIva=sfConfig::get('app_utilizaSoloFacturacionIva');
     101        if ($utilizaIva==1 && $moduloEjecucion="Factura POS"){
     102            $transaccion=sfConfig::get('app_idTransaccionFacturaPOSIVA');
     103            $modulo=sfConfig::get('app_idModuloFacturaPOSIVA');
     104            //Se trae de la configuracipon la url que se ha establecido para las interfaces contables
     105            $url=sfConfig::get('app_ipServidorInterfaz');
     106            //Se ingresa a la url el id del usuario que ejecuta
     107            $url =$url.$user;
     108            $url ="http://".$url;
     109            //Se setean los parametros para ejecución
     110            $parametros_post = 'fecha_ini='.$fechaEjecucion.'&fecha_fin='.$fechaEjecucion.'&id_cia='.$cia.'&id_modulo='.$modulo.'&id_transaccion='.$transaccion.'&id_movimiento_ejecutado='.$idMovimientoContable;
     111            //Se inicializa con la URL el cURL
     112            $sesion = curl_init($url);
     113            $logger->info("URL Llamado Solo Iva: ".$url);
     114            $logger->info("Parametros: ".$parametros_post);
     115            //Define el tipo de ejecución, en este caso POST
     116            curl_setopt ($sesion, CURLOPT_POST, true); 
     117            //Se ingresan los parametos estabelcidos
     118            curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
     119            //Parametros de retorno en cURL
     120            curl_setopt($sesion, CURLOPT_HEADER, false);
     121            curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
     122            curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
     123            curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
     124            //Ejecuta la petición
     125            $respuesta = curl_exec($sesion);
     126            //Se cierra la conexión
     127            curl_close($sesion);
     128        }
     129        //Retorna la respuesta que genero el cURL
     130        return($respuesta);
     131     }
     132}}}
     133
     134
     135== Llamada en ejecución de los módulos ==
     136
     137En 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.
     138
     139{{{
     140//INTERFACES CONTABLES - Código para ejecución Live de Interfaces Contables
     141                //Llama al método para ejecutar las interfaces contables desde el CN_TABLE
     142                //Se agrega la información para hacer el llamado a Interfaces Contables
     143                //Se setea la fecha de ejecución de la interfaz con la fecha del movimiento
     144                $fechaEjecucion=date($request['fecha_proceso']);
     145                $this->logMessage("Fecha Movimiento: ".$fechaEjecucion);
     146                //Captura del id del usuario - maeter
     147                $idUserName=$request['id_mae_ter'];
     148                $this->logMessage("Id Mater: ".$idUserName);
     149                //Id de la Compañía
     150                $idCia=sfConfig::get('app_idCiaInterfazContable');
     151                $this->logMessage("Configuracion Compañia: ".$idCia);
     152                //Tipo de movimiento a Evaluar
     153                $movimientoInventario=$request['mov_ejecutado'];
     154                $this->logMessage("Tipo de movimiento: ".$movimientoInventario);
     155                //Id del movimiento ejecutado:
     156                //MOdificación - Revisa si esta o no seteado el id del movimiento para procesar en bloque o individual
     157                if(isset($request['id_movimiento'])){
     158                    $idMovimientoContable=$request['id_movimiento'];
     159                }
     160                else{
     161                    $idMovimientoContable=0;
     162                }
     163                $this->logMessage("Id Movimiento: ".$idMovimientoContable);
     164                $this->logMessage("Llama a el método de Interfaces Contables");
     165                //Se hace el llamado al método de Interfaces Contables que se encuentra en CN_TABLE
     166                $respuestaInterfaz=CN_TABLE::callInterfazContableExecute($fechaEjecucion,$idUserName,$idCia,$movimientoInventario,$idMovimientoContable);
     167                //Transforma el JSON en array para capturar los datos
     168                $arrayRespuestaInterfaz= json_decode($respuestaInterfaz,true);
     169                //Verifica el status, si es diferente de 0, ocurrio un error al subir la interfaz y debe reportarlo
     170                if($arrayRespuestaInterfaz['response']['status']!=0){
     171                    $mensaje=$arrayRespuestaInterfaz['response']['data'];
     172                    $this->status = 3;
     173                    $a = $mensaje[0]['mensaje'];
     174                    $b = htmlspecialchars($a, ENT_QUOTES);
     175                    $this->mensajeError = $b;
     176                }
     177                else{
     178                    $this->logMessage("Ejecuta correctamente la interfaz contable");
     179                    $this->logMessage("Estatus de ejecución".$arrayRespuestaInterfaz['response']['status']);
     180                    $this->logMessage(print_r($arrayRespuestaInterfaz));
     181                }
     182                $this->list_data = array();
     183}}}
     184
     185
     186Con estos archivos se genera la llamada Live al servidor.
     187
     188
     189
     190
     191