Пример #1
0
 /**
  *
  * 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');
 }