/** * Remove comanda * * @param \AppBundle\Entity\Pedido $comanda */ public function removeComanda(\AppBundle\Entity\Pedido $comanda) { $this->comanda->removeElement($comanda); }
/** * Remove pedidos * * @param \AppBundle\Entity\Pedido $pedidos */ public function removePedido(\AppBundle\Entity\Pedido $pedidos) { $this->pedidos->removeElement($pedidos); }
/** * @Route("/cambiar/{pedido}", name="terminado") */ public function cambiarAction(Pedido $pedido) { $em = $this->getDoctrine()->getManager(); $pedido->setEstado('terminado'); // Asegurarse de que se tiene en cuenta el nuevo pedido $em->persist($pedido); // Guardar los cambios $em->flush(); return new RedirectResponse($this->generateUrl('mesa_listar')); }
/** * @Route("/realizar_pedido", name="realizar_pedido") */ public function realizarPedidoAction() { $total = 0; if (isset($_SESSION['pedido'])) { if ($_SESSION['pedido'] != '') { $em = $this->getDoctrine()->getManager(); $pedido = $_SESSION['pedido']; $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada()); //creamos un nuevo pedido $pedidoRealizado = new Pedido(); $pedidoRealizado->setEstado('pendiente'); $pedidoRealizado->setIncidencias('Sin incidencias'); $pedidoRealizado->setMesaOcupada($mesa); $em->persist($pedidoRealizado); // Guardar los cambios $em->flush(); //creamos una factura $factura = new FacturaNoPagada(); $factura->setHora(new \DateTime()); $factura->setIdPedido($pedidoRealizado->getId()); $factura->setUsuario($this->getUser()); $factura->setIdUsuario($this->getUser()->getId()); $em->persist($factura); // Guardar los cambios $em->flush(); //creamos los detalles del pedido for ($i = 0; $i < count($pedido); $i++) { $producto = $em->getRepository('AppBundle:Producto')->findOneBy(array('id' => $pedido[$i][0])); //guardamos los detalles del pedido $newPedido = new DetallePedido(); $newPedido->setPrecio($producto->getPrecio()); $newPedido->setNombreProducto($pedido[$i][0]->getNombreProducto()); $newPedido->setCantidad($pedido[$i][1]); $newPedido->setDpedido($pedidoRealizado); $newPedido->setListo(false); $em->persist($newPedido); // Guardar los cambios $em->flush(); //actualizamos la cuenta $precio = $producto->getPrecio(); $cantidad = $pedido[$i][1]; $cuenta = $mesa->getCuenta(); $mesa->setCuenta($cuenta + $precio * $cantidad); $em->persist($mesa); // Guardar los cambios $em->flush(); //descontamos los productos en el almacen //dentro del carrito buscamos los pedidos que tengan cantidad distinta de 0 para descontar los productos if ($pedido[$i][1] != 0) { $Ingredientes = $em->getRepository('AppBundle:Ingredientes')->findBy(array('nombreProducto' => $producto->getNombreProducto())); if ($Ingredientes) { for ($z = 0; $z < count($Ingredientes); $z++) { $almacen = $em->getRepository('AppBundle:Almacen')->findBy(array('nombreIngrediente' => $Ingredientes[$z]->getNombreIngrediente())); $stockActual = $almacen[0]->getStock(); $almacen[0]->setStock($stockActual - $Ingredientes[$z]->getCantidad() * $pedido[$i][1]); $em->persist($almacen[0]); // Guardar los cambios $em->flush(); } } } //guardamos la factura $usuario1 = $em->getRepository('AppBundle:Usuario')->findOneById($this->getUser()->getId()); $usuario1->setFactura($mesa->getCuenta()); $em->persist($usuario1); // Guardar los cambios $em->flush(); } $this->addFlash('notice', 'Pedido realizado!'); } $em = $this->getDoctrine()->getManager(); $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada()); $producto = new Producto(); $_SESSION['pedido'] = ''; $pedido = null; return $this->render('default/cuenta.html.twig', ['producto' => $producto, 'mesa' => $mesa, 'total' => $total, 'pedido' => $pedido]); } else { //Se muestra la cuenta sin pedidos. $em = $this->getDoctrine()->getManager(); $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada()); $producto = new Producto(); $pedido = null; return $this->render('default/cuenta.html.twig', ['producto' => $producto, 'mesa' => $mesa, 'total' => $total, 'pedido' => $pedido]); } }