/** * * This function send the data to the order component * @param $data */ function send($data = array()) { $mainframe =& JFactory::getApplication(); //Instancio la clase controlador de ordenes y envio los datos para ser guardados require_once 'components/com_orders/controller.php'; $objContOrder = new OrdersController(); //Si no llegan los datos por parametros los obtengo de sesion if (count($data) <= 0) { //Indica que se acabo la session if (!isset($_SESSION["plan"]["bookingDetail"])) { $mainframe->redirect('index.php', JText::_('CP.GUEST.NO.SESSION'), 'error'); } $data = $_SESSION["plan"]["bookingDetail"]; } //Si ya no existe la session muestro el mensaje y vuelvo al index if (!is_array($data) || !isset($data["name"])) { $mainframe->redirect('index.php', JText::_('CP.MSG.ERROR.SESSION.ORDER'), 'error'); } elseif (!isset($data["booking"])) { $data["confirm"] = false; //Si hay stock llamo al servicio que descuenta if ($data["haveStock"]) { //get the instance of the model $model = $this->getModel("plan"); //Obtengo el xml para el llamado del booking $xmlRequest = $model->buildBookingXmlRequest($data); //Se adiciona el numero de niƱos a la cantidad de personas asignadas previamente en rooms->room->quantity $xmlRequest->rooms->room->quantity = $xmlRequest->rooms->room->quantity + $data[guest][childs]; //send the request to service $response = $this->helper->callService($xmlRequest); //Asigno la respuesta del descuento de stock al objeto respuesta $data["booking_response"] = $response["data"]["response"]; if ($response["data"]["response"]["id"] == 1) { $data["confirm"] = true; //$objContOrder->confirmOrder($data["booking"]); } } if (!$data["confirm"] && $data["payment"] == "credit") { $data["payment"] = 'agency'; $data["haveStock"] = false; $app =& JFactory::getApplication(); $app->enqueueMessage(JText::_("CP.MSG.ERROR.HISTORY.ORDER.STOCK.INAVAIBLE"), 'Notice'); //$mainframe->redirect(JRoute::_('index.php?option=com_catalogo_planes&view=plan&layout=guest&payment=false'),JText::_('CP.MSG.ERROR.STOCK.INAVAIBLE'),'error'); } //Esta session me indica que ya se envio la orden a guardar asi que no puede volver a la pantalla de pasajeros $_SESSION["plan"]["booking"] = true; try { //Envio los datos al componente de ordenes para que sea guardado $arrayResponse = $objContOrder->saveProduct($data, "plans"); } catch (Exception $e) { $mainframe->redirect('index.php', JText::_('CP.MSG.ERROR.HISTORY.ORDER'), 'error'); die; } //Si la respuesta es verdadera se realiza el descuento en el inventario si lo hay if (isset($arrayResponse) && $arrayResponse["response"]) { $haveStock = true; //Agrego el id del booking al identificador de la reserva $data["booking"] = (string) $arrayResponse["idOrder"]; $_SESSION["plan"]["bookingDetail"]["booking"] = (string) $arrayResponse["idOrder"]; } else { //Si no envio a la pantalla de error if (!isset($data["booking"])) { $mainframe->redirect('index.php', JText::_('CP.MSG.ERROR.HISTORY.ORDER'), 'error'); } } } //Envio el resto de la informacion al componente de ordenes para que este la maneje $objContOrder->confirmOrder($data, 'plans'); }