<?php

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

    /**
     * Metodo del servicio list - consulta catalogo digitos
     *
     * @param sfWebRequest $request
     */
    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");
        }
        $this->logMessage("--------------------------------------------------");
        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
         */
        $id_tabla = 'null';
        $id_vigencia = 'null';
        $cen_op = 'null';

        $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 (tabla): " . $informe . " desde la funcionalidad: " . $comando . "'";


        $sql = '
SELECT *
FROM
(
SELECT digito||\'00000\' AS digitos, NOMBRE, NATURALEZA, \'\' AS USA_TERCERO, \'\' AS USA_AUXILIAR, \'\' AS USA_CEN_CTO,
 \'\' AS USA_SUB_CEN_CTO,
\'\' AS RETENCION,
0 AS ACTIVO,
0 AS CORRIENTE,
0 AS NO_CORRIENTE
FROM CN_CLASE_CUENTA
) UNION
(
SELECT cla.DIGITO||gru.DIGITO||\'0000\' AS digitos, \'__\'||gru.NOMBRE, \'\' AS NATURALEZA, \'\' AS USA_TERCERO, \'\' AS USA_AUXILIAR, \'\' AS USA_CEN_CTO,
 \'\' AS USA_SUB_CEN_CTO,
\'\' AS RETENCION,
0 AS ACTIVO,
0 AS CORRIENTE,
0 AS NO_CORRIENTE
FROM CN_GRUPO_CUENTA gru
JOIN CN_CLASE_CUENTA cla ON cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA
) UNION
(
SELECT cla.DIGITO||gru.DIGITO||may.DIGITOS||\'00\' AS digitos, \'____\'||may.NOMBRE, may.NATURALEZA, \'\' AS USA_TERCERO, \'\' AS USA_AUXILIAR, \'\' AS USA_CEN_CTO,
 \'\' AS USA_SUB_CEN_CTO,
\'\' AS RETENCION,
0 AS ACTIVO,
0 AS CORRIENTE,
0 AS NO_CORRIENTE
FROM CN_CUENTA_MAYOR may
JOIN CN_GRUPO_CUENTA gru ON may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
JOIN CN_CLASE_CUENTA cla ON cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA
) UNION
(
SELECT cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos, \'______\'||cat.NOMBRE, \'\' AS NATURALEZA, TO_CHAR(est.USA_TERCERO), TO_CHAR(est.USA_AUXILIAR), TO_CHAR(est.USA_CEN_CTO),
 TO_CHAR(est.USA_SUB_CEN_CTO),
\'\' AS RETENCION,
cat.ACTIVO,
cat.CORRIENTE,
CASE cat.CORRIENTE
 WHEN 0 THEN 1
 ELSE 0
END AS NO_CORRIENTE
FROM CN_CATALOGO cat
JOIN CN_CUENTA_MAYOR may ON cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR
JOIN CN_GRUPO_CUENTA gru ON may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
JOIN CN_CLASE_CUENTA cla ON cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA
JOIN CN_ESTADO_CATALOGO est ON est.ID_ESTADO_CATALOGO = cat.ID_ESTADO_CATALOGO
)
    ';

        //ejecuta el sql
        $records = CN_TABLE::executeSQL($sql);


        /*
         * 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, $cen_op, $id_cia, $id_mae_bd, $id_ope_bd, $id_mae_ter, $usuario, $comando, $observacion);

            //totales de filas y de consulta
            $this->logMessage('record_count = ' . count($records));
            //array de filas de consulta para uso del template
            $this->list_data = $records;
        } else {
            // Manejo de errores
            $this->list_data = array();
        }
    }

}
