<?php

/**
 * control_firma actions.
 *
 * @package    contab2
 * @subpackage control_firma
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class control_firmaActions extends sfActions {

    /**
     * Servicio list de control informes y firmas
     *
     * @param sfRequest $request A request object
     */
    public function executeList(sfWebRequest $request) {

//Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /*
         * variable de configuracion - app.yml
         */
        $ip = sfConfig::get('app_ip');

        /*
         * Variables globales
         */
        $modulo = sfConfig::get('app_modulo');
        $usuarioERP = sfConfig::get('app_usuarioERP');
        $claveERP = sfConfig::get('app_claveERP');
        $usuarioERPContab = sfConfig::get('app_usuarioERPContab');
        $claveERPContab = sfConfig::get('app_claveERPContab');

        /*
         * variables por defecto para el registro de log
         */
        $id_tabla = 'null';

//validar vigencia
        $id_vigencia = 'null';
        if (isset($request['id_vigencia'])) {
            $id_vigencia = $request['id_vigencia'];
        }

//validar centro de operacion
        $id_cen_op = 'null';
        if (isset($request['id_cen_op'])) {
            $id_cen_op = $request['id_cen_op'];
        }

        $id_cia = 'null';
        if (isset($request['id_cia'])) {
            $id_cia = $request['id_cia'];
        }

//id maestro tabla - para consulta informes no es necesario
        $id_mae_bd = 'null';

//1 - indica operacion de consulta
        $id_ope_bd = 1;

//id del maestro tercero
        $id_mae_ter = 1;
        if (isset($request['id_username'])) {
            $id_mae_ter = $request['id_username'];
        }
        $usuario = 'admin';
        if (isset($request['username'])) {
            if (!is_null($request['username']) && $request['username'] != '') {
                $usuario = $request['username'];
            }
        }
        $comando = 'sin comando';
        if (isset($request['comando'])) {
            $comando = $request['comando'];
        }

        /*
         * construir observacion
         */
        $informe = 'sin especificar';

//sentencia sql
        $sql = <<<EOD
select * from CREDENCIAL
where ID_MOD = $modulo
and comando = '$comando'
EOD;

//ejecuta y obtiene el resultado del sql
        $resultado = CN_TABLE::executeOCI_SQL_List($sql, $usuarioERP, $claveERP);

        if (count($resultado) > 0) {
            $informe = $resultado[0]['NOMBRE'];
        }

//observacion para el log
        $observacion = "'Se consulto informe: " . $informe . " desde la funcionalidad: " . $comando . "'";


        $records = array();

        /*
         * obtener variables del request
         */
//filtros obligatorios
        $cia = $request['id_cia'];

//obtener id firma
        $comando_informe = "cb_balgen"; //prueba
        if (isset($request["comando_informe"])) {
            $comando_informe = $request['comando_informe'];
        }

        /*
         * sql de firmas relacionadas informes
         */
        $sql = <<<EOD
SELECT
ID_FIRMA,
ID_CIA,
NOMBRE,
DOCUMENTO,
CARGO,
NUMERO,
ANEXO,
ACTIVO,
ORDEN,
'' AS RELACION
FROM CN_FIRMA
where ID_CIA = $cia
ORDER BY
orden 
EOD;

//ejecutar sql
        $records_elm = CN_TABLE::executeSQL($sql);


        foreach ($records_elm as $rec) {

//obtener id de la firma a eliminar
            $id_firma = $rec['id_firma'];


//sql para verificar si esta creada la relacion informe firma
            $sql = <<<EOD
select * from CN_INFORME_FIRMA
where ID_CIA = $cia
and COMANDO_INFORME = '$comando_informe'
and ID_FIRMA = $id_firma
EOD;

//ejecutar sql
            $re_val = CN_TABLE::executeSQL($sql);

//validar si hay relacion de infomre y firma
            if (count($re_val) > 0) {

//fila modificada, para actualizacion de grid en GWT
                $rec ["relacion"] = true;
                $rec ["comando_informe"] = $comando_informe;
            } else {

//fila modificada, para actualizacion de grid en GWT
                $rec ["relacion"] = false;
                $rec ["comando_informe"] = $comando_informe;
            }
            $records[] = $rec;
        }

        /*
         * Valida si se obtuvo valores en la consulta
         */
        if (count($records) > 0) {

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_vigencia, $id_cen_op, $id_cia, $id_mae_bd, $id_ope_bd, $id_mae_ter, $usuario, $comando, $observacion);


//array de filas de consulta para uso del template
            $this->list_data = $records;
        } else {
            $this->list_data = array();
        }
    }

    /**
     * Servicio list2(add) de consulta de control informes y firmas
     * base de datos websafiERP
     *
     * @param sfRequest $request A request object
     */
    public function executeAdd(sfWebRequest $request) {

//Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------+  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");


        /*
         * variables por defecto para el registro de log
         */
        $id_tabla = 'null';
        $id_vigencia = 'null';
        $id_cen_op = 'null';

        $id_cia = 'null';
        if (isset($request['id_cia'])) {
            $id_cia = $request['id_cia'];
        }

//obtener id maestro tabla
        $id_mae_bd = 'null';

//1 - indica operacion de consulta
        $id_ope_bd = 1;

//id del maestro tercero
        $id_mae_ter = 1;
        if (isset($request['id_username'])) {
            $id_mae_ter = $request['id_username'];
        }
        $usuario = 'admin';
        if (isset($request['username'])) {
            if (!is_null($request['username']) && $request['username'] != '') {
                $usuario = $request['username'];
            }
        }
        $comando = 'sin comando';
        if (isset($request['comando'])) {
            $comando = $request['comando'];
        }
//construir observacion
        $observacion = "'Se consulto tabla: CREDENCIAL de websafiERP desde la funcionalidad: " . $comando . "'";


        /*
         * obtener variables del request
         */
//filtros obligatorios
        $cia = $request['id_cia'];


        /*
         * conexion a base de datos websafiERP
         */
        $records = array();

        /*
         * variable de configuracion - app.yml
         */
        $ip = sfConfig::get('app_ip');

        /*
         * Variables globales
         */
        $modulo = sfConfig::get('app_modulo');
        $usuarioERP = sfConfig::get('app_usuarioERP');
        $claveERP = sfConfig::get('app_claveERP');
        $usuarioERPContab = sfConfig::get('app_usuarioERPContab');
        $claveERPContab = sfConfig::get('app_claveERPContab');


//connexion a la base de datos
        $conn = oci_connect($usuarioERP, $claveERP, $ip); //se debe verificar cambio de ip para uso fuera de la red interna
        /*
         * consulta sql a ejecutar
         * obtiene los informes de la base de datos de  websafiERP
         * para contabilidad
         */
//propietario 414 para no traer los de administracion
//and PROPIETARIO <> 414
        $sql_banco = <<<EOD
select * from CREDENCIAL
where ID_MOD = $modulo
and ID_TIPO = 2
order by
NOMBRE 
EOD;

        /*
          ID_TIPO,
          PROPIETARIO,
          ORDEN,
         */

//ejecutar sql para la connexion
        $stid = oci_parse($conn, $sql_banco);
        $exec = oci_execute($stid);
//        $i = 1;
//recorrer la salida(filas) y guardar totdos en un solo array
        while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
//ID_BN en websafi TESORERIA
//                echo $id_ts_bn= $row['username'];
//            echo $row . "-" . $i++;
//            foreach ($row as $key => $value) {
//                echo $key . "-" . $value;
//            }
            $records[] = $row;
        }
