<?php

/**
 * com_plan_program_comis actions.
 *
 * @package    controlComisiones
 * @subpackage com_plan_program_comis
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class com_plan_program_comisActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'COM_PLAN_PROGRAM_COMIS_V',
        'COM_PLAN_COMISIONES_V',
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'COM_PLAN_COMISIONES_V' =>
        array(
            'id_plan_comisiones' => 'COM_PLAN_PROGRAM_COMIS_V',
            'vigencia' => 'COM_PLAN_PROGRAM_COMIS_V'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'COM_PLAN_PROGRAM_COMIS_V' =>
        array(
            'id_plan_comisiones' => 'id_plan_comisiones',
            'vigencia' => 'vigencia',
            'id_comisiones' => 'id_comisiones',
            'vigencia_comisiones' => 'vigencia_comisiones',
            'fecha_log' => 'fecha_log',
            'usuario_log' => 'usuario_log',
            'cdp' => 'cdp',
            'vigencia_cdp' => 'vigencia_cdp',
            'cdp,||, - ,||,vigencia_cdp' => 'completo_cdp',
            'estado_general' => 'estado_general',
            'desc_estado_general' => 'desc_estado_general',
            'fecha_estado_general' => 'fecha_estado_general',
        ),
        'COM_PLAN_COMISIONES_V' =>
        array(
            'id_area' => 'id_area',
            'tipcomi' => 'tipcomi',
            'id_proyectos' => 'id_proyectos',
            'fecha' => 'fecha',
            'objetivo' => 'objetivo',
            'actividad' => 'actividad',
            'observaciones' => 'observaciones',
            'fecha_log' => 'fecha_log_planea',
            'usuario_log' => 'usuario_log_planea',
            'justificacion' => 'justificacion',
            'interrupcion' => 'interrupcion',
            'id_original' => 'id_original',
            'vobo' => 'vobo',
            'estado' => 'estado',
            'fecha_estado' => 'fecha_estado',
            'id_usuario_estado' => 'id_usuario_estado',
            'observaciones_estado' => 'observaciones_estado',
            'nivel_rechazo' => 'nivel_rechazo',
            'firmado' => 'firmado',
            'fecha_firmado' => 'fecha_firmado',
            'id_usuario_firmado' => 'id_usuario_firmado',
            'autorizado' => 'autorizado',
            'fecha_autorizado' => 'fecha_autorizado',
            'id_usuario_autorizado' => 'id_usuario_autorizado',
            'observacion_aut' => 'observacion_aut',
            'fecha_salida' => 'fecha_salida',
            'fecha_regreso' => 'fecha_regreso',
            'cod_area' => 'cod_area',
            'area' => 'area',
            'sigla' => 'sigla',
            'descomi' => 'descomi',
            'observ' => 'observ',
            'dcomi' => 'dcomi',
            'ano_fiscal' => 'ano_fiscal',
            'cod_proyecto' => 'cod_proyecto',
            'proyecto' => 'proyecto',
            //'estado_general' => 'estado_general',
            //'desc_estado_general' => 'desc_estado_general',
            //'fecha_estado_general' => 'fecha_estado_general',
            'usuario_estado_general' => 'usuario_estado_general',
            'obs_estado_general' => 'obs_estado_general',
            'num_doc_terlog' => 'num_doc_terlog',
            'razon_soc_terlog' => 'razon_soc_terlog',
            'num_doc_tersup' => 'num_doc_tersup',
            'razon_soc_tersup' => 'razon_soc_tersup',
            'correo' => 'correo',
            'correo_tersup' => 'correo_tersup',
            'num_doc_terest' => 'num_doc_terest',
            'razon_soc_terest' => 'razon_soc_terest',
            'num_doc_terfir' => 'num_doc_terfir',
            'razon_soc_terfir' => 'razon_soc_terfir',
            'num_doc_teraut' => 'num_doc_teraut',
            'razon_soc_teraut' => 'razon_soc_teraut',
            'nitocc' => 'nitocc',
            'codobj' => 'codobj',
            'valor' => 'valor',
            'valor_gasto' => 'valor_gasto',
            'viaticos' => 'viaticos',
            'acumulado_gastos' => 'acumulado_gastos',
            'taxis' => 'taxis',
            'tarifa' => 'tarifa',
            'cod_proyecto,||, - ,||,proyecto' => 'completo_proyecto',
            'num_doc_tersup,||, - ,||,razon_soc_tersup' => 'completo_supervisor',
            'num_doc_terlog,||, - ,||,razon_soc_terlog' => 'completo_programador'
        )
    ); //por cada tabla especificar los campos del select

    /*
     * OPCIONES DE FILTRO:
     *
     * LIKEALLPLUS- busqueda comparativa de la cadena dividida por los espacios en blanco en cualquier posición
     * LIKEALL - busqueda comparativa de la cadena en cualquier posición
     * LIKE - busqueda en la cadena que inicie por la variable de filtro
     *
     * _filtroNull / para filtro de not null o null - type debe ser is - para todas las variables
     * TYPE NULL / para filtro de not null o null con el valor de campo desde gwt
     * EJEMPLO: 'titular' => array('NULL' => array('titular')),
     *
     * rownum,start - rownum,end / estos campos para uso del Grid live GWT, numero fijo de filas de consulta
     */
    protected $table_field_conditions = array(
        'COM_PLAN_PROGRAM_COMIS_V' => array(
            'id_plan_comisiones,a' => array('!=' => array(-1)),
            'id_plan_comisiones,b' => array('=' => array('id_plan_comisiones')),
            'vigencia' => array('=' => array('vigencia')),
            'id_comisiones' => array('=' => array('id_comisiones')),
            'vigencia_comisiones' => array('=' => array('vigencia_comisiones')),
            'fecha_log' => array('BETWEENFECHA' => array('fecha_ini', 'fecha_fin')),
            'usuario_log' => array('=' => array('usuario_log')),
            'cdp' => array('=' => array('cdp')),
            'vigencia_cdp' => array('=' => array('vigencia_cdp')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        ),
        'COM_PLAN_COMISIONES_V' => array(
            'id_plan_comisiones,a' => array('!=' => array(-1)),
            'id_area' => array('=' => array('id_area')),
            'tipcomi' => array('=' => array('tipcomi')),
            'id_proyectos' => array('=' => array('id_proyectos')),
            'interrupcion' => array('=' => array('interrupcion')),
            'vobo' => array('=' => array('vobo')),
            'estado' => array('=' => array('estado')),
            'nivel_rechazo' => array('=' => array('nivel_rechazo')),
            'firmado' => array('=' => array('firmado')),
            'autorizado' => array('=' => array('autorizado')),
            'estado_general' => array('IN' => array('estado_general'))
        )
    ); //por cada tabla se dan los campos, opcion de filtro y variable que entra para los posibles filtros
    protected $table_field_or_conditions = array(
    ); // filtros de condicion or
//    protected $query_qualifier = 'DISTINCT'; //Variable para el sql para eliminar filas repetidas
    protected $fields_orderBy = array(
        'vigencia', 'id_plan_comisiones', 'vigencia_comisiones', 'id_comisiones', 'cdp'
    ); //campos para el ordenamiento de la consulta
//    protected $table_field_obligatory = array('id_debito'); //campos obligatorios de filtro - estan en el request

    /*
     * Variables manejo de log
     */
    //true - consulta de administracion
    protected $is_admin = true;
    //si es servicio para filtro agregar campo
//    protected $filtro = 'Area';
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;

    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_plan_comisiones'; //identificador unico de la tabla
    //false - Registrar log para list - consultar
    protected $log_list = false;
    //false - Registrar log para add - update - remove
    protected $log_crud = false;

    /**
     * Construccion de observacion perzonalizada
     * 
     * Toda variable para tomarla del request con el formato:
     * &request-variable&
     * 
     * false - observacion por defecto
     *
     * @var string 
     */
    protected $observacion_list = false;
    protected $observacion_add = false;
    protected $observacion_update = false;
    protected $observacion_remove = false;

    // Validate
    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Add
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateAdd(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Update
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateUpdate(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         * Variables request
         */
//        $id_tipo_doc = $request['id_tipo_doc'];
//        $num_doc = $request['num_doc'];
//        $id_clase_fondo = $request['id_clase_fondo'];

        /*
         *  Validar la operación, ya sea por SQL
         */
//        $sql = <<<EOD
//select * 
//from no_afilia_fondo
//where
//id_tipo_doc = $id_tipo_doc
//and num_doc = '$num_doc'
//and id_clase_fondo = $id_clase_fondo 
//EOD;
//        $records = CN_TABLE::executeSQL($sql);
        /*
         *  Generar errores en $errors
         */
//        if (count($records) > 0) {
//            $errors['mensaje'] = "Ya posee un registro de fondo, para la clase de fondo selecionado.";
//            $errors['servicio'] = "afilia_fondo";
//        }

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Remove
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateRemove(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Acciones anteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    protected function preprocessRequest($Action, sfWebRequest $request) {

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a preprocessRequest");

        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            $request['fecha_log'] = CN_TABLE::fechaSistema();
            $request['usuario_log'] = $request['id_username'];
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    /**
     * Acciones posteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    protected function postprocessRequest($Action, sfWebRequest $request, $list_data_post) {

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a postprocessRequest - " . $list_data_post);

        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    /**
     * Crea la comision segun planeacion y comisionados seleccionados  - 20181113
     * @param sfWebRequest $request
     */
    public function executeAdd(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---function executeUpdate");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;
        $response = array();
        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");

        $records = array();

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

            /**
             * Variables globales
             */
            $id_plan_comisiones = $request['id_plan_comisiones'];
            $id_vigencia = $request['vigencia'];
            $cdp = $request['cdp'];
            $vigencia_cdp = $request['vigencia_cdp'];
            $texto_comisionados_placom = $request['texto_comisionados_placom'];


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

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

            /**
              1	CONSULTAR
              2	ACTUALIZAR
              3	ADICIONAR
              4	ELIMINAR
              5	ANULAR
             */
            $id_ope_bd = 2;

            //id del maestro tercero
            $id_mae_ter = 1;
            if (isset($request['id_username'])) {
                $id_mae_ter = $request['id_username'];
            }

            //username
            $username = 'admin';
            if (isset($request['username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $username = $request['username'];
                }
            }
            //usuario
            $usuario = '0';
            if (isset($request['id_username'])) {
                if (!is_null($request['id_username']) && $request['id_username'] != '') {
                    $usuario = $request['id_username'];
                }
            }

            //comando de la funcionalidad
            $comando = 'sin comando';
            if (isset($request['comando'])) {
                $comando = $request['comando'];
            }

            //construir observacion
            $observacion_log = "'Se intenta crear registro de programacion de comisiones desde la funcionalidad: " . $comando . "'";
            $subject = "";

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);

            $id_username = $request['id_username'];
            $fecha_sistema = CN_TABLE::fechaSistema();

            /*
             * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
             */
            $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

            $int = 0;
            foreach ($array as $routeName => $routeData) {
                //echo $routeName . "\n";
                if ('entidad_cliente' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadCliente = $value;
                        }
                    }
                }
                if ('entidad_nombre' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadNombre = $value;
                        }
                    }
                }
                if ('correoEnvio' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $correoEnvio = $value;
                        }
                    }
                }
                $int++;
            }
            
            //Validamos que el CDP tenga disponivilidad
            //Sql
            $sql = <<<EOD
