%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/TraiteBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/TraiteBundle/Controller/TraiteController.php |
<?php namespace EEM\TraiteBundle\Controller; use EEM\FonctionnaliteBundle\Service\HistoriqueService; use EEM\FonctionnaliteBundle\Service\TresorieService; use EEM\TraiteBundle\Entity\LigneTraite; use EEM\TraiteBundle\Entity\Traite; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Spipu\Html2Pdf\Html2Pdf; use Picqer\Barcode\BarcodeGeneratorPNG; use Picqer\Barcode\BarcodeGeneratorHTML; /** * Traite controller. * * @Route("/admin/traite") */ class TraiteController extends Controller { /** * Lists all traite entities. * * @Route("/", name="traite_index") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function indexAction(Request $request) { $form = $this->createForm('EEM\TraiteBundle\Form\TraiteSearchType'); $form->handleRequest($request); if ($form->isSubmitted()) { $url = $this->buildSearchUrl($request->request->all()); if (!empty($url)) { return $this->redirectToRoute('traite_index', $url); } } $em = $this->getDoctrine()->getManager(); if (isset($request->request->all()['pay_traite'])) { $barcode = $request->request->get('barcode'); $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($barcode); $traite = $ligne_traite->getTraite(); $ligne_traite->setEtat(true); $ligne_traite->setDatePaiement(new \DateTime()); $em->persist($ligne_traite); $em->flush(); $comp = 0; foreach ($traite->getLigneTraites() as $li_traite) { if ($li_traite->getEtat() == 1) { $comp++; } } if ($traite->getNbTraite() == $comp) { $client = $traite->getclient(); $client->setEtat('non_engage'); $em->flush(); $traite->setEtat('payer'); $em->flush(); } } $paginator = $this->get('knp_paginator'); $traites = $paginator->paginate( $em->getRepository('EEMTraiteBundle:Traite')->MyFindAll($request->query->all()), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 10/* limit per page */ ); return $this->render('@EEMTraite/traite/index.html.twig', array( 'traites' => $traites, 'form' => $form->createView(), )); } /** * Lists all traite entities. * * @Route("/traite-a-payer", name="echeance_traite_index") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function echeanceTraiteIndexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $form = $this->createForm('EEM\TraiteBundle\Form\TraiteSearchType'); $form->handleRequest($request); if ($form->isSubmitted()) { $url = $this->buildSearchUrl($request->request->all()); if (!empty($url)) { return $this->redirectToRoute('echeance_traite_index', $url); } } $paginator = $this->get('knp_paginator'); $ligne_traites = $paginator->paginate( $em->getRepository('EEMTraiteBundle:LigneTraite')->echeanceTraiteIndex($request->query->all()), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 10/* limit per page */ ); return $this->render('@EEMTraite/traite/echeance_traite.html.twig', array( 'ligne_traites' => $ligne_traites, 'form' => $form->createView(), )); } /** * Creates a new traite entity. * * @Route("/new", name="traite_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function newAction(Request $request) { $traite = new Traite(); $form = $this->createForm('EEM\TraiteBundle\Form\TraiteType', $traite); $form->handleRequest($request); $em = $this->getDoctrine()->getManager(); $historiqueService=new HistoriqueService($em); if ($form->isSubmitted() && $form->isValid()) { $data = $request->request->all(); $traite->setEtat('en_cours'); $em->persist($traite); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($traite->getMontantAvance()); $article = $traite->getArticle(); $article->setQte($article->getQte() - 1); $em->persist($article); $client = $traite->getClient(); $client->setEtat('engage'); $em->flush(); $historiqueService->HistoriqueTraite($article,$traite->getId(),'Nouvelle vente',1); if ($data['eem_traitebundle_traite']['nbTraite'] == 1) { $ligne_traite = new LigneTraite(); $ligne_traite->setEtat(0); $date_echeance = date('Y-m-d', strtotime($this->convertDate($data['eem_traitebundle_traite']['dateEcheance']))); $ligne_traite->setDateEcheance(new \DateTime($date_echeance)); $ligne_traite->setMontant($data['eem_traitebundle_traite']['montantVente'] - $data['eem_traitebundle_traite']['montantAvance']); $ligne_traite->setTraite($traite); $em->persist($ligne_traite); $em->flush(); $ligne_traite->setBarCode($this->genererBarCode($ligne_traite->getId())); $em->flush(); } else { for ($nb_traite = 0; $nb_traite < $data['eem_traitebundle_traite']['nbTraite']; $nb_traite++) { $date_echeance = date('Y-m-d', strtotime("+" . $nb_traite . " months", strtotime($this->convertDate($data['eem_traitebundle_traite']['dateEcheance'])))); $ligne_traite = new LigneTraite(); $ligne_traite->setEtat(0); $ligne_traite->setDateEcheance(new \DateTime($date_echeance)); $ligne_traite->setMontant('100'); $ligne_traite->setTraite($traite); $em->persist($ligne_traite); $em->flush(); $ligne_traite->setBarCode($this->genererBarCode($ligne_traite->getId())); $em->flush(); } } return $this->redirectToRoute('traite_show', array('id' => $traite->getId())); } return $this->render('@EEMTraite/traite/new.html.twig', array( 'traite' => $traite, 'form' => $form->createView(), 'date_jour' => date('d/m/Y'), 'date_echeance' => date('d/m/Y', strtotime("+1 months", strtotime(date("Y-m-d")))) )); } /** * Creates a new traite entity. * * @Route("/traite_note", name="traite_note") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function traiteNoteAction(Request $request) { $em = $this->getDoctrine()->getManager(); $data = $request->request->all(); $id_ligne_traite = $data['id_ligne_traite']; $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($id_ligne_traite); return $this->render('@EEMTraite/traite/note_traite.html.twig', array( 'ligne_traite' => $ligne_traite, )); } /** * Creates a new traite entity. * * @Route("/save_traite_note", name="save_traite_note") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function saveTraiteNoteAction(Request $request) { $em = $this->getDoctrine()->getManager(); $data = $request->request->all(); $id_ligne_traite = $data['id_ligne_traite']; $note = $data['note_traite']; $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($id_ligne_traite); $ligne_traite->setNote($note); $em->flush(); return $this->redirectToRoute('echeance_traite_index'); } public function genererBarCode($code) { $nb_chiffre = strlen($code); $barcode = ''; for ($i = 0; $i < 10 - $nb_chiffre; $i++) { $barcode .= '0'; } $barcode .= $code; return $barcode; } /** * Lists all locataire entities. * * @Route("/traite_print/{id}", name="traite_print") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function uploadPdfAction(Traite $traite) { //header("Content-type: application/force-download"); //header('Content-Disposition: attachment; filename=' . rand(1000, 9999) . '.pdf'); $generator = new BarcodeGeneratorHTML(); $tab_bar_code = []; foreach ($traite->getLigneTraites() as $ligneTraite) { $barcode = $generator->getBarcode($ligneTraite->getBarCode(), $generator::TYPE_CODE_128); $tab_bar_code[$ligneTraite->getId()] = $barcode; } $html = $this->renderView('@EEMTraite/traite/generer_traite.html.twig', [ 'traite' => $traite, 'tab_bar_code' => $tab_bar_code, 'server' => 'http://' . $_SERVER['HTTP_HOST'], ]); $html2pdf = new Html2Pdf('P', 'A4', 'fr'); $html2pdf->writeHTML($html); $html2pdf->Output(); //readfile($this->getParameter('pdf_locataires') . '/fiche_' . $traite->getId() . '.pdf'); } /** * Finds and displays a traite entity. * * @Route("/ligne_traite_detail", name="ligne_traite_detail") * @Method("GET") */ public function LigneTraiteDetailAction(Request $request) { $em = $this->getDoctrine()->getManager(); $article = $em->getRepository('EEMArticleBundle:Article')->find($request->request->get('article')); $parameter = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $prixVente = $article->getPrixFinal(); $tab = [ 'prixVente' => $prixVente, 'prix_1m' => number_format($prixVente * (1 + ($parameter->getPercent1m() / 100)), 3, '.', ''), 'prix_2m' => number_format($prixVente * (1 + ($parameter->getPercent2m() / 100)), 3, '.', ''), 'prix_3m' => number_format($prixVente * (1 + ($parameter->getPercent3m() / 100)), 3, '.', ''), 'prix_4m' => number_format($prixVente * (1 + ($parameter->getPercent4m() / 100)), 3, '.', ''), 'prix_5m' => number_format($prixVente * (1 + ($parameter->getPercent5m() / 100)), 3, '.', ''), 'prix_6m' => number_format($prixVente * (1 + ($parameter->getPercent6m() / 100)), 3, '.', ''), ]; return new Response(json_encode($tab)); } /** * Creates a new article entity. * * @Route("/recup_ligne_traite", name="recup_ligne_traite") * @Method({"GET", "POST"}) */ public function recupLigneTraiteAction(Request $request) { $em = $this->getDoctrine()->getManager(); $code_barre = $request->request->get('code_barre'); $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->findOneBy(['barCode' => $code_barre]); if ($ligne_traite) { if ($ligne_traite->getEtat()) { $tab_json = [ 'reponse' => 'payer', 'date_payer' => $ligne_traite->getDatePaiement()->format('d-m-Y'), ]; } else { $traite = $ligne_traite->getTraite(); $ligne_traite->setEtat(true); $ligne_traite->setDatePaiement(new \DateTime()); $em->persist($ligne_traite); $em->flush(); $comp = 0; foreach ($traite->getLigneTraites() as $li_traite) { if ($li_traite->getEtat() == 1) { $comp++; } } if ($traite->getNbTraite() == $comp) { $client = $traite->getclient(); $client->setEtat('non_engage'); $em->flush(); $traite->setEtat('payer'); $em->flush(); } $tab_json = [ 'reponse' => 'oui', 'montant' => $ligne_traite->getMontant(), 'echeance' => $ligne_traite->getDateEcheance()->format('d-m-Y'), 'client' => $ligne_traite->getTraite()->getClient()->getPrenom() . ' ' . $ligne_traite->getTraite()->getClient()->getNom(), ]; $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($ligne_traite->getMontant()); } } else { $tab_json = [ 'reponse' => 'non', ]; } return new Response(json_encode($tab_json)); } /** * Finds and displays a traite entity. * * @Route("/payer_traite_bar_code", name="payer_traite_bar_code") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function payerTraiteBarCodeAction(Request $request) { $barCode = $request->request->get('barCode'); //echo $barCode . "--"; $em = $this->getDoctrine()->getManager(); $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($barCode); $msg_erreur = ''; $traite = null; if ($ligne_traite) { $traite = $ligne_traite->getTraite(); } else { $msg_erreur = "La traite n'existe pas"; } return $this->redirectToRoute('traite_index', [ 'msg_erreur' => $msg_erreur, 'traite' => $traite ]); } /** * Finds and displays a traite entity. * * @Route("/payer_traite", name="payer_traite") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function payerTraiteAction(Request $request) { $em = $this->getDoctrine()->getManager(); $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($request->request->get('id_ligne_traite')); $traite = $ligne_traite->getTraite(); $ligne_traite->setEtat(1); $ligne_traite->setDatePaiement(new \DateTime()); $em->persist($ligne_traite); $em->flush(); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($ligne_traite->getMontant()); $comp = 0; foreach ($traite->getLigneTraites() as $li_traite) { if ($li_traite->getEtat() == 1) { $comp++; } } if ($traite->getNbTraite() == $comp) { $client = $traite->getclient(); $client->setEtat('non_engage'); $em->flush(); $traite->setEtat('payer'); $em->flush(); } return new Response($ligne_traite->getDatePaiement()->format('d/m/Y')); } /** * Finds and displays a traite entity. * * @Route("/{id}", name="traite_show") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function showAction(Traite $traite) { $deleteForm = $this->createDeleteForm($traite); return $this->render('@EEMTraite/traite/show.html.twig', array( 'traite' => $traite, 'delete_form' => $deleteForm->createView(), )); } /** * Displays a form to edit an existing traite entity. * * @Route("/{id}/edit", name="traite_edit") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function editAction(Request $request, Traite $traite) { $deleteForm = $this->createDeleteForm($traite); $editForm = $this->createForm('EEM\TraiteBundle\Form\TraiteType', $traite); $editForm->handleRequest($request); if ($editForm->isSubmitted() && $editForm->isValid()) { $this->getDoctrine()->getManager()->flush(); return $this->redirectToRoute('traite_edit', array('id' => $traite->getId())); } return $this->render('@EEMTraite/traite/edit.html.twig', array( 'traite' => $traite, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a traite entity. * * @Route("/{id}/delete", name="traite_delete") * @Method("DELETE") * @Security("has_role('ROLE_USER')") */ public function deleteAction(Request $request, Traite $traite) { $form = $this->createDeleteForm($traite); $form->handleRequest($request); $em = $this->getDoctrine()->getManager(); $historiqueService=new HistoriqueService($em); if ($form->isSubmitted() && $form->isValid()) { $article = $traite->getArticle(); $article->setQte($article->getQte() + 1); $historiqueService->HistoriqueTraite($article,$traite->getId(),'Vente annulé',1); $em->persist($article); $em->remove($traite); $em->flush(); } return $this->redirectToRoute('traite_index'); } /** * Creates a form to delete a traite entity. * * @param Traite $traite The traite entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Traite $traite) { return $this->createFormBuilder() ->setAction($this->generateUrl('traite_delete', array('id' => $traite->getId()))) ->setMethod('DELETE') ->getForm(); } public function convertDate($date) { $date = str_replace('/', '-', $date); $tabDate = explode('-', $date); $enDate = $tabDate[2] . '-' . $tabDate[1] . '-' . $tabDate[0]; return $enDate; } private function buildSearchUrl($data) { $url = []; foreach ($data as $k => $v) { if (isset($data['search_traite']['client']) && !empty($data['search_traite']['client'])) { $url['client'] = $data['search_traite']['client']; } } return $url; } }