src/Controller/ReglementController.php line 157

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Billing;
  4. use App\Entity\Reglement;
  5. use App\Entity\Site;
  6. use App\Form\Reglement\CancelReglementType;
  7. use App\Form\Reglement\FilterType;
  8. use App\Form\Reglement\ReglementType;
  9. use App\Repository\BillingRepository;
  10. use App\Repository\CompanyRepository;
  11. use App\Repository\ReglementRepository;
  12. use App\Service\PaytweakService;
  13. use App\Traits\Autowired\Vendor\EntityManagerTrait;
  14. use Doctrine\Persistence\ManagerRegistry;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  21. /**
  22.  * @Route("/reglement")
  23.  */
  24. class ReglementController extends AbstractController
  25. {
  26.     use EntityManagerTrait;
  27.     /**
  28.      * @Route("/liste")
  29.      * @Template()
  30.      */
  31.     public function index(
  32.         Request $request,
  33.         ReglementRepository $repository,
  34.         CompanyRepository $companyRepository,
  35.         ManagerRegistry $em
  36.     )
  37.     {
  38.         $entityManager $em->getManager();
  39.         $reglements $repository->findBy([], ['id' => 'DESC'],300);
  40.         $societes $companyRepository->findAll();
  41.         $filterForm $this->createForm(FilterType::class);
  42.         $company null;
  43.         $client null;
  44.         $date null;
  45.         // filter
  46.         $reglementsRemise $repository->findForRemise($client,$datenull$company);
  47.         $sites $em->getRepository(Site::class)->findAll();
  48.         $filterForm->handleRequest($request);
  49.         if ($filterForm->isSubmitted() && $filterForm->isValid()) {
  50.             $billing $filterForm['billing']->getData();
  51.             $reference $filterForm['reference']->getData();
  52.             $ttc $filterForm['ttc']->getData();
  53.             $company $filterForm['company']->getData();
  54.             $mode $filterForm['mode']->getData();
  55.             $statut $filterForm['statut']->getData();
  56.             $site $filterForm['site']->getData();
  57.             $client $filterForm['client']->getData();
  58.             $date $filterForm['date']->getData();
  59.             $dateEnd $filterForm['dateEnd']->getData();
  60.             //global list
  61.             $reglements $repository->filter($mode$client$date$dateEnd$company$site$statutfalse$billing$reference$ttc);
  62.             $reglementsRemise $repository->findForRemise($client,$date$dateEnd$company);
  63.         }
  64.         $solde $request->request->get('billing_solde');
  65.         if($request->isMethod(Request::METHOD_POST) && $solde) {
  66.             $remise $request->request->get('remise');
  67.             $date $request->request->get('date');
  68.             $societe $request->request->get('societe');
  69.             $societe $companyRepository->find($societe);
  70.             $reglementSelected $request->request->get('reglements');
  71.             $dateRemise $date date_create_from_format('d-m-Y'$date): null;
  72.             if($reglementSelected){
  73.                 // a voir si création de remise.
  74.                 foreach ($reglementSelected as $reglementSelect){
  75.                     $reglement$repository->find($reglementSelect);
  76.                     if(!$remise){
  77.                         continue;
  78.                     }
  79.                     $reglement->setNumeroRemise($remise);
  80.                     if($date && $dateRemise){
  81.                         $reglement->setDateRemiseChaque($dateRemise);
  82.                     }
  83.                     if($societe){
  84.                         $reglement->setCompany($societe);
  85.                     }
  86.                     $entityManager->persist($reglement);
  87.                 }
  88.                 $entityManager->flush();
  89.             }
  90.         }
  91. //        $total = 0;
  92. //        /** @var Reglement $reglement */
  93. //        foreach ($reglements as $reglement){
  94. //            $total += $reglement->getTtc();
  95. //        }
  96.         return  [
  97.             'company'=> $company,
  98.             'societes' => $societes,
  99.             'formFilter' => $filterForm->createView(),
  100.             'reglements' => $reglements,
  101.             'reglementsRemise' => $reglementsRemise,
  102.             'sites' => $sites,
  103.            // 'total' => $total
  104.         ];
  105.     }
  106.     /**
  107.      * @Route("/paytweak/webhook")
  108.      * @Template()
  109.      */
  110.     public function webhook(Request $requestBillingRepository $billingRepositoryReglementRepository $repositoryCompanyRepository $companyRepository)
  111.     {
  112.         $entityManager $this->getDoctrine()->getManager();
  113.         $notice =$request->request->get('notice');
  114.         if($notice == PaytweakService::NOTICE_PAYMENT){
  115.             $orderId =$request->request->get('order_id');
  116.             $status =$request->request->get('status');
  117.             $reason =$request->request->get('reason');
  118.             $amount $request->request->get('amount');
  119.             $date_payment $request->request->get('date_payment');
  120.             $authorisation_id $request->request->get('authorisation_id');
  121.             $transaction_id $request->request->get('transaction_id');
  122.         }
  123.         return new JsonResponse();
  124.     }
  125.     /**
  126.      * @Route("/edit/{id}", name="reglement_edit", methods={"GET","POST"})
  127.      * @Template()
  128.      */
  129.     public function edit(Request $requestReglement $reglement)
  130.     {
  131.         $entityManager $this->getDoctrine()->getManager();
  132.         $form $this->createForm(ReglementType::class, $reglement);
  133.         $cancelForm $this->createForm(CancelReglementType::class, $reglement);
  134.         $form->handleRequest($request);
  135.         //dump($form->getErrors());die;
  136.         if ($form->isSubmitted() && $form->isValid()) {
  137.             $entityManager->persist($reglement);
  138.             $entityManager->flush();
  139.             return $this->redirectToRoute('app_reglement_index');
  140.         }
  141.         $cancelForm->handleRequest($request);
  142.         if ($cancelForm->isSubmitted() && $cancelForm->isValid()) {
  143.             foreach ($reglement->getBillings() as $billing){
  144.                 $billing->setSolde($billing->getTtc());
  145.                 $billing->setStatus(Billing::STATUS_SENT);
  146.                 $this->em->persist($billing);
  147.             }
  148.             $reglement->setStatus(Reglement::STATUS_CANCEL);
  149.             $this->em->persist($reglement);
  150.             $this->em->flush();
  151.             return $this->redirectToRoute('app_reglement_index');
  152.         }
  153.         return [
  154.             'cancelForm' => $cancelForm->createView(),
  155.             'form' => $form->createView(),
  156.             'reglement' => $reglement
  157.         ];
  158.     }
  159.     /**
  160.      * @Route("/cancel/{id}", name="reglement_cancel", methods={"GET","POST"})
  161.      */
  162.     public function cancel(Request $requestReglement $reglement)
  163.     {
  164.         foreach ($reglement->getBillings() as $billing){
  165.             $billing->setSolde($billing->getTtc());
  166.             $billing->setStatus(Billing::STATUS_SENT);
  167.             $this->em->persist($billing);
  168.         }
  169.         $reglement->setStatus(Reglement::STATUS_CANCEL);
  170.         $this->em->persist($reglement);
  171.         $this->em->flush();
  172.         return $this->redirectToRoute('app_reglement_index');
  173.     }
  174. }