src/Controller/Stock/StockExitSlipController.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Stock;
  3. use App\Entity\User;
  4. use App\Entity\StockExitSlip;
  5. use App\Entity\StockMovement;
  6. use App\Form\Stock\StockExitSlipType;
  7. use App\Repository\StockExitSlipRepository;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use App\Repository\RegistrationStudentRegistrationRepository;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. /**
  15.  * @Route("/stock/exit-slip")
  16.  */
  17. class StockExitSlipController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/index", name="stock_exit_slip_index", methods={"GET"})
  21.      */
  22.     public function index(Request $requestPaginatorInterface $paginatorStockExitSlipRepository $stockExitSlipRepository): Response
  23.     {
  24.         $query $stockExitSlipRepository->createQueryBuilder('s')
  25.             ->orderBy('s.id''DESC')
  26.             ->getQuery();
  27.         $stockExitSlips $paginator->paginate(
  28.             $query,
  29.             $request->query->getInt('page'1),
  30.             1000
  31.         );
  32.         return $this->render('stock/stock_exit_slip/index.html.twig', [
  33.             'stock_exit_slips' => $stockExitSlips,
  34.         ]);
  35.     }
  36.     /**
  37.      * @Route("/new", name="stock_exit_slip_new", methods={"GET","POST"})
  38.      */
  39.     public function new(Request $requestStockExitSlipRepository $stockExitSlipRepository): Response
  40.     {
  41.         /** @var User $user */
  42.         $user $this->getUser();
  43.         $establishment $user->getEstablishment();
  44.         $stockExitSlip = new StockExitSlip();
  45.         $form $this->createForm(StockExitSlipType::class, $stockExitSlip);
  46.         $form->handleRequest($request);
  47.         if ($form->isSubmitted() && $form->isValid()) {
  48.             $exitSlip $stockExitSlipRepository->findOneBy([
  49.                 'registrationStudentRegistration' => $stockExitSlip->getRegistrationStudentRegistration(),
  50.                 'stockProduct' => $stockExitSlip->getStockProduct()
  51.             ]);
  52.             if($exitSlip != null) {
  53.                 $this->addFlash('warning''Un bon de sortie n° '.$exitSlip->getCode().' existe déjà pour cet élève et cet article');
  54.                 return $this->redirectToRoute('stock_exit_slip_new');
  55.             }
  56.             
  57.             $entityManager $this->getDoctrine()->getManager();
  58.             $stockExitSlip->setEstablishment($establishment);
  59.             $stockExitSlip->setCode(time());
  60.             $entityManager->persist($stockExitSlip);
  61.             try {
  62.                 $entityManager->flush();
  63.                 $this->addFlash('success'"Traitement effectué");
  64.                 $stockExitSlip->setCode('BS-'.sprintf('%05d'$stockExitSlip->getId()));
  65.                 $entityManager->flush();
  66.             } catch (\Exception $e) {
  67.                 $this->addFlash('warning''Erreur lors de la création du bon de sortie');
  68.                 $this->addFlash('info'$e->getMessage());
  69.                 return $this->redirectToRoute('stock_exit_slip_new');
  70.             }
  71.             return $this->redirectToRoute('stock_exit_slip_index', [], Response::HTTP_SEE_OTHER);
  72.         }
  73.         return $this->renderForm('stock/stock_exit_slip/new.html.twig', [
  74.             'stock_exit_slip' => $stockExitSlip,
  75.             'form' => $form,
  76.         ]);
  77.     }
  78.     /**
  79.      * @Route("/{id}/edit", name="stock_exit_slip_edit", methods={"GET","POST"})
  80.      */
  81.     public function edit(Request $requestStockExitSlip $stockExitSlip): Response
  82.     {
  83.         $form $this->createForm(StockExitSlipType::class, $stockExitSlip);
  84.         $form->handleRequest($request);
  85.         if ($form->isSubmitted() && $form->isValid()) {
  86.             $entityManager $this->getDoctrine()->getManager();
  87.             $entityManager->flush();
  88.             try {
  89.                 $entityManager->flush();
  90.             } catch (\Exception $e) {
  91.                 $this->addFlash('warning''Erreur lors de la modification du bon de sortie');
  92.                 $this->addFlash('info'$e->getMessage());
  93.             }
  94.             return $this->redirectToRoute('stock_exit_slip_edit', ['id' => $stockExitSlip->getId()]);
  95.         }
  96.         return $this->renderForm('stock/stock_exit_slip/edit.html.twig', [
  97.             'stock_exit_slip' => $stockExitSlip,
  98.             'form' => $form,
  99.         ]);
  100.     }
  101.     /**
  102.      * @Route("/delete-selection", name="stock_exit_slips_selected_delete", methods={"GET"})
  103.     */
  104.     public function deleteSelected(Request $requestStockExitSlipRepository $entityRepository): Response
  105.     {
  106.         $list $request->get('entities');
  107.         $entityManager $this->getDoctrine()->getManager();
  108.         $errors 0;
  109.         foreach ($list as $key => $id) {
  110.             $entity $entityRepository->findOneBy(['id' => intval($id)], []);
  111.             if ($entity != null) {
  112.                 if (!$entity->getIsValidated()) {
  113.                     $entityManager->remove($entity);
  114.                 }
  115.             }
  116.             
  117.         }
  118.         try {
  119.             $entityManager->flush();
  120.             $this->addFlash('success'"Traitement effectué");
  121.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  122.         } catch (\Throwable $th) {
  123.             //$th->getMessage()
  124.             $this->addFlash('warning'$th->getMessage());
  125.         }
  126.         
  127.         $this->addFlash('warning'"Traitement non effectué");
  128.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  129.     }
  130.     /**
  131.      * @Route("/validate/{id}", name="stock_exit_slip_validate", methods={"GET"})
  132.      */
  133.     public function validate(StockExitSlip $stockExitSlip): Response
  134.     {
  135.         $entityManager $this->getDoctrine()->getManager();
  136.         $stockExitSlip->setIsValidated(true);
  137.         $stockMovement = new StockMovement();
  138.         $stockMovement->setStockExitSlip($stockExitSlip);
  139.         $stockMovement->setStockWarehouse($stockExitSlip->getStockWarehouse());
  140.         $stockMovement->setStockProduct($stockExitSlip->getStockProduct());
  141.         $stockMovement->setQuantity($stockExitSlip->getQuantity());
  142.         $stockMovement->setType(StockMovement::TYPE_SORTIE);
  143.         $stockMovement->setEstablishment($stockExitSlip->getEstablishment());
  144.         $stockMovement->setCreateDate($stockExitSlip->getCreateDate());
  145.         $stockMovement->setCode(time());
  146.         $entityManager->persist($stockMovement);
  147.         try {
  148.             $entityManager->flush();
  149.             $stockMovement->setCode($stockExitSlip->getCode().'-'.$stockExitSlip->getStockProduct()->getId());
  150.             $entityManager->flush();
  151.             $this->addFlash('success'"Traitement effectué");
  152.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  153.         } catch (\Exception $e) {
  154.             $this->addFlash('warning''Erreur lors de la validation du bon de sortie');
  155.             $this->addFlash('info'$e->getMessage());
  156.         }
  157.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  158.     }
  159.     /**
  160.      * @Route("/cancel/{id}", name="stock_exit_slip_cancel", methods={"GET"})
  161.      */
  162.     public function cancel(StockExitSlip $stockExitSlip): Response
  163.     {
  164.         $entityManager $this->getDoctrine()->getManager();
  165.         $stockExitSlip->setIsValidated(false);
  166.         foreach ($stockExitSlip->getStockMovements() as $stockMovement) {
  167.             $entityManager->remove($stockMovement);
  168.         }
  169.         try {
  170.             $entityManager->flush();
  171.             $this->addFlash('success'"Traitement effectué");
  172.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  173.         } catch (\Exception $e) {
  174.             $this->addFlash('warning''Erreur lors de la suppression du bon de sortie');
  175.             $this->addFlash('info'$e->getMessage());
  176.         }
  177.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  178.     }
  179. }