/**
  * Reenvio hacia Officetrack
  * @return type
  */
 public function postProcesarot()
 {
     //Obtener carnet de tecnico
     $data['carnet'] = "";
     $tecnico = DB::table('tecnicos')->where('id', '=', Input::get("tecnico_id"))->get();
     if (isset($tecnico[0])) {
         $data['carnet'] = $tecnico[0]->carnet_tmp;
     }
     $data["coordinado2"] = Input::get("coordinado2");
     $data["gestion_id"] = Input::get("gestion_id");
     //$data['carnet']                 = "";
     $data['fecha_registro'] = Input::get("fecha_registro");
     $horaIni = "04:00:00";
     $horaFin = "06:00:00";
     $fechaHora = explode("/", Input::get("fh_agenda"));
     $data['fecha_agenda'] = trim($fechaHora[0]);
     $data['hora_agenda'] = trim($fechaHora[1]);
     $horas = explode("-", $data['hora_agenda']);
     if (isset($horas[0])) {
         $horaIni = trim($horas[0]) . ":00";
     }
     if (isset($horas[1])) {
         $horaFin = trim($horas[1]) . ":00";
     }
     //Duracion
     $toTime = strtotime("{$data['fecha_agenda']} {$horaIni}");
     $fromTime = strtotime("{$data['fecha_agenda']} {$horaFin}");
     $data["duration"] = round(abs($toTime - $fromTime) / 60, 2);
     $data['codactu'] = Input::get("codactu");
     $data['fecha_registro'] = Input::get("fecha_registro");
     $data['nombre_cliente'] = Input::get("nombre_cliente");
     $data['direccion_instalacion'] = Input::get("direccion_instalacion");
     $data["actividad"] = Input::get("actividad");
     $data['codmotivo_req_catv'] = Input::get("act_codmotivo_req_catv");
     $data['orden_trabajo'] = Input::get("orden_trabajo");
     $data['fftt'] = Input::get("fftt");
     $data['dir_terminal'] = Input::get("dir_terminal");
     $data['inscripcion'] = Input::get("inscripcion");
     $data['mdf'] = Input::get("mdf");
     $data['segmento'] = Input::get("segmento");
     $data['clase_servicio_catv'] = Input::get("clase_servicio_catv");
     $data['total_averias'] = Input::get("total_averias");
     $data['zonal'] = Input::get("zonal");
     $data['llamadastec15dias'] = Input::get("llamadastec15dias");
     $data['quiebre'] = Input::get("quiebre");
     $data['lejano'] = Input::get("lejano");
     $data['distrito'] = Input::get("distrito");
     $data['averia_m1'] = Input::get("averia_m1");
     $data['telefono_codclientecms'] = Input::get("telefono_codclientecms");
     $data['area2'] = Input::get("area2");
     $data['eecc_final'] = Input::get("eecc_final");
     $data["gestion_id"] = Input::get("gestion_id");
     $data['estado'] = Input::get("estado");
     $data['cr_observacion'] = Input::get("cr_observacion");
     $data['velocidad'] = Input::get("velocidad");
     $data["estado_agendamiento"] = "1-1";
     //Inicio componentes
     $arrComponentes = array();
     $cmp = Helpers::ruta('cat_componente/cargar', 'POST', array('codactu' => $data['codactu']), false);
     $cmp = Helpers::stdToArray($cmp);
     if ($cmp["rst"] == 1 and count($cmp["datos"]) > 0) {
         foreach ($cmp["datos"] as $val) {
             $arrComponentes[] = $val["nombre"];
         }
     }
     $data["componente_text"] = $arrComponentes;
     //Fin componentes
     $savedata["otdata"] = $data;
     $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $savedata, false);
     $rot = Helpers::stdToArray($rot);
     if ($rot['officetrack'] == 'OK') {
         $query = "select GenerarReenvio(" . $data["gestion_id"] . "," . Auth::user()->id . ",'" . $data['cr_observacion'] . "')";
         $reenvio = DB::select($query);
     }
     return json_encode($rot);
 }
