public function proceso_reservaRQ($args) { $args = (array) $args; $usuarioRQ = trim($args["Credenciales"]->usuario); $passwordRQ = trim($args["Credenciales"]->password); //Cargando el modelo usuarios $usuarios = $this->loadModel('usuario'); $var_getUser = $usuarios->getUsuario($usuarioRQ); if ($var_getUser == false) { throw new SoapFault("Sin registros", null, "Usuario o password son incorrectos"); } else { if (trim($var_getUser[0]->getUsuario()) == $usuarioRQ) { if (trim($var_getUser[0]->getClave()) == $passwordRQ) { $reserva = $this->loadModel('reserva'); $nombre_principal = trim($args["Parametros"]->nombre_principal); $email_principal = trim($args["Parametros"]->email_principal); $telefono_principal = trim($args["Parametros"]->telefono_principal); /* validacion de la persona que realizo la reserva */ if ($nombre_principal == '' || $email_principal == '' || $telefono_principal == '') { throw new SoapFault("Error", 7, "Faltan datos de la persona que realizo la reserva"); } //validamos el mail if (!Funciones::validaCorreo($email_principal)) { throw new SoapFault("Error", 8, "No es un email valido"); } $id_prog = trim($args["Parametros"]->id_prog); $id_opcion = trim($args["Parametros"]->id_opcion); $nota = trim($args["Parametros"]->nota); $fecha_in = trim($args["Parametros"]->fecha_in); $id_agen = trim($args["Credenciales"]->usuario); $codigo_ope_oris = trim($args["Parametros"]->codigo_ope_oris); //validacion para que los campos principales no esten en blanco if ($id_prog == '' || $id_opcion == '' || $fecha_in == '') { throw new SoapFault("Error", 9, "Complete todo los campos"); } $sql = "exec H2H_CREA_FILE '{$id_prog}', '{$id_opcion}'," . " '{$nota}','{$fecha_in}','{$id_agen}'," . "'{$codigo_ope_oris}'"; $MC_numHab = $this->IntConvert($args["Parametros"]->numHabitaciones); //validamos que al menos se elija una habitacion if ($MC_numHab == 0) { throw new SoapFault("Error", 10, "Debe elegir al menos una habitacion"); } $sql .= ", '{$MC_numHab}' "; $sql .= ", '" . $this->IntConvert($args["Parametros"]->numAdlHab_1) . "' "; // validamos que por lo se elija un adulto if ($this->IntConvert($args["Parametros"]->numAdlHab_1) == 0) { throw new SoapFault("Error", 11, "Debe ir al menos un adulto"); } /* validamos que la cantidad de pasajeros cuadre con los datos de ellos */ $adultos[] = $this->IntConvert($args["Parametros"]->numAdlHab_1); $adultos[] = $this->IntConvert($args["Parametros"]->numAdlHab_2); $adultos[] = $this->IntConvert($args["Parametros"]->numAdlHab_3); $childs[] = $this->IntConvert($args["Parametros"]->cantidadChildHab_1); $childs[] = $this->IntConvert($args["Parametros"]->cantidadChildHab_2); $childs[] = $this->IntConvert($args["Parametros"]->cantidadChildHab_3); $infant[] = $this->IntConvert($args["Parametros"]->numInfHab_1); $infant[] = $this->IntConvert($args["Parametros"]->numInfHab_2); $infant[] = $this->IntConvert($args["Parametros"]->numInfHab_3); for ($i = 0; $i <= 2; $i++) { //se suma la cantidad de pasajeros totales $cantidadPsajeros = $cantidadPsajeros + $adultos[$i] + $childs[$i]; //validamos que la cantidad no sea mayor a 2 de los child if ($childs[$i] > 2) { throw new SoapFault("Error", 12, "No puede ingresar mas de 2 child"); } } //validamos que la cantidad de datos sea la misma con la de pasajeros if (count($args["Parametros"]->Pasajeros->Pasajero) != $cantidadPsajeros) { throw new SoapFault("Error", 13, "No puede enviar una cantidad de datos distinta de la cantidad de pasajeros"); } /* solo validamos si hay mas de 1 pasajero */ if (count($args["Parametros"]->Pasajeros->Pasajero) > 1) { $ctn = 0; for ($xd = 0; $xd <= 2; $xd++) { //validamos los adultos for ($y = 0; $y < $adultos[$xd]; $y++) { $tipo = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->TipoPasajero; $TipoDocumento = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->TipoDocumento; $NombrePasajero = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->NombrePasajero; $Rut = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->Rut; $F_nacimiento = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->F_nacimiento; $tratoPax = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->tratoPax; if ($tipo == '' || $TipoDocumento == '' || $NombrePasajero == '' || $Rut == '' || $F_nacimiento == '' || $tratoPax == '') { throw new SoapFault("Error", 24, "Debe ingresar todos los campos"); } $NombrePasajero_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->NombrePasajero_Inf; $Rut_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->Rut_Inf; $F_nacimiento_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->F_nacimiento_Inf; if ($y == 0) { if ($infant[$xd] > 0) { if ($NombrePasajero_Inf == '' || $Rut_Inf == '' || $F_nacimiento_Inf == '') { throw new SoapFault("Error", 25, "Debe ingresar todos los campos del infant"); } } else { if ($NombrePasajero_Inf != '' || $Rut_Inf != '' || $F_nacimiento_Inf != '') { throw new SoapFault("Error", 27, "No ingreso ninguna cantidad de infant"); } } } else { if ($infant[$xd] > 0) { $NombrePasajero_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->NombrePasajero_Inf; $Rut_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->Rut_Inf; $F_nacimiento_Inf = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->F_nacimiento_Inf; if ($NombrePasajero_Inf != '' || $Rut_Inf != '' || $F_nacimiento_Inf != '') { throw new SoapFault("Error", 26, "Datos de infant deben ir en el primer pasajero"); } } } if (strtolower($tipo) != 'a') { throw new SoapFault("Error", 14, "Error en el ingreso de adulto"); } $ctn++; } //validamos los child for ($i = 0; $i < $childs[$xd]; $i++) { $tipo = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->TipoPasajero; $TipoDocumento = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->TipoDocumento; $NombrePasajero = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->NombrePasajero; $Rut = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->Rut; $F_nacimiento = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->F_nacimiento; $tratoPax = $args["Parametros"]->Pasajeros->Pasajero[$ctn]->tratoPax; if ($tipo == '' || $TipoDocumento == '' || $NombrePasajero == '' || $Rut == '' || $F_nacimiento == '' || $tratoPax == '') { throw new SoapFault("Error", 24, "Debe ingresar todos los campos"); } if (strtolower($tipo) != 'c') { throw new SoapFault("Error", 14, "Error en el ingreso de child"); } else { $edad = Funciones::getEdad(str_replace('-', '/', $args["Parametros"]->Pasajeros->Pasajero[$ctn]->F_nacimiento), str_replace('-', '/', $args["Parametros"]->fecha_in)); // validamos que el child no tenga edad superior a 12 o inferior a 2 if ($edad < 2) { throw new SoapFault("Error", 15, "Child menor a 2 "); } $edades[$xd][$i] = $edad; //c1 o c2 } $ctn++; } } } else { $tipo = $args["Parametros"]->Pasajeros->Pasajero->TipoPasajero; $TipoDocumento = $args["Parametros"]->Pasajeros->Pasajero->TipoDocumento; $NombrePasajero = $args["Parametros"]->Pasajeros->Pasajero->NombrePasajero; $Rut = $args["Parametros"]->Pasajeros->Pasajero->Rut; $F_nacimiento = $args["Parametros"]->Pasajeros->Pasajero->F_nacimiento; $tratoPax = $args["Parametros"]->Pasajeros->Pasajero->tratoPax; if ($tipo == '' || $TipoDocumento == '' || $NombrePasajero == '' || $Rut == '' || $F_nacimiento == '' || $tratoPax == '') { throw new SoapFault("Error", 24, "Debe ingresar todos los campos"); } $NombrePasajero_Inf = $args["Parametros"]->Pasajeros->Pasajero->NombrePasajero_Inf; $Rut_Inf = $args["Parametros"]->Pasajeros->Pasajero->Rut_Inf; $F_nacimiento_Inf = $args["Parametros"]->Pasajeros->Pasajero->F_nacimiento_Inf; if ($infant[0] > 0) { if ($NombrePasajero_Inf == '' || $Rut_Inf == '' || $F_nacimiento_Inf == '') { throw new SoapFault("Error", 25, "Debe ingresar todos los campos del infant"); } } else { if ($NombrePasajero_Inf != '' || $Rut_Inf != '' || $F_nacimiento_Inf != '') { throw new SoapFault("Error", 27, "No ingreso ninguna cantidad de infant"); } } //validamos que sea un child solo if (strtolower($tipo) != 'a') { throw new SoapFault("Error", 16, "No puede ir solo un child"); } } for ($i = 0; $i <= 2; $i++) { if ($this->IntConvert($edades[$i][0]) > 0) { $validar = $reserva->validaChild($id_opcion, $this->IntConvert($edades[$i][0]), $this->IntConvert($edades[$i][1])); if ($validar) { throw new SoapFault("Error", 17, $validar); } } } for ($i = 0; $i < 2; $i++) { $sql .= ", '" . $this->IntConvert($edades[0][$i]) . "' "; } if ($this->IntConvert($args["Parametros"]->numInfHab_1) > 1 || $this->IntConvert($args["Parametros"]->numInfHab_2) > 1 || $this->IntConvert($args["Parametros"]->numInfHab_3) > 1) { throw new SoapFault("Error", 18, "El maximo de infant es 1"); } $sql .= ", '" . $this->IntConvert($args["Parametros"]->numInfHab_1) . "' "; if ($MC_numHab == 3) { $sql .= ", '" . $this->IntConvert($args["Parametros"]->numAdlHab_2) . "' "; for ($i = 0; $i < 2; $i++) { $sql .= ", '" . $this->IntConvert($edades[1][$i]) . "' "; } $sql .= ", '" . $this->IntConvert($args["Parametros"]->numInfHab_2) . "' "; $sql .= ", '" . $this->IntConvert($args["Parametros"]->numAdlHab_3) . "' "; for ($i = 0; $i < 2; $i++) { $sql .= ", '" . $this->IntConvert($edades[2][$i]) . "' "; } $sql .= ", '" . $this->IntConvert($args["Parametros"]->numInfHab_3) . "' "; } else { if ($MC_numHab == 2) { $sql .= ", '" . $this->IntConvert($args["Parametros"]->numAdlHab_2) . "' "; for ($i = 0; $i < 2; $i++) { $sql .= ", '" . $this->IntConvert($edades[1][$i]) . "' "; } $sql .= ", '" . $this->IntConvert($args["Parametros"]->numInfHab_2) . "' "; $sql .= ", '0', '0', '0','0' "; } else { $sql .= ", '0', '0', '0', '0', '0', '0','0','0' "; } } /* PASAJEROS */ for ($i = 0; $i < 10; $i++) { if (count($args["Parametros"]->Pasajeros->Pasajero) > 1) { $MC_nombreAdl = mb_convert_encoding($args["Parametros"]->Pasajeros->Pasajero[$i]->NombrePasajero, "ISO-8859-1", "UTF-8"); $MC_rut = $args["Parametros"]->Pasajeros->Pasajero[$i]->Rut; //validamos que el rut sea valido if (strtolower($args["Parametros"]->Pasajeros->Pasajero[$i]->TipoDocumento) == 'r') { if (!Funciones::validaRut($MC_rut)) { throw new SoapFault("Error", 19, "Rut no Valido"); } } $MC_fNac = $args["Parametros"]->Pasajeros->Pasajero[$i]->F_nacimiento; $MC_tipoPas = $args["Parametros"]->Pasajeros->Pasajero[$i]->TipoPasajero; $MC_nombreInf = mb_convert_encoding($args["Parametros"]->Pasajeros->Pasajero[$i]->NombrePasajero_Inf, "ISO-8859-1", "UTF-8"); $MC_rutInf = $args["Parametros"]->Pasajeros->Pasajero[$i]->Rut_Inf; $MC_fNacInf = $args["Parametros"]->Pasajeros->Pasajero[$i]->F_nacimiento_Inf; //validamos que no sea mayor a 2 años if ($MC_fNacInf != '') { $infanteEdad = Funciones::getEdad(str_replace('-', '/', $MC_fNacInf), str_replace('-', '/', $args["Parametros"]->fecha_in)); if ($infanteEdad > 2) { throw new SoapFault("Error", 20, "No es un infant edad mayor a 2"); } } $MC_tratoPax = $args["Parametros"]->Pasajeros->Pasajero[$i]->tratoPax; $sql .= ", '{$MC_nombreAdl}', '{$MC_rut}', '{$MC_fNac}', '{$MC_tipoPas}', '{$MC_nombreInf}', '{$MC_rutInf}', '{$MC_fNacInf}', '{$MC_tratoPax}' "; } else { if ($i < 1) { $MC_nombreAdl = mb_convert_encoding($args["Parametros"]->Pasajeros->Pasajero->NombrePasajero, "ISO-8859-1", "UTF-8"); $MC_rut = $args["Parametros"]->Pasajeros->Pasajero->Rut; if (strtolower($args["Parametros"]->Pasajeros->Pasajero->TipoDocumento) == 'r') { if (!Funciones::validaRut($MC_rut)) { throw new SoapFault("Error", 19, "Rut no Valido"); } } $MC_fNac = $args["Parametros"]->Pasajeros->Pasajero->F_nacimiento; $MC_tipoPas = $args["Parametros"]->Pasajeros->Pasajero->TipoPasajero; $MC_nombreInf = mb_convert_encoding($args["Parametros"]->Pasajeros->Pasajero->NombrePasajero_Inf, "ISO-8859-1", "UTF-8"); $MC_rutInf = $args["Parametros"]->Pasajeros->Pasajero->Rut_Inf; $MC_fNacInf = $args["Parametros"]->Pasajeros->Pasajero->F_nacimiento_Inf; if ($MC_fNacInf != '') { $infanteEdad = Funciones::getEdad(str_replace('-', '/', $MC_fNacInf), str_replace('-', '/', $args["Parametros"]->fecha_in)); if ($infanteEdad >= 2) { throw new SoapFault("Error", 20, "No es un infant edad mayor a 2"); } } $MC_tratoPax = $args["Parametros"]->Pasajeros->Pasajero->tratoPax; } else { $MC_nombreAdl = ''; $MC_rut = ''; $MC_fNac = ''; $MC_tipoPas = ''; $MC_nombreInf = ''; $MC_rutInf = ''; $MC_fNacInf = ''; $MC_tratoPax = ''; } $sql .= ", '{$MC_nombreAdl}', '{$MC_rut}', '{$MC_fNac}', '{$MC_tipoPas}', '{$MC_nombreInf}', '{$MC_rutInf}', '{$MC_fNacInf}', '{$MC_tratoPax}' "; } } $sql .= ", '" . $this->IntConvert($args["Parametros"]->totventa) . "' "; $totalVentaFinal = $this->IntConvert($args["Parametros"]->totventa); $procesoReserva = $reserva->H2H_CREA_FILE($sql); //echo $sql; exit; if ($procesoReserva) { $mC_TC_codigo = trim($procesoReserva->getCodigo()); $mC_TC_mensaje = mb_convert_encoding(trim($procesoReserva->getMensaje()), "UTF-8"); $mC_TC_file = trim($procesoReserva->getFile()); $mC_TC_venta = ''; $mC_TC_tipo_moneda = ''; ${$mC_TC_cambio} = ''; //RESERVA EXITOSA if ($mC_TC_codigo == 1) { //CARGA MODELO DE RESERVA $LM_reserva = $this->loadModel('reserva'); $reserva->insertPagos($mC_TC_file, $totalVentaFinal, $nombre_principal, $email_principal, $telefono_principal); //$mC_TC_file='190306'; $MC_CodigoBloqueo='2014FLN019'; //TRAER DATOS DE LA TABLA FILE $reserFinal = $reserva->getFileOK($mC_TC_file); if ($reserFinal) { $mC_TC_venta = $reserFinal->getTotVenta(); $mC_TC_tipo_moneda = $reserFinal->getMoneda(); $mC_TC_cambio = $reserFinal->getCambio(); $reserva->insertLog($mC_TC_codigo, $mC_TC_mensaje, $mC_TC_file, $mC_TC_venta, $mC_TC_tipo_moneda, $id_agen); include ROOT . 'views' . DS . 'cartas' . DS . 'parseCarta.php'; $this->loadDTO('usuarioH2h'); $correo = $reserva->getCorreo($id_agen); //PARSEA INFORME HTML $this->getLibrary('class.phpmailer'); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = MAIL_HOST; $mail->Port = 25; $mail->From = MAIL_USER; $mail->FromName = 'Panamericana Online H2H'; $mail->CharSet = 'UTF-8'; $mail->Subject = 'Confirmacion de reserva online: ' . $mC_TC_file; $mail->MsgHTML($mC_HTML); //$mail->AltBody = 'Su servidor de correo no soporta html'; if ($correo->getCorreoVendedor() != '') { $mail->AddAddress($correo->getCorreoVendedor(), ""); } //$mail->AddAddress("*****@*****.**","Nombre 02"); if ($correo->getCorreoEjecutivo() != '') { $mail->AddCC($correo->getCorreoEjecutivo()); } //$mail->AddBCC($MC_correoOculto); $mail->SMTPAuth = MAIL_AUT; $mail->Username = MAIL_USER; $mail->Password = MAIL_PASS; $mail->Send(); } else { $mC_HTML = 'Error al enviar el mail'; } } $xmlResponse = array("CODIGO" => $mC_TC_codigo, "MENSAJE" => $mC_TC_mensaje, "FILE" => $mC_TC_file, "VENTA" => $mC_TC_venta, "TIPO_MONEDA" => $mC_TC_tipo_moneda, "CAMBIO" => $mC_TC_cambio); return $xmlResponse; } else { throw new SoapFault("Sin registros", null, "Error al realizar la reserva"); } } else { throw new SoapFault("Sin registros", null, "Usuario o password son incorrectos"); } } else { throw new SoapFault("Sin registros", null, "Usuario o password son incorrectos"); } } }