//cerrar conexion
        oci_close($conn);


        /*
         * Valida si se obtuvo valores en la consulta
         */
        if (count($records) > 0) {

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_vigencia, $id_cen_op, $id_cia, $id_mae_bd, $id_ope_bd, $id_mae_ter, $usuario, $comando, $observacion);


//array de filas de consulta para uso del template
            $this->list_data = $records;
        } else {
            $this->list_data = array();
        }
    }

    /**
     * Servicio update de control informes y firmas
     *
     * @param sfRequest $request A request object
     */
    public function executeUpdate(sfWebRequest $request) {

//Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------+  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");



        /*
         * Variables globales
         */
        $modulo = sfConfig::get('app_modulo');
        $usuarioERP = sfConfig::get('app_usuarioERP');
        $claveERP = sfConfig::get('app_claveERP');
        $usuarioERPContab = sfConfig::get('app_usuarioERPContab');
        $claveERPContab = sfConfig::get('app_claveERPContab');


        /*
         * variables por defecto para el registro de log
         */
//obtiene el valor para su identificador unico
        $id_tabla = 'null';

//validar vigencia
        $id_vigencia = 'null';

//validar centro de operacion
        $id_cen_op = 'null';

//valida si posee compañia
        $id_cia = 'null';
        if (isset($request['id_cia'])) {
            $id_cia = $request['id_cia'];
        }

//obtener id maestro tabla
        $id_mae_bd = CN_TABLE::consultarIdTablaBD('CN_INFORME_FIRMA');

//1 - por defecto - list
        $id_ope_bd = 1;

//id del maestro tercero
        $id_mae_ter = 1;
        if (isset($request['id_username'])) {
            $id_mae_ter = $request['id_username'];
        }
//el username desde qebsafiERP
        $usuario = 'admin';
        if (isset($request['username']) && $request['username'] != '') {
            $usuario = $request['username'];
        }
//comando que identifica la funcionalidad
        $comando = 'sin comando';
        if (isset($request['comando'])) {
            $comando = $request['comando'];
        }

        /*
         * Construir observacion
         */
        $observacion = 'null';


        /*
         * obtener variables del request
         */
//filtros obligatorios
        $cia = $request['id_cia'];

//obtener id firma
        $id_firma = "12"; //prueba
        if (isset($request["id_firma"])) {
            $id_firma = $request['id_firma'];
        }

//obtener id firma
        $comando_informe = "cb_balgen"; //prueba
        if (isset($request["comando_informe"])) {
            $comando_informe = $request['comando_informe'];
        }


        /*
         * metodo para control de firmas e informes
         */
        $records = array();

//sql para verificar si esta creada la relacion informe firma
        $sql = <<<EOD
select * from CN_INFORME_FIRMA
where ID_CIA = $cia
and COMANDO_INFORME = '$comando_informe'
and ID_FIRMA = $id_firma
EOD;

//ejecutar sql
        $rec = CN_TABLE::executeSQL($sql);

//validar si hay relacion de infomre y firma
        if (count($rec) > 0) {

//obtener id del informe_firma a eliminar
            $id_informe_firma = $rec[0]['id_informe_firma'];

//sql para eliminar si esta creada la relacion informe firma
            $sql = <<<EOD
DELETE FROM CN_INFORME_FIRMA WHERE ID_INFORME_FIRMA = $id_informe_firma
EOD;

//ejecutar sql
            CN_TABLE::executeSQL($sql);

//obtener por id firma los datos del representante
            $sql = <<<EOD
select * from CN_FIRMA WHERE ID_FIRMA = $id_firma
EOD;

//ejecutar sql
            $records = CN_TABLE::executeSQL($sql);

//fila modificada, para actualizacion de grid en GWT
            $records [0]["relacion"] = false;
            $records [0]["comando_informe"] = $comando_informe;



            /*
             * Manejo de log
             */
//obtiene el valor para su identificador unico
            $id_tabla = $id_informe_firma;

//4 - indica operacion de eliminacion de registro
            $id_ope_bd = 4;

            $observacion = "'Se elimino el registro de id_informe_firma: " . $id_tabla . " desde la funcionalidad: " . $comando . "'";
        } else {

            /*
             *  insertar nueva relacion informe y firma
             */
//  ID_INFORME_FIRMA     ID_CIA     COMANDO_INFORME     ID_FIRMA
            $sql = <<<EOD
INSERT INTO CN_INFORME_FIRMA VALUES ( 0, $cia, '$comando_informe', $id_firma )
EOD;

//ejecutar sql
            CN_TABLE::executeSQL($sql);

//obtener por id firma los datos del representante
            $sql = <<<EOD
select * from CN_FIRMA WHERE ID_FIRMA = $id_firma
EOD;

//ejecutar sql
            $records = CN_TABLE::executeSQL($sql);

//fila modificada, para actualizacion de grid en GWT
            $records [0]["relacion"] = true;
            $records [0]["comando_informe"] = $comando_informe;


            /*
             * Manejo de log
             */

//2 - indica operacion de creacion de registro
            $id_ope_bd = 2;


//sentencia sql
            $sql2 = <<<EOD
SELECT (nvl(MAX(ID_INFORME_FIRMA),0)) as id_informe_firma
FROM CN_INFORME_FIRMA
WHERE ID_CIA = $cia
EOD;


            //ejecutar sql
            $records2 = CN_TABLE::executeOCI_SQL_List($sql2, $usuarioERPContab, $claveERPContab);
            

            //obtiene el valor para su identificador unico
            $id_tabla = $records2[0]['ID_INFORME_FIRMA'];

            $observacion = "'Se creo el registro de id_informe_firma: " . $id_tabla . " desde la funcionalidad: " . $comando . "'";
        }


        /*
         * Valida si se obtuvo valores en la consulta
         */
        if (count($records) > 0) {

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_vigencia, $id_cen_op, $id_cia, $id_mae_bd, $id_ope_bd, $id_mae_ter, $usuario, $comando, $observacion);

            //array de filas de consulta para uso del template
            $this->list_data = $records;
        } else {
            $this->list_data = array();
        }
    }

}