Esempio n. 2
0
 public function postSaveplan()
 {
     if (Request::ajax()) {
         if (Input::get('savePlanAll') != '') {
             $post = Input::get('savePlanAll');
             //Resultado del proceso
             $saveActu = array();
             //Todos los datos
             $dataArray = explode("|^~", $post);
             /**
              * $genArray[0]: empresa_id
              * $genArray[1]: celula_id
              * $genArray[2]: tecnico id
              * $genArray[3]: fecha agenda: dd/mm/yyyy
              */
             $genArray = explode("|", $dataArray[0]);
             $actuArray = explode("|^", $dataArray[1]);
             foreach ($actuArray as $key => $val) {
                 $dbCommit = true;
                 DB::beginTransaction();
                 /**
                  * $data[0]: 'Averia' o 'Provision'
                  * $data[1]: codigo (requerimiento o averia)
                  * $data[2]: id_gestion (''=temporal, num=gestionada)
                  * $data[3]: horario_id
                  * $data[4]: 1=coordinado,0=no coordinado
                  * $data[5]: Latitud
                  * $data[6]: Longitud
                  */
                 $data = explode("|", $val);
                 /**
                  * Validar si temporal cambio a gestionado
                  */
                 if (trim($data[2]) == '' or trim($data[2]) == 0) {
                     $arrTmpGes = DB::table('ultimos_movimientos')->where('codactu', $data[1])->first();
                     $arrTmpGes = Helpers::stdToArray($arrTmpGes);
                     if (count($arrTmpGes) > 0 and isset($arrTmpGes['gestion_id'])) {
                         //ID de gestion
                         $data[2] = $arrTmpGes['gestion_id'];
                         $data[4] = $arrTmpGes['coordinado'];
                     }
                 }
                 $date = substr($genArray[3], 6, 4) . "-" . substr($genArray[3], 3, 2) . "-" . substr($genArray[3], 0, 2);
                 $dia_agenda = date('N', strtotime($date));
                 $tablatmp = Config::get("wpsi.db.tmp_" . strtolower($data[0]));
                 $tmpdata = array();
                 //$actividad_id = 0;
                 $tmptable = new Tmptable();
                 $celula = explode("_", $genArray[1]);
                 //Origen Temporal
                 if ($data[0] == "Averia") {
                     //$actividad_id = 1;
                     $tmpdata = $tmptable->getAveria($data[1]);
                 }
                 if ($data[0] == "Provision") {
                     //$actividad_id = 2;
                     $tmpdata = $tmptable->getProvision($data[1]);
                 }
                 $actividad = DB::table('actividades')->where('nombre', $data[0])->first();
                 //Horario
                 $horario = DB::table('horarios')->where('id', $data[3])->first();
                 //Tecnico
                 $objTecnico = DB::table('tecnicos')->where('id', $genArray[2])->first();
                 //Componentes
                 $arrComponentes = array();
                 $cmp = Helpers::ruta('cat_componente/cargar', 'POST', array('codactu' => $data[1]), false);
                 $cmp = Helpers::stdToArray($cmp);
                 if ($cmp["rst"] == 1 and count($cmp["datos"]) > 0) {
                     foreach ($cmp["datos"] as $val) {
                         $arrComponentes[] = $val["nombre"];
                     }
                 }
                 //Respuesta GestionMovimiento
                 $rgm = array();
                 if ($data[2] == 0) {
                     if (isset($tmpdata[0])) {
                         //Temporal
                         $savedata = $tmpdata[0];
                         $savedata->actividad = $data[0];
                         $savedata->actividad_id = $actividad->id;
                         $savedata->nombre_cliente_critico = $savedata->nombre_cliente;
                         $savedata->telefono_cliente_critico = $savedata->telefono;
                         $savedata->celular_cliente_critico = $savedata->telefono;
                         $quiebre = DB::table('quiebres')->where('apocope', $savedata->quiebre)->first();
                         $empresa = DB::table('empresas')->where('nombre', $savedata->eecc_final)->first();
                         $zonal = DB::table('zonales')->where('abreviatura', $savedata->zonal)->first();
                         $tecnico = DB::table('tecnicos')->where('carnet_tmp', $savedata->zonal)->first();
                         $savedata->quiebre_id = $quiebre->id;
                         $savedata->empresa_id = $genArray[0];
                         $savedata->zonal_id = $zonal->id;
                         //Motivo gestion
                         $savedata->estado = 2;
                         $savedata->motivo = 1;
                         $savedata->submotivo = 1;
                         $savedata->flag_tecnico = 1;
                         $savedata->horario_id = $data[3];
                         $savedata->dia_id = $dia_agenda;
                         $savedata->fecha_agenda = $date;
                         $savedata->celula = $celula[1];
                         $savedata->tecnico = $genArray[2];
                         $savedata->hora_agenda = $horario->horario;
                         $savedata->duration = 2;
                         $savedata->carnet = $objTecnico->carnet_tmp;
                         $savedata->coordinado2 = 'NO';
                         $savedata->velocidad = "";
                         $velocidad = explode("|", $savedata->paquete);
                         if (isset($velocidad[2])) {
                             $savedata->velocidad = $velocidad[2];
                         }
                         $savedata->estado_agendamiento = '1-1';
                         $savedata->submodulo_id = 1;
                         $savedata->y = $data[5];
                         $savedata->x = $data[6];
                         $savedata->componente_text = $arrComponentes;
                         //Grabar gestión
                         $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', Helpers::stdToArray($savedata), false);
                         $rgm = Helpers::stdToArray($rgm);
                         $saveActu[$data[0]][$data[1]] = $rgm;
                         /**
                          * Validar si se enviará a officetrack
                          */
                         $valida = array();
                         //Si cumple con el envio a OT acitividad + quiebre
                         $valida["actividad_id"] = $savedata->actividad_id;
                         $valida["quiebre_id"] = $savedata->quiebre_id;
                         //El estado del tecnico de officetrack
                         $valida["tecnico_id"] = $savedata->tecnico;
                         $valida["celula_id"] = $savedata->celula;
                         //El estado de Agendamiento para officetrack
                         $valida["motivo_id"] = 1;
                         $valida["submotivo_id"] = 1;
                         $valida["estado_id"] = 2;
                         //Si anteriormente se realizó una transacción OT
                         $valida["transmision"] = 0;
                         $rvalida = Helpers::ruta('officetrack/validar', 'POST', $valida, false);
                         //Puede enviar a OT y Grabó en DB
                         if ($rvalida == "1" and $rgm['rst'] == "1") {
                             //Recuperar ID de gestion
                             $savedata->gestion_id = $rgm['gestion_id'];
                             $otdata["otdata"] = Helpers::stdToArray($savedata);
                             $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $otdata, false);
                             $rot = Helpers::stdToArray($rot);
                             $saveActu[$data[0]][$data[1]]['officetrack'] = $rot['officetrack'];
                         } else {
                             $saveActu[$data[0]][$data[1]]['officetrack'] = "Envio no valido";
                             $dbCommit = false;
                             $rgm["msj"] = "Envio no valido";
                             $geserror = "";
                             if (isset($rgm['err'])) {
                                 $geserror = base64_decode($rgm['err']);
                             }
                             $rgm["err"] = base64_encode($rgm["msj"] . $rvalida . $geserror);
                         }
                         unset($savedata);
                     }
                 } else {
                     if ($data[2] > 0) {
                         //Origen Gestionado
                         $geoplan = new Geoplan();
                         $ultimo = $geoplan->getUltimoMovimiento($data[2]);
                         $gesmov = $ultimo["datos"][0];
                         if (isset($tmpdata[0])) {
                             $savedata = Helpers::stdToArray($tmpdata[0]);
                         }
                         $ultimov = DB::table('ultimos_movimientos')->where('gestion_id', $data[2])->first();
                         $savedata = Helpers::stdToArray($ultimov);
                         //Coordinado con cliente
                         if ($data[4] == 1) {
                             $horario = DB::table('horarios')->where('id', $ultimov->horario_id)->first();
                             $data[3] = $horario->id;
                             $dia_agenda = $ultimov->dia_id;
                             $date = $ultimov->fecha_agenda;
                         }
                         $savedata["actividad"] = $data[0];
                         $savedata["actividad_id"] = $actividad->id;
                         $savedata["gestion_id"] = $data[2];
                         $savedata["empresa_id"] = $genArray[0];
                         $savedata["zonal_id"] = $gesmov->zonal_id;
                         $savedata["estado"] = 2;
                         $savedata["motivo"] = 1;
                         $savedata["submotivo"] = 1;
                         $savedata["observacion2"] = "";
                         $savedata["coordinado2"] = "";
                         $savedata["flag_tecnico"] = 1;
                         $savedata["horario_id"] = $data[3];
                         $savedata["dia_id"] = $dia_agenda;
                         $savedata["fecha_agenda"] = $date;
                         $savedata["celula"] = $celula[1];
                         $savedata["tecnico"] = $genArray[2];
                         $savedata["hora_agenda"] = $horario->horario;
                         $savedata["duration"] = 60;
                         $savedata["estado_agendamiento"] = '1-1';
                         $savedata["submodulo_id"] = 1;
                         $savedata["y"] = $data[5];
                         $savedata["x"] = $data[6];
                         $savedata["componente_text"] = $arrComponentes;
                         //Datos faltantes para officetrack
                         if (!isset($savedata["quiebre"])) {
                             $quiebre = DB::table('quiebres')->where('id', $savedata["quiebre_id"])->first();
                             $savedata["quiebre"] = $quiebre->apocope;
                         }
                         if (!isset($savedata["eecc_final"])) {
                             $quiebre = DB::table('empresas')->where('id', $savedata["empresa_id"])->first();
                             $savedata["eecc_final"] = $quiebre->nombre;
                         }
                         if (!isset($savedata["cr_observacion"])) {
                             $savedata["cr_observacion"] = $savedata["observacion"];
                         }
                         if (!isset($savedata["carnet"])) {
                             $savedata["carnet"] = $objTecnico->carnet_tmp;
                         }
                         $savedata["velocidad"] = "";
                         if (isset($savedata["paquete"])) {
                             $velocidad = explode("|", $savedata["paquete"]);
                             if (isset($velocidad[2])) {
                                 $savedata["velocidad"] = $velocidad[2];
                             }
                         }
                         /**
                          * Validar si se enviará a officetrack
                          */
                         $valida = array();
                         //Si cumple con el envio a OT acitividad + quiebre
                         $valida["actividad_id"] = $actividad->id;
                         $valida["quiebre_id"] = $gesmov->quiebre_id;
                         //El estado del tecnico de officetrack
                         $valida["tecnico_id"] = $genArray[2];
                         $valida["celula_id"] = $celula[1];
                         //El estado de Agendamiento para officetrack
                         $valida["motivo_id"] = 1;
                         $valida["submotivo_id"] = 1;
                         $valida["estado_id"] = 2;
                         //Si anteriormente se realizó una transacción OT
                         $valida["transmision"] = $gesmov->transmision;
                         $rvalida = Helpers::ruta('officetrack/validar', 'POST', $valida, false);
                         //Grabar gestión
                         $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', Helpers::stdToArray($savedata), false);
                         $rgm = Helpers::stdToArray($rgm);
                         $saveActu[$data[0]][$data[1]] = $rgm;
                         //Envia a OT y Grabó gestión
                         if ($rvalida == "1" and $rgm['rst'] == "1") {
                             $otdata["otdata"] = $savedata;
                             $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $otdata, false);
                             $rot = Helpers::stdToArray($rot);
                             $saveActu[$data[0]][$data[1]]["officetrack"] = $rot['officetrack'];
                         } else {
                             $saveActu[$data[0]][$data[1]]["officetrack"] = "Envio no valido";
                             $dbCommit = false;
                             $rgm["msj"] = "Envio no valido";
                             $geserror = "";
                             if (isset($rgm['err'])) {
                                 $geserror = base64_decode($rgm['err']);
                             }
                             $rgm["err"] = base64_encode($rgm["msj"] . $rvalida . $geserror);
                         }
                         unset($savedata);
                     }
                 }
                 //Commit o Rollback
                 if ($dbCommit) {
                     DB::commit();
                 } else {
                     DB::rollback();
                     $custom["code"] = "R001";
                     $custom["file"] = __FILE__;
                     $custom["line"] = __LINE__;
                     $custom["message"] = base64_decode($rgm["err"]);
                     $custom["trace"] = "RollBack Geo Planificacion";
                     $custom["usuario_id"] = Auth::user()->id;
                     $custom["date"] = date("Y-m-d H:i:s");
                     $this->_errorController->saveCustomError($custom);
                     $saveActu[$data[0]][$data[1]]["rst"] = 2;
                     $saveActu[$data[0]][$data[1]]["msj"] = "No se registra movimiento";
                 }
             }
             return json_encode($saveActu);
         }
     }
 }