select tab0.valor, nvl(cdp.SALDO,0) as saldo_cdp,nvl(cdp.SALDO,0)-tab0.valor as saldo_post_comis,cdp.CDP
from
(select sum(planobj.valor) as valor,id_plan_comisiones,planobj.vigencia
from com_plan_comisionados_objs_v planobj
where
planobj.id_plan_comisiones = $id_plan_comisiones
and planobj.vigencia = $id_vigencia     
and planobj.nitocc in ($texto_comisionados_placom) 
group by planobj.id_plan_comisiones,planobj.vigencia
)tab0
left join com_plan_comisiones pl on pl.ID_PLAN_COMISIONES=tab0.ID_PLAN_COMISIONES and pl.VIGENCIA = tab0.VIGENCIA
left join PROYECTOS pro on pro.ID=pl.ID_PROYECTOS
left join (select cdp,sum(saldo) as saldo from pr_cdps_v group by cdp) cdp on cdp.CDP = pro.ID_CDP_GLOBAL
EOD;
            //Ejecutar SQL
            $records = CN_TABLE::executeSQL($sql);
            $saldo_cdp = $records[0]['saldo_post_comis'];
            //$cdp_valida = $records[0]['cdp'];
            if($saldo_cdp<0){
                throw new Exception("El CDP $cdp ,no cuenta con saldo suficiente.");
            }else{
            //Obtener secuencia de comisiones
            $id_comisiones = 1;
            $vigencia_comisiones = date('Y'); //anho completo cuatro digitos
            //Sql
            $sql = <<<EOD
SELECT
consecutivo_comision as id_comisiones
FROM consecutivos 
where vigencia = $vigencia_comisiones 
EOD;
            //Ejecutar SQL
            $records_sec = CN_TABLE::executeSQL($sql);

            if (count($records_sec) > 0) {

                $id_comisiones = $records_sec[0]['id_comisiones'];

                //Actualizamos secuencia de comisiones 
                $sql = <<<EOD
update consecutivos 
set consecutivo_comision = $id_comisiones + 1
where vigencia = $vigencia_comisiones 
EOD;
                //Ejecutar SQL
                $this->conn->execute($sql);
            } else {

                //Crea secuencia de comisiones 
                $sql = <<<EOD
insert into CONSECUTIVOS (ID,CONSECUTIVO_COMISION,VIGENCIA)
values ( (SELECT max(id)+1 FROM CONSECUTIVOS) ,$id_comisiones+1,$vigencia_comisiones)
EOD;
                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //Creo registro tabla COMISIONES
            $sql = <<<EOD
insert into comisiones
(ID,
CODARE,
TIPCOMI,
CODPRO,
FECHA,
OBJETIVO,
ACTIVIDAD,
OBSERVA,
CREATED_AT,
UPDATE_AT,
USERNAME,
ESTADO,
ACTIVO,
VIGENCIA,
JUSTIFICACION,
INTERRUPCION,
ID_ORIGINAL,
DESTINOS_ADD,
FECHA_LOG,
VOBO,
MARCA_AUTOMATICO)
   
select
$id_comisiones as id,
placom.cod_area as codare,
placom.tipcomi as tipcomi,
placom.cod_proyecto as codpro,
trunc(sysdate) as fecha,
placom.objetivo as objetivo,
placom.actividad as actividad,
placom.observaciones as observa,
trunc(sysdate) as created_at,
null as update_at,
(SELECT
    max(us.id)
FROM usuarios us where us.nitocc = placom.num_doc_terlog) as username,
1 as estado,
1 as activo,
$vigencia_comisiones as vigencia,
null as justificacion,
case when placom.interrupcion = 1 then 1 else null end as interrupcion,
placom.id_original as id_original,
null as destinos_add,
sysdate as fecha_log,
placom.vobo as vobo,
1 as marca_automatico
   
from com_plan_comisiones_v placom

where
placom.id_plan_comisiones = $id_plan_comisiones
and placom.vigencia = $id_vigencia 
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear destinos de comision
            $sql = <<<EOD
Insert into destinos 
(CODMUN,
ID_COMISION,
ORDEN,
ESTADO,
OBSERVACION,
VIGENCIA,
CODDEPTO)
   
select
plades.codmun as codmun,
$id_comisiones as id_comision,
plades.orden as orden,
plades.estado as estado,
plades.observaciones as observacion,
$vigencia_comisiones as vigencia,
plades.id_depto as coddepto

from com_plan_destinos plades

where
plades.id_plan_comisiones = $id_plan_comisiones
and plades.vigencia = $id_vigencia   
and plades.estado = 1     
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear comisionados planta Tipter-02
            $sql = <<<EOD
Insert into comisionados_planta  
(ID_COMISION,
NITOCC,
ID_TRANSPORTE,
SUELDO,
CARGO,
FECHA_SALIDA,
DIAS,
CODREG,
TOTAL_COMISION,
ESTADO,
FECHA_REGRESO,
VIGENCIA,
GASTOS_TAXIS,
DIAS_MANU,
HORA_SALIDA,
HORA_REGRESO,
LIQUIDAR_VIA)
   
select
$id_comisiones as id_comision,
placomis.nitocc as nitocc,
placomis.id_transporte as id_transporte,
placomis.sueldo as sueldo,
placomis.cargo as cargo,
placomis.fecha_salida as fecha_salida,
placomis.dias as dias,
placomis.codreg as codreg,
placomis.valor as total_comision,
placomis.estado as estado,
placomis.fecha_regreso as fecha_regreso,
$vigencia_comisiones as vigencia,
placomis.taxis as gastos_taxis,
placomis.dias_manu as dias_manu,
placomis.hora_salida,
placomis.hora_regreso,
placomis.liquidar_via

from com_plan_comisionados_placom_v placomis

where
placomis.id_plan_comisiones = $id_plan_comisiones
and placomis.vigencia = $id_vigencia  
and placomis.tipter = '02'       
and placomis.estado = 1         
and placomis.nitocc in ($texto_comisionados_placom)     
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear comisionados contrato Tipter-01
            $sql = <<<EOD
Insert into comisionados_contrato 
(ID_COMISION,
NITOCC,
ID_TRANSPORTE,
SUELDO,
CARGO,
FECHA_SALIDA,
DIAS,
CODREG,
TOTAL_COMISION,
ESTADO,
FECHA_REGRESO,
VIGENCIA,
GASTOS_TAXIS,
DIAS_MANU,
HORA_SALIDA,
HORA_REGRESO,
LIQUIDAR_VIA)
   
select
$id_comisiones as id_comision,
placomis.nitocc as nitocc,
placomis.id_transporte as id_transporte,
placomis.sueldo as sueldo,
placomis.cargo as cargo,
placomis.fecha_salida as fecha_salida,
placomis.dias as dias,
placomis.codreg as codreg,
placomis.valor as total_comision,
placomis.estado as estado,
placomis.fecha_regreso as fecha_regreso,
$vigencia_comisiones as vigencia,
placomis.taxis as gastos_taxis,
placomis.dias_manu as dias_manu,
placomis.hora_salida,
placomis.hora_regreso,
placomis.liquidar_via

from com_plan_comisionados_placom_v placomis

where
placomis.id_plan_comisiones = $id_plan_comisiones
and placomis.vigencia = $id_vigencia  
and placomis.tipter = '01'       
and placomis.estado = 1  
and placomis.nitocc in ($texto_comisionados_placom)   
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear objetos de gasto
            //Campos nuevos de tarifa tiquete y dias - 20190904
            $sql = <<<EOD
Insert into comisionados_objs 
(NITOCC,
CODOBJ,
ID_COMISION,
VALOR,
ESTADO,
VIGENCIA,
OBSERVA,
VIATICOS,
TAXIS,
TARIFA,
ID_OBJ_GASTO,
TARIFA_TIQUETE,
CANT_DIA_SAL,
CANT_DIA_REG)
   
select
planobj.nitocc as nitocc,
planobj.codobj as codobj,
$id_comisiones as id_comision,
planobj.valor as valor,
planobj.estado as estado,
$vigencia_comisiones as vigencia,
planobj.observaciones as observa,
planobj.viaticos as viaticos,
planobj.taxis as taxis,
planobj.tarifa as tarifa,
planobj.id_obj_gasto,
planobj.tarifa_tiquete,
planobj.cant_dia_sal,
planobj.cant_dia_reg                   

from com_plan_comisionados_objs_v planobj

where
planobj.id_plan_comisiones = $id_plan_comisiones
and planobj.vigencia = $id_vigencia  
and planobj.estado = 1    
and planobj.nitocc in ($texto_comisionados_placom)    
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear destinos de comisionados
            $sql = <<<EOD
Insert into destinos_comisionados
(NITOCC,
ID_COMISION,
CODMUN,
ORDEN,
ESTADO,
VIGENCIA,
ID_TRANSPORTE)
   
select
plandescom.nitocc as nitocc,
$id_comisiones as id_comision,
plandescom.codmun as codmun,
plandescom.orden as orden,
plandescom.estado as estado,
$vigencia_comisiones as vigencia,
plandescom.id_transporte as id_transporte

from com_plan_destinos_comisiona_v plandescom

where
plandescom.id_plan_comisiones = $id_plan_comisiones
and plandescom.vigencia = $id_vigencia  
and plandescom.estado = 1  
and plandescom.nitocc in ($texto_comisionados_placom)      
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //Crear tarifas de comisionados
            $sql = <<<EOD
Insert into tarifas_destino
(NITOCC,
ID_COMISION,
VIGENCIA,
ID_TARIFA,
NUM_VIAJES,
TOTAL,
CODMUN,
ID_TRANSPORTE,
PLACA_VEHICULO,
TIPO_VEHICULO,
RECORRIDO_VEHICULO,
DISTANCIA) 
    
select
plantardes.nitocc as nitocc,
$id_comisiones as id_comision,
$vigencia_comisiones as vigencia,
plantardes.id_tarifa as id_tarifa,
plantardes.num_viajes as num_viajes,
plantardes.total as total,
plantardes.codmun as codmun,
plantardes.id_transporte as id_transporte,
plantardes.placa_vehiculo,
plantardes.tipo_vehiculo,
plantardes.recorrido_vehiculo,
plantardes.distancia    

from com_plan_tarifas_destino_v plantardes

where
plantardes.id_plan_comisiones = $id_plan_comisiones
and plantardes.vigencia = $id_vigencia  
and plantardes.nitocc in ($texto_comisionados_placom) 
and plantardes.id_tarifa is not null
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);
            
            
            //Creo registro tabla COM_PLAN_PROGRAM_COMIS
            $sql = <<<EOD
Insert into COM_PLAN_PROGRAM_COMIS (ID_PLAN_COMISIONES,VIGENCIA,ID_COMISIONES,VIGENCIA_COMISIONES,
    FECHA_LOG,USUARIO_LOG,CDP,VIGENCIA_CDP) 
values ('$id_plan_comisiones','$id_vigencia','$id_comisiones','$vigencia_comisiones',
    trunc(sysdate),'$id_username','$cdp','$vigencia_cdp')
EOD;
            //Ejecutar SQL
            $this->conn->execute($sql);

            //construir observacion
            $observacion_log = "'Se crear registro de programacion de comisiones desde la funcionalidad: " . $comando . "'";
            $id_tabla = $id_comisiones;
            $id_ope_bd = 3;

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);


            $this->conn->commit();
            $this->status = 0;
            $this->list_data = $response;
            $this->logMessage("[com_plan_program_comis] Exitoso");
            }
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();

            $this->status = 1;
            $this->mensajeError = "[com_plan_program_comis] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[com_plan_program_comis] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

}
