src/Controller/Movimientos/MovimientoStockController.php line 96

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Movimientos;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Doctrine\ORM\EntityRepository;
  8. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  9. use App\Entity\Almacen\Articulo;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  12. use App\Entity\Almacen\Deposito;
  13. use App\Entity\Movimientos\MovimientoStock;
  14. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  16. /**
  17.  * @IsGranted("IS_AUTHENTICATED_FULLY")
  18. **/
  19. class MovimientoStockController extends AbstractController
  20. {
  21.     private function getFormSelect()
  22.     {
  23.         return $this->createFormBuilder()
  24.                      ->add('articulo'
  25.                            EntityType::class, 
  26.                            [
  27.                                 'class' => Articulo::class,
  28.                                 'query_builder' => function (EntityRepository $er) {
  29.                                                                                         return $er->createQueryBuilder('u')
  30.                                                                                                   ->andWhere('u.activo = :activo')
  31.                                                                                                   ->setParameter('activo'true)
  32.                                                                                                   ->orderBy('u.descripcion''ASC');
  33.                                                                                     }
  34.                             ])
  35.                     ->add('deposito'EntityType::class, 
  36.                                 [
  37.                                     'class' => Deposito::class,
  38.                                 ]
  39.                             )
  40.                     ->add('cargar'SubmitType::class)
  41.                      ->getForm();
  42.     }
  43.     private function getFormInicioMovimiento(AuthorizationCheckerInterface $authorizationChecker)
  44.     {
  45.         $movimientos = array();
  46.         if ($authorizationChecker->isGranted('ROLE_ADMIN_MOVIMIENTOS'))
  47.         {
  48.             $movimientos['Ajuste de Stock'] = 'as';
  49.         }
  50.         $movimientos array_merge($movimientos, array(
  51.                                                                     'Orden Compra' => 'oc',
  52.                                                                     'Orden Reparacion Interna' => 'or',
  53.                                                                     'Orden Reparacion Externa' => 'ore',
  54.                                                                     'Prestamo de Herramientas' => 'ph',
  55.                                                                     'Transferencia de Stock' => 'tr'                                  
  56.                                                                 ));
  57.         $form $this->createFormBuilder()
  58.                     ->add('tipo'
  59.                             ChoiceType::class, [
  60.                                                 'choices'  => $movimientos,
  61.                                                 ]
  62.                     )->add('next'
  63.                             SubmitType::class, [
  64.                                 'attr' => ['class' => 'btn btn-success''label' => 'Siguiente >>'],
  65.                             ])
  66.                     ->getForm();
  67.         return $form;
  68.     }
  69.     /**
  70.      * @Route("/movimientos/movimiento/stock", name="app_movimientos_movimiento_stock")
  71.      */
  72.     public function index(Request $requestAuthorizationCheckerInterface $authorizationChecker): Response
  73.     {
  74.         $form $this->getFormInicioMovimiento($authorizationChecker);
  75.         if ($request->isMethod('POST'))
  76.         {
  77.             $form->handleRequest($request);
  78.             $data $form->getData();
  79.             $tipo $data['tipo'];
  80.             switch ($tipo) {
  81.                 case "oc":
  82.                     return $this->redirectToRoute('app_movimientos_orden_compra_new', [], Response::HTTP_SEE_OTHER);
  83.                     break;
  84.                 case "tr":
  85.                     return $this->redirectToRoute('app_movimientos_transferencia_new', [], Response::HTTP_SEE_OTHER);
  86.                     break;
  87.                 case "or":
  88.                     return $this->redirectToRoute('app_movimientos_orden_reparacion_new', [], Response::HTTP_SEE_OTHER);
  89.                     break;
  90.                 case "ph":
  91.                     return $this->redirectToRoute('app_movimientos_prestamo_herramienta_new', [], Response::HTTP_SEE_OTHER);
  92.                     break;
  93.                 case "as":
  94.                     if ($authorizationChecker->isGranted('ROLE_ADMIN_MOVIMIENTOS'))
  95.                     {
  96.                         return $this->redirectToRoute('app_movimientos_ajuste_stock_new', [], Response::HTTP_SEE_OTHER);
  97.                     }
  98.                     break;
  99.                 case "ore":
  100.                     return $this->redirectToRoute('app_movimientos_orden_reparacion_externa_new', [], Response::HTTP_SEE_OTHER);
  101.                     break;
  102.             }
  103.         }
  104.         return $this->render('movimientos/movimiento_stock/index.html.twig'
  105.                              [
  106.                                 'controller_name' => 'MovimientoStockController',
  107.                                 'form' => $form->createView(),
  108.                              ]);
  109.     }
  110.     /**
  111.      * @Route("/movimientos/detalle", name="app_movimientos_detalle")
  112.      */
  113.     public function movimientos(Request $request): Response
  114.     {
  115.         $form $this->getFormSelect();
  116.         if ($request->isMethod('POST'))
  117.         {
  118.             $form->handleRequest($request);
  119.             $em $this->getDoctrine()->getManager();
  120.             $repository $em->getRepository(MovimientoStock::class);
  121.             $data $form->getData();
  122.             $articulo $data['articulo'];
  123.             $deposito $data['deposito'];
  124.             $movimientos $repository->getAllMovimientos($deposito$articulo);
  125.             $detalle = array();
  126.             foreach ($movimientos as $m)
  127.             {
  128.                 $artics $m->getArticulo($articulo);
  129.                 foreach ($artics as $a)
  130.                 {
  131.                     $detalle[] = array($m->getNumero(), $m->getFecha(),    
  132.                                        $m->getDescripcion(), $m->getDeposito(), 
  133.                                        $m->getDestino(), $m->getResponsable(), $a);
  134.                 }
  135.                 
  136.             }
  137.         return $this->render('movimientos/movimiento_stock/rsumen.html.twig'
  138.                              [
  139.                                 'form' => $form->createView(),
  140.                                 'detalle' => $detalle
  141.                              ]);
  142.         }
  143.         return $this->render('movimientos/movimiento_stock/rsumen.html.twig'
  144.                              [
  145.                                 'form' => $form->createView(),
  146.                              ]);
  147.     }
  148. }