Esempio n. 3
0
 /**
  * Recepciona datos de Bandeja Controller
  * 
  * @return type
  */
 public function postRecepccion()
 {
     $data = array();
     $valida = array();
     $dataOfficetrack = Input::all();
     $dataGestion = Input::all();
     $dataGestionPendiente = Input::all();
     if (trim($dataGestion["fecha_agenda"]) != '' and trim($dataGestion['dia_id']) != '' and $dataGestion['dia_id'] != date("N", strtotime(date($dataGestion["fecha_agenda"])))) {
         $exc['code'] = '0000';
         $exc['file'] = 'BandejaController.php';
         $exc['line'] = '26';
         $exc['message'] = $dataGestion['codactu'] . ', No cuadran dias =>' + $dataGestion['dia_id'] . ' == ' . date("N", strtotime(date($dataGestion["fecha_agenda"])));
         $exc['trace'] = $dataGestion['dia_id'] . "|" . $dataGestion['fecha_agenda'] . "|" . $dataGestion['estado_id'] . "|" . $dataGestion['submotivo_id'] . "|" . $dataGestion['motivo_id'] . "|" . $dataGestion['quiebre_id'] . "|" . $dataGestion['actividad_id'];
         $this->_errorController->saveError($exc);
         return Response::json(array('rst' => 2, 'msj' => 'Ocurrio una interrupción en el registro de la información.', 'codactu' => $dataGestion['codactu']));
         /*
         $dataGestion['dia_id'].' == '.date("N",strtotime(date($dataGestion["fecha_agenda"])))
         */
         exit(0);
     }
     /**
      * Validacion Técnico en un solo horario y fecha
      * 
      * Datos requeridos:
      * tecnico:12
      * horario_id:19
      * dia_id:5
      * fecha_agenda:2015-05-08
      * estado_agendamiento: 1-1
      */
     $tecAsignadoBool = false;
     $resultAsignado = array();
     if ($dataGestion["estado_agendamiento"] == '1-1') {
         //No validar para tecnico NINGUNO
         $tecArray = DB::table('tecnicos')->where('id', '=', $dataGestion["tecnico"])->where('estado', '=', '1')->select('ninguno')->get();
         if (isset($tecArray[0]) and $tecArray[0]->ninguno == 0) {
             $dataValidaCupo = new stdClass();
             $dataValidaCupo->tecnico_id = $dataGestion["tecnico"];
             $dataValidaCupo->horario_id = $dataGestion["horario_id"];
             $dataValidaCupo->dia_id = $dataGestion["dia_id"];
             $dataValidaCupo->fecha_agenda = $dataGestion["fecha_agenda"];
             $asignado = GestionMovimiento::getTecnicoHorario($dataValidaCupo);
             if (is_array($asignado) and count($asignado["asignado"]) > 0) {
                 $ordenAgenda = $asignado["asignado"][0];
                 $tecAsignadoBool = true;
                 $resultAsignado = array('rst' => 2, 'msj' => 'El técnico seleccionado ya tiene una orden ' . 'agendada para el horario asignado', 'codactu' => $ordenAgenda->codactu);
             }
             //Respuesta tecnico con agenda asignada
             if ($tecAsignadoBool) {
                 return $resultAsignado;
                 exit;
             }
         }
     }
     /**
      * Para estados: Cancelado y Pendiente, evaluar si
      * la orden está asignada a un técnico y dejarla 
      * sin efecto. 2015-06-25
      * 
      * Obtener ultimo movimiento antes de grabar la gestion
      */
     $getOtoff = "";
     if ($dataGestion["estado"] == 5 or $dataGestion["estado"] == 7) {
         if (isset($dataGestion["gestion_id"]) and $dataGestion["gestion_id"] > 0) {
             $ultimov = DB::table('ultimos_movimientos')->where('gestion_id', $dataGestion["gestion_id"])->first();
             $ultimov = Helpers::stdToArray($ultimov);
             /**
              * Valida si la orden tiene: 
              * - horario
              * - dia
              * - celula
              * - tecnico
              */
             if ($ultimov["horario_id"] > 0 and $ultimov["dia_id"] > 0 and $ultimov["celula_id"] > 0 and $ultimov["tecnico_id"] > 0) {
                 $ultimov["estado"] = "";
                 $ultimov["actividad"] = "";
                 $ultimov["duration"] = 1;
                 $ultimov["quiebre"] = "";
                 $ultimov["eecc_final"] = "";
                 $ultimov["cr_observacion"] = "";
                 $ultimov["carnet"] = "";
                 $ultimov["velocidad"] = "";
                 $ultimov["paquete"] = "";
                 $ultimov['fecha_agenda'] = "";
                 $ultimov['hora_agenda'] = "";
                 $ultimov["estado_agendamiento"] = "1-1";
                 $ultimov["coordinado2"] = "0";
                 //Envio a OT
                 $savedata["otdata"] = $ultimov;
                 $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $savedata, false);
                 //Respuesta OT
                 //$getOtoff = $rot->officetrack;
             }
         }
     }
     $getOtoff = "";
     DB::beginTransaction();
     $rgm2['sql'] = '';
     $rgm2['estofic'] = '';
     if (isset($dataGestion["gestion_id"]) and $dataGestion["gestion_id"] > 0 and $dataGestion["estado_officetrack"] == 0) {
         $ultimov = DB::table('ultimos_movimientos')->where('gestion_id', $dataGestion["gestion_id"])->first();
         $ultimov = Helpers::stdToArray($ultimov);
         $sql = "  SELECT ct.officetrack\n                    FROM tecnicos t\n                    INNER JOIN celula_tecnico ct ON t.id=ct.tecnico_id\n                    WHERE ct.tecnico_id='" . $ultimov["tecnico_id"] . "'\n                    AND ct.celula_id='" . $ultimov["celula_id"] . "'\n                    AND ct.estado=1";
         $tecnicoinfo = DB::select($sql);
         $tecnicoinfo = Helpers::stdToArray($tecnicoinfo);
         if (count($tecnicoinfo) > 0) {
             $rgm2['estofic'] = $tecnicoinfo[0]['officetrack'];
         }
         $rgm2['sql'] = $sql;
         /**
          * Valida si la orden tiene: 
          * - horario
          * - dia
          * - celula
          * - tecnico
          */
         if ($ultimov["horario_id"] > 0 and $ultimov["dia_id"] > 0 and $ultimov["celula_id"] > 0 and $ultimov["tecnico_id"] > 0 and $rgm2['estofic'] == 1) {
             $ultimov["estado"] = "";
             $ultimov["actividad"] = "";
             $ultimov["duration"] = 1;
             $ultimov["quiebre"] = "";
             $ultimov["eecc_final"] = "";
             $ultimov["cr_observacion"] = "";
             $ultimov["carnet"] = "";
             $ultimov["velocidad"] = "";
             $ultimov["paquete"] = "";
             $ultimov['fecha_agenda'] = "";
             $ultimov['hora_agenda'] = "";
             $ultimov["estado_agendamiento"] = "0-0";
             $ultimov["coordinado2"] = "0";
             //Envio a OT
             $savedata["otdata"] = $ultimov;
             $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $savedata, false);
             //Registrar Pendiente
             $dataGestionPendiente['estado_agendamiento'] = '0-0';
             $dataGestionPendiente['motivo'] = '2';
             $dataGestionPendiente['submotivo'] = '18';
             $dataGestionPendiente['estado'] = '7';
             $dataGestionPendiente['horario_id'] = '';
             $dataGestionPendiente['dia_id'] = '';
             $dataGestionPendiente['fecha_agenda'] = '7';
             $dataGestionPendiente['tecnico'] = '';
             $dataGestionPendiente['usuario_sistema'] = 'sistema';
             //697
             $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', $dataGestionPendiente, false);
             //Respuesta OT
             //$getOtoff = $rot->officetrack;
         }
     }
     $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', $dataGestion, false);
     $rgm = Helpers::stdToArray($rgm);
     //$rgm["sql"]=$rgm2["sql"];
     $rgm['estofic'] = $rgm2['estofic'];
     //Registra o actualiza XY del cliente
     $dataXyCliente = array('codigo' => $dataGestion['inscripcion'], 'nombre' => $dataGestion['nombre_cliente_critico'], 'coord_x' => $dataGestion['x'], 'coord_y' => $dataGestion['y'], 'direccion' => $dataGestion['direccion_instalacion'], 'estado' => 1);
     if ($dataGestion["cliente_xy_insert"] == 1) {
         $query = DB::table('clientes')->insert($dataXyCliente);
     } else {
         $query = DB::table('clientes')->where('codigo', $dataGestion['inscripcion'])->update($dataXyCliente);
     }
     $rvalida = "0";
     if (Input::get('tecnico') and Input::get('tecnico') != '') {
         $valida = array();
         //Indica si cumple con el envio a officetrack acitividad + quiebre
         $valida["actividad_id"] = $dataOfficetrack["actividad_id"];
         $valida["quiebre_id"] = $dataOfficetrack["quiebre_id"];
         //El estado del tecnico de officetrack
         $valida["tecnico_id"] = $dataOfficetrack["tecnico"];
         $valida["celula_id"] = $dataOfficetrack["celula"];
         //El estado de Agendamiento para officetrack
         $valida["motivo_id"] = $dataOfficetrack["motivo"];
         $valida["submotivo_id"] = $dataOfficetrack["submotivo"];
         $valida["estado_id"] = $dataOfficetrack["estado"];
         //El evento indica si anteriormente ya se realizó una transacción OT
         $valida["transmision"] = $dataOfficetrack["transmision"];
         $rvalida = Helpers::ruta('officetrack/validar', 'POST', $valida, false);
     }
     // true indica que se enviara a officetrack
     $dataGestion['officetrack_envio'] = $rvalida;
     if ($rvalida == "1" and $rgm['rst'] == "1") {
         $dataOfficetrack['gestion_id'] = $rgm['gestion_id'];
         /*if ( !isset($dataOfficetrack['id_gestion']) ) {
               $idGestion=Gestion::getGenerarID();
               $dataOfficetrack['gestion_id']=$idGestion;
               $dataGestion['gestion_id_officetrack']=$idGestion;
           }*/
         $tecnico = Tecnico::find($dataOfficetrack['tecnico']);
         $dataOfficetrack['carnet'] = $tecnico['carnet_tmp'];
         $estado = Estado::find($dataOfficetrack['estado']);
         $dataOfficetrack['estado'] = $estado['nombre'];
         $horarioTipo = HorarioTipo::find($dataOfficetrack['horario_tipo']);
         $dataOfficetrack['duration'] = $horarioTipo['minutos'];
         $velocidad = array('', '', '');
         if (trim($dataOfficetrack['paquete']) != '') {
             $velocidad = explode("|", $dataOfficetrack['paquete']);
         }
         $dataOfficetrack['velocidad'] = $velocidad[2];
         $dataOfficetrack['eecc_final'] = $dataOfficetrack['empresa_id'];
         $dataOfficetrack['cr_observacion'] = $dataOfficetrack['observacion2'];
         $savedata["otdata"] = $dataOfficetrack;
         $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $savedata, false);
         $rot = Helpers::stdToArray($rot);
         if ($rot['officetrack'] == "OK") {
             //registrara normalmente
             DB::commit();
             $rgm['msj'] = 'Registro realizado correctamente con Officetrack';
             $rgm['estado_agendamiento'] = $dataGestion['estado_agendamiento'];
             $rgm['tecnico'] = $dataGestion['tecnico'];
             if ($dataGestion["estado_agendamiento"] != '1-1' and $dataGestion["tecnico"] != '') {
                 $url = "http://psiweb.ddns.net:2230/webpsi/sms_enviar_individual_ajax.php";
                 $tecnicoinfo = DB::table('tecnicos')->where('id', $dataGestion["tecnico"])->first();
                 $postData = array('enviar_sms' => 1, 'celular' => '996475583', 'iduser' => Auth::user()->id, 'mensaje' => "La actuación: " . $dataGestion['codactu'] . " ha sido eliminada, favor de sincronizar para actualizar. PSI-OFFICETRACK");
                 $rgm['mensaje'] = "Llego";
                 $ch = curl_init();
                 curl_setopt($ch, CURLOPT_URL, $url);
                 curl_setopt($ch, CURLOPT_HEADER, false);
                 curl_setopt($ch, CURLOPT_POST, true);
                 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                 //Retorno
                 $result = curl_exec($ch);
                 curl_close($ch);
             } else {
                 $rgm['mensaje'] = "No Llego :(";
             }
             return Response::json($rgm);
         } else {
             DB::rollback();
             return Response::json(array('rst' => 2, 'msj' => 'No se pudo realizar el envio : ' . $rot['officetrack'] . '; Intente nuevamente el envio a officetrack', 'codactu' => $dataGestion['codactu']));
         }
     } elseif ($rgm['rst'] == "1") {
         DB::commit();
         $rgm['msj'] = 'Registro realizado correctamente';
         return Response::json($rgm);
     } else {
         DB::rollback();
         $this->_errorController->saveError($rgm['err']);
         return Response::json(array('rst' => 2, 'msj' => $rgm['msj']));
     }
     /*else { // registrará directo sin officetrack
                 $rgm = Helpers::ruta(
                     'gestion_movimiento/crear',
                     'POST', 
                     $dataGestion, 
                     false
                 );
     
                 $rgm= Helpers::stdToArray($rgm);
                 $rgm['msj']='Registro realizado correctamente';
                 return Response::json(
                     $rgm
                 );
             }*/
 }