/** * Actualizar Etapa de Oportunidad * * @param string $id_cliente * @return boolean */ function ajax_actualizar_oportunidad($id_oportunidad = NULL) { $id_oportunidad = $this->input->post('id_oportunidad', true); $id_etapa = $this->input->post('id_etapa', true); //Si el $fieldset es vacio if (empty($id_oportunidad) || empty($id_etapa)) { return false; } // // Begin Transaction // docs: https://ellislab.com/codeigniter/user-guide/database/transactions.html // $this->db->trans_start(); $fieldset = array("id_etapa_venta" => $id_etapa); $clause = array("uuid_oportunidad = UNHEX('{$id_oportunidad}')" => NULL); //Actualizar Cliente Potencial $this->db->where($clause)->update('opp_oportunidades', $fieldset); //----------------- // Verificar si la etapa fue actualiza a Vendido //----------------- $fields = array("ocat.valor AS etapa_venta", "HEX(opp.uuid_propiedad) AS uuid_propiedad"); $clause = array("opp.uuid_oportunidad = UNHEX('{$id_oportunidad}')" => NULL); $checkEtapa = $this->db->select($fields)->distinct()->from('opp_oportunidades AS opp')->join('opp_oportunidades_cat AS ocat', 'ocat.id_cat = opp.id_etapa_venta', 'LEFT')->where($clause)->get()->result_array(); //----------------- // Obtener los Estados de las Propiedades //----------------- $listaEstadosPropiedades = $this->db->select("id_cat AS id_estado_propiedad")->distinct()->from('rpo_propiedades_cat')->where("valor", "no_disponible")->get()->result_array(); //verificar si la etapa fue actualiza a Vendido //si es vendido, cambiar la propiedad a No Disponible. if (!empty($checkEtapa) && !empty($checkEtapa[0]["etapa_venta"]) && $checkEtapa[0]["etapa_venta"] == "vendido") { //Actualizar Propiedad $fieldset = array("id_estado_propiedad" => $listaEstadosPropiedades[0]["id_estado_propiedad"]); $clause = array("uuid_propiedad = UNHEX('" . $checkEtapa[0]["uuid_propiedad"] . "')" => NULL); $this->db->where($clause)->update('rpo_propiedades', $fieldset); } //--------------------------------------- //End Transaction $this->db->trans_complete(); //redis if ($this->is_redis_as_runnig && ($checkEtapa[0]["etapa_venta"] != "vendido" && $checkEtapa[0]["etapa_venta"] != "venta_perdida")) { //verifica si el redis esta corriendo //armar datos $creado_por = CRM_Controller::$uuid_usuario; $datosOportunidad = $this->db->query("Select id_oportunidad, nombre, fecha_creacion,HEX(id_asignado) as id_asignado from opp_oportunidades where HEX(uuid_oportunidad) = '" . $id_oportunidad . "' ")->row_array(); $datos_notificaciones = array(); $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'oportunidad_actualizar_etapa', 'etapa' => $checkEtapa[0]["etapa_venta"]); $datos_notificaciones['data'] = json_encode($data_notificacion); $uuid_asignado = $datosOportunidad['id_asignado']; $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por); $args = array('id' => $notificacion['id']); //$this->redis->publish('oportunidad',json_encode(array('id_asignado' =>$uuid_asignado, 'id_notificacion' => $notificacion['id'] ))); $schedules = Jobs::mostrar_jobs(array('id_job' => 2)); if (!empty($schedules)) { foreach ($schedules as $schedule) { $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia'])); $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama')); $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'fecha_oportunidad' => $datosOportunidad['fecha_creacion'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia'])); $schedule_usuarios = json_decode($schedule['uuid_usuarios']); if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) { ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $args); } else { ResqueScheduler::enqueueAt($datetime, 'notificacion' . time(), 'Notificaciones', $args); } } } } // Managing Errors if ($this->db->trans_status() === FALSE) { log_message("error", "MODULO: Oportunidades --> No se pudo actualizar la etapa de la oportunidad en DB."); return array("respuesta" => false, "mensaje" => "Hubo un error al tratar de actualizar la etapa de la oportunidad."); } else { //Limpiar cache @CRM_Controller::$cache->delete("infoOportunidad"); @CRM_Controller::$cache->delete("listado_oportunidades"); return array("respuesta" => true, "mensaje" => "Se ha cambiado la etapa de la oportunidad satisfactoriamente."); } }
/** * Guardar Formulario de Cliente Juridico * * @return boolean */ function guardar_actividad() { if (Util::is_array_empty($_POST)) { return false; } //Init Fieldset variable $fieldset = array(); //Remover el boton de submit que por default //viene con el valor "Guardar" unset($_POST["campo"]["guardar"]); $modulo_relacionado_con = $this->seleccionar_modulos_relacionado_con(array('valor' => $_POST['campo']['modulo_relacion'])); if (!isset($_POST["campo"]["uuid_cliente"])) { $uuid_cliente = $this->seleccionar_cliente_de_oportunidad($_POST["campo"]["uuid_oportunidad"]); //$uuid_cliente= $uuid_cliente[0]['uuid_cliente']; $fieldset["uuid_cliente"] = $uuid_cliente[0]['uuid_cliente']; } unset($_POST["campo"]["modulo_relacion"]); //Recorrer arreglo e insertar los valores que no estan vacios //en el fieldset foreach ($_POST["campo"] as $fieldname => $fieldvalue) { if (empty($fieldvalue)) { continue; } //check if is an array if (is_array($fieldvalue)) { foreach ($fieldvalue as $name => $value) { if ($value != "") { if (strpos($name, 'uuid_') !== false) { $fieldset["{$name} = UNHEX('{$value}')"] = NULL; } else { $fieldset[$name] = $this->security->xss_clean($value); } } } } else { if (strpos($fieldname, 'uuid_') !== false) { $this->db->set($fieldname, "UNHEX('{$fieldvalue}')", FALSE); } else { $fieldset[$fieldname] = $fieldvalue; } } } if (isset($_POST['campo']['completada'])) { if ($_POST['campo']['completada'] != 0 || $_POST['campo']['completada'] == "") { $fieldset["completada"] = 1; } else { $fieldset["completada"] = 0; } } else { $fieldset["completada"] = 0; } //Si el $fieldset es vacio if (Util::is_array_empty($fieldset)) { return false; } // // Begin Transaction // docs: https://ellislab.com/codeigniter/user-guide/database/transactions.html // $this->db->trans_start(); $fieldset["creado_por"] = $this->session->userdata('id_usuario'); $fieldset["fecha_creacion"] = date('Y-m-d H-i-s'); $fieldset["relacionado_con"] = $modulo_relacionado_con[0]['id_cat']; $fieldset["fecha"] = date('Y-m-d H:i:s', strtotime($fieldset["fecha"])); //Campos adicionales $this->db->set('uuid_actividad', 'ORDER_UUID(uuid())', FALSE); //Guardar Actividad $this->db->insert('act_actividades', $fieldset); $idActividad = $this->db->insert_id(); //--------------------------------------- //End Transaction $this->db->trans_complete(); $uuid_oportunidad = $_POST['campo']['uuid_oportunidad']; $uuid_tipo = $this->db->query("SELECT HEX(uuid_tipo_actividad) AS uuid_tipo,etiqueta FROM act_tipo_actividades WHERE etiqueta LIKE '%telefonica%'")->row_array(); $tipo_actividad = $_POST['campo']['uuid_tipo_actividad']; $oportunidades = $this->db->query("select count(uuid_oportunidad) as oportunidades from act_actividades where HEX(uuid_oportunidad) ='" . $uuid_oportunidad . "'")->row_array(); if ($this->is_redis_as_runnig && $oportunidades['oportunidades'] == 1 && $uuid_tipo['uuid_tipo'] != $tipo_actividad) { //armar datos $uuid_asignado = $_POST["campo"]["uuid_asignado"]; $creado_por = CRM_Controller::$uuid_usuario; $datosOportunidad = $this->db->query("Select id_oportunidad, nombre from opp_oportunidades where HEX(uuid_oportunidad) = '" . $uuid_oportunidad . "' ")->row_array(); $datos_notificaciones = array(); $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'tiene_oportunidad'); $datos_notificaciones['data'] = json_encode($data_notificacion); $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por); $args = array('id' => $notificacion['id']); $schedules = Jobs::mostrar_jobs(array('id_job' => 3)); $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia'])); $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama')); if (!empty($schedules)) { foreach ($schedules as $schedule) { $schedule_usuarios = json_decode($schedule['uuid_usuarios']); $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia'])); if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) { ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args); } else { ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args); } } } } if ($this->is_redis_as_runnig && $oportunidades['oportunidades'] >= 5) { $oportunidades = $this->db->query("select HEX(uuid_tipo_actividad) as uuid_tipo_actividad from act_actividades where HEX(uuid_oportunidad) ='" . $uuid_oportunidad . "' LIMIT 5")->result_array(); $tipo = $this->db->query("SELECT HEX(uuid_tipo_actividad) AS uuid_tipo FROM act_tipo_actividades WHERE etiqueta LIKE '%reunion%' OR etiqueta LIKE '%visita%'")->result_array(); $array5_opotunidad = array(); $array_tipo = array(); foreach ($oportunidades as $actividades) { array_push($array5_opotunidad, $actividades['uuid_tipo_actividad']); } foreach ($tipo as $actividades) { array_push($array_tipo, $actividades['uuid_tipo']); } $array_conciden = array_intersect($array5_opotunidad, $array_tipo); if (count($array_conciden) == 0) { //armar datos $uuid_asignado = $_POST["campo"]["uuid_asignado"]; $creado_por = CRM_Controller::$uuid_usuario; $datosOportunidad = $this->db->query("Select id_oportunidad, nombre from opp_oportunidades where HEX(uuid_oportunidad) = '" . $uuid_oportunidad . "' ")->row_array(); $datos_notificaciones = array(); $data_notificacion = array('id_oportunidad' => $datosOportunidad['id_oportunidad'], 'nombre' => $datosOportunidad['nombre'], 'tipo' => 'tiene_actividad'); $datos_notificaciones['data'] = json_encode($data_notificacion); $notificacion = Notificaciones::guardar_notificaciones($datos_notificaciones, $uuid_asignado, $creado_por); $args = array('id' => $notificacion['id']); $schedules = Jobs::mostrar_jobs(array('id_job' => 7)); $fecha_tarea = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s ') . $schedule['recurrencia'])); $datetime = new DateTime($fecha_tarea, new DateTimeZone('America/Panama')); if (!empty($schedules)) { foreach ($schedules as $schedule) { $schedule_usuarios = json_decode($schedule['uuid_usuarios']); $args = array_merge($args, array('id_job_conf' => $schedule['id'], 'oportunidad_id' => $datosOportunidad['id_oportunidad'], 'tiempo_ejecucion' => $fecha_tarea, 'recurrencia' => $schedule['recurrencia'])); if (in_array($uuid_asignado, $schedule_usuarios->uuid_usuarios)) { ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args); } else { ResqueScheduler::enqueueAt($datetime, 'notificacion', 'Notificaciones', $args); } } } } } // Managing Errors if ($this->db->trans_status() === FALSE) { log_message("error", "MODULO: Actividades --> No se pudo guadar los datos de la actividad en DB."); return false; } else { /* Notifications::guardar_notificacion( array( "tipo_notificacion"=>'actualizacion', "modulo"=>$_POST['campo']['relacionado_con'], "id"=>$_POST['campo']['uuid_relacion'], ));*/ //guardar el id en variable de session $this->session->set_userdata('uuid_actividad', $idActividad); return true; } }
function reportes() { $this->assets->agregar_css(array('public/assets/css/plugins/jquery/awesome-bootstrap-checkbox.css', 'public/assets/css/plugins/bootstrap/bootstrap-datetimepicker.css', 'public/assets/css/plugins/bootstrap/daterangepicker-bs3.css', 'public/assets/css/plugins/jquery/chosen/chosen.min.css', 'public/assets/js/plugins/jquery/sweetalert/sweetalert.css')); $this->assets->agregar_js(array('public/assets/js/plugins/jquery/chosen.jquery.min.js', 'public/assets/js/plugins/jquery/jquery-validation/jquery.validate.min.js', 'public/assets/js/plugins/jquery/jquery-validation/localization/messages_es.min.js', 'public/assets/js/moment-with-locales-290.js', 'public/assets/js/plugins/bootstrap/daterangepicker.js', 'public/assets/js/plugins/jquery/sweetalert/sweetalert.min.js', 'public/assets/js/modules/configuraciones/configuraciones.js', 'public/assets/js/modules/configuraciones/notificaciones.js', 'public/assets/js/default/tabla-dinamica.jquery.js', 'public/assets/js/modules/configuraciones/reportes.js')); $jobInfo = Jobs::seleccionar_jobs(array("tipo" => "reporte")); $listaReportesDB = Jobs::mostrar_jobs(array("tipo" => "reporte")); $data = array("reportes" => $jobInfo["jobs"], "roles" => $jobInfo["roles"], "jobs" => $listaReportesDB, "usuarios" => $this->usuarios_model->listar_usuarios(array(), 'nombre', $sord = 1, $limit = 1000, $start = 0)); //Breadcrum Array $breadcrumb = array("titulo" => '<i class="fa fa-folder-open"></i> Ventas', "ruta" => array(0 => array("nombre" => "Administración", "activo" => false, "url" => 'configuracion'), 1 => array("nombre" => '<b>Reportes</b>', "activo" => true)), "filtro" => false, "menu" => array("nombre" => '<i class="fa fa-plus"></i> Agregar', "url" => "javascript:;", "clase" => "agregarBtn")); $this->template->agregar_titulo_header('Configuracion'); $this->template->agregar_breadcrumb($breadcrumb); $this->template->agregar_contenido($data); $this->template->visualizar(); }