%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/MaintenanceBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/MaintenanceBundle/Controller/MaintenanceController.php |
<?php namespace EEM\MaintenanceBundle\Controller; use EEM\MaintenanceBundle\Entity\Maintenance; use EEM\MaintenanceBundle\Entity\MaintenancePiece; use EEM\MaintenanceBundle\Entity\PieceRechange; 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\BarcodeGeneratorHTML; use EEM\FonctionnaliteBundle\Service\HistoriqueService; /** * Maintenance controller. * * @Route("/admin/maintenance") */ class MaintenanceController extends Controller { /** * Lists all maintenance entities. * * @Route("/", name="maintenance_index") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function indexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $form = $this->createForm('EEM\MaintenanceBundle\Form\MaintenanceSearchType'); $form->handleRequest($request); if ($form->isSubmitted()) { $url = $this->buildSearchUrl($request->request->all()); if (!empty($url)) { return $this->redirectToRoute('maintenance_index', $url); } } $paginator = $this->get('knp_paginator'); $maintenances = $paginator->paginate( $em->getRepository('EEMMaintenanceBundle:Maintenance')->MyFindAll($request->query->all()), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 10/* limit per page */ ); return $this->render('@EEMMaintenance/maintenance/index.html.twig', array( 'maintenances' => $maintenances, 'form' => $form->createView(), )); } /** * Lists all maintenance entities. * * @Route("/suivi", name="maintenance_suivi") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function suiviAction(Request $request) { $em = $this->getDoctrine()->getManager(); $maintenances = $em->getRepository('EEMMaintenanceBundle:Maintenance')->findAll(); $ventes = $em->getRepository('EEMVenteBundle:Vente')->findAll(); $tab_suivi = []; foreach ($maintenances as $maintenance) { $date = strtotime($maintenance->getDateReception()->format('Y-m-d')); foreach ($maintenance->getMaintenancePieces() as $maintenance_piece) { if ($maintenance_piece->getArticle()) { $name = $maintenance_piece->getArticle()->getArticleComplet(); } else { $name = $maintenance_piece->getService(); } $tab_suivi[$date][] = [ 'name' => $name, 'prixAchat' => $maintenance_piece->getPrixAchat(), 'prixVente' => $maintenance_piece->getPrixVente(), ]; } } foreach ($ventes as $vente) { $date = strtotime($vente->getDateVente()->format('Y-m-d')); foreach ($vente->getLigneVentes() as $ligneVente) { if ($ligneVente->getArticle()->getFamille()->getPieceRechange() == true) { $tab_suivi[$date][] = [ 'name' => $ligneVente->getArticle()->getArticleComplet(), 'qte' => $ligneVente->getQte(), 'prixAchat' => $ligneVente->getPrixAchat(), 'prixVente' => $ligneVente->getPrixVente(), ]; } } } krsort($tab_suivi); return $this->render('@EEMMaintenance/maintenance/suivi.html.twig', array( 'maintenances' => $maintenances, 'tab_suivi' => $tab_suivi, )); } /** * Creates a new maintenance entity. * * @Route("/new", name="maintenance_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function newAction(Request $request) { $em = $this->getDoctrine()->getManager(); $maintenance = new Maintenance(); $form = $this->createForm('EEM\MaintenanceBundle\Form\MaintenanceType', $maintenance); $form->handleRequest($request); $data = $request->request->all(); $tab_piece = []; $nb_err = 0; //echo "<pre>".print_r($data,1)."</pre>"; if (isset($data['index']) && !empty($data['index'])) { for ($i = 0; $i < $data['index']; $i++) { if (isset($data['nom_piece_' . $i])) { $tab_piece[$i]['id_maintenance_piece'] = ''; $tab_piece[$i]['id'] = $data['id_piece_' . $i]; $tab_piece[$i]['nom']['val'] = $data['nom_piece_' . $i]; $tab_piece[$i]['prix_vente']['val'] = $data['prix_vente_' . $i]; $tab_piece[$i]['prix_achat']['val'] = $data['prix_achat_' . $i]; if (empty($data['nom_piece_' . $i])) { $tab_piece[$i]['nom']['err'] = 1; $nb_err++; } if (empty($data['prix_vente_' . $i]) || in_array($data['prix_vente_' . $i], ['0.000', '0'])) { $tab_piece[$i]['prix_vente']['err'] = 1; $nb_err++; } } } } if ($form->isSubmitted() && $form->isValid() && $nb_err == 0) { $maintenance->setBarCode($this->genererBarCode()); $em->persist($maintenance); $em->flush(); $ligne_benefice = 0; $historiqueService=new HistoriqueService($em); foreach ($tab_piece as $ligne_piece) { if ($ligne_piece['nom']['val'] != '' && $ligne_piece['prix_vente']['val'] != '') { $maintenance_piece = new MaintenancePiece(); if ($ligne_piece['id'] != '') { $article = $em->getRepository('EEMArticleBundle:Article')->find($ligne_piece['id']); $maintenance_piece->setArticle($article); $maintenance_piece->setService(null); $article->setQte($article->getQte() - 1); } else { $maintenance_piece->setArticle(null); $maintenance_piece->setService($ligne_piece['nom']['val']); } $maintenance_piece->setPrixVente($ligne_piece['prix_vente']['val']); $maintenance_piece->setPrixAchat($ligne_piece['prix_achat']['val']); $ligne_benefice += floatval($ligne_piece['prix_vente']['val']) - floatval($ligne_piece['prix_achat']['val']); $maintenance_piece->setMaintenance($maintenance); $em->persist($maintenance_piece); $em->flush(); if($maintenance_piece->getArticle()){ $historiqueService->HistoriqueMaintenance($article,$maintenance_piece->getId(),'Pièce de rechange utilisé',1); } } } $reste_payer = floatval($maintenance->getPrixVente()) - floatval($maintenance->getAvance()); $maintenance->setRestePayer($reste_payer); $maintenance->setBenefice($ligne_benefice); $em->flush(); return $this->redirectToRoute('maintenance_show', array('id' => $maintenance->getId())); } return $this->render('@EEMMaintenance/maintenance/new.html.twig', array( 'maintenance' => $maintenance, 'tab_piece' => $tab_piece, 'articles' => $em->getRepository('EEMArticleBundle:Article')->recherchePieceRechange(), 'form' => $form->createView(), )); } /** * Finds and displays a maintenance entity. * * @Route("/add_ligne_piece", name="add_ligne_piece") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function addLignePieceAction() { return $this->render('@EEMMaintenance/maintenance/add_ligne_piece_rechange.html.twig', array()); } /** * Creates a new article entity. * * @Route("/recup_maintenance_barcode", name="recup_maintenance_barcode") * @Method({"GET", "POST"}) */ public function recupMaintenanceBarcodeAction(Request $request) { $em = $this->getDoctrine()->getManager(); $code_barre = $request->request->get('code_barre'); $maintenance = $em->getRepository('EEMMaintenanceBundle:Maintenance')->findOneBy(['barCode' => $code_barre]); if ($maintenance) { if ($maintenance->getDateSortie()) { $tab_json = [ 'reponse' => 'sortie', 'date_sortie' => $maintenance->getDateSortie()->format('d-m-Y'), ]; } else { $maintenance->setDateSortie(new \DateTime()); $em->flush(); $article = $maintenance->getMarque() . ' ' . $maintenance->getModele(); if ($maintenance->getNumSerie() != '') { $article .= ' <small>[' . $maintenance->getNumSerie() . ']</small>'; } $tab_json = [ 'reponse' => 'oui', 'reste_payer' => $maintenance->getRestePayer(), 'client' => $maintenance->getNomClient(), 'article' => $article, ]; } } else { $tab_json = [ 'reponse' => 'non', ]; } return new Response(json_encode($tab_json)); } /** * Lists all locataire entities. * * @Route("/imprimer-recu/{id}", name="maintenance_print_recu") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function uploadPdfAction(Maintenance $maintenance) { //header("Content-type: application/force-download"); //header('Content-Disposition: attachment; filename=' . rand(1000, 9999) . '.pdf'); $generator = new BarcodeGeneratorHTML(); $barcode = $generator->getBarcode($maintenance->getBarCode(), $generator::TYPE_CODE_128); $html = $this->renderView('@EEMMaintenance/maintenance/generer_recu.html.twig', [ 'maintenance' => $maintenance, 'liste_panne' => $maintenance->liste_panne(), 'barcode' => $barcode, '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 maintenance entity. * * @Route("/{id}", name="maintenance_show") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function showAction(Maintenance $maintenance) { $deleteForm = $this->createDeleteForm($maintenance); $generator = new BarcodeGeneratorHTML(); $barcode = $generator->getBarcode($maintenance->getBarCode(), $generator::TYPE_CODE_128); return $this->render('@EEMMaintenance/maintenance/show.html.twig', array( 'maintenance' => $maintenance, 'liste_panne' => $maintenance->liste_panne(), 'barcode' => $barcode, 'delete_form' => $deleteForm->createView(), )); } /** * Finds and displays a maintenance entity. * * @Route("/{id}/emis", name="maintenance_emis") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function emettreMaintenanceAction(Maintenance $maintenance) { $em = $this->getDoctrine()->getManager(); $maintenance->setDateSortie(new \DateTime()); $em->flush(); return $this->redirectToRoute('maintenance_index'); } /** * Displays a form to edit an existing maintenance entity. * * @Route("/{id}/edit", name="maintenance_edit") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function editAction(Request $request, Maintenance $maintenance) { if ($maintenance->getDateSortie()) { return $this->redirectToRoute('maintenance_show', array('id' => $maintenance->getId())); } $em = $this->getDoctrine()->getManager(); $historiqueService=new HistoriqueService($em); $deleteForm = $this->createDeleteForm($maintenance); $editForm = $this->createForm('EEM\MaintenanceBundle\Form\MaintenanceType', $maintenance); $editForm->handleRequest($request); $data = $request->request->all(); $tab_maintenance_piece_id = []; foreach ($maintenance->getMaintenancePieces() as $ligne_piece) { $tab_maintenance_piece_id[$ligne_piece->getId()] = $ligne_piece->getId(); } $tab_piece = []; $nb_err = 0; if (isset($data['index']) && !empty($data['index'])) { for ($i = 0; $i < $data['index']; $i++) { if (isset($data['nom_piece_' . $i])) { $tab_piece[$i]['id'] = $data['id_piece_' . $i]; $tab_piece[$i]['id_maintenance_piece'] = $data['id_maintenance_piece_' . $i]; $tab_piece[$i]['nom']['val'] = $data['nom_piece_' . $i]; $tab_piece[$i]['prix_vente']['val'] = $data['prix_vente_' . $i]; $tab_piece[$i]['prix_achat']['val'] = $data['prix_achat_' . $i]; if (empty($data['nom_piece_' . $i])) { $tab_piece[$i]['nom']['err'] = 1; $nb_err++; } if (empty($data['prix_vente_' . $i]) || $data['prix_vente_' . $i] == '0.000' || $data['prix_vente_' . $i] == '0') { $tab_piece[$i]['prix_vente']['err'] = 1; $nb_err++; } } } } else { $i = 0; foreach ($maintenance->getMaintenancePieces() as $ligne_piece) { if ($ligne_piece->getArticle()) { $article = $ligne_piece->getArticle(); $tab_piece[$i]['id'] = $article->getId(); $tab_piece[$i]['nom']['val'] = $article->getArticleComplet(); } else { $tab_piece[$i]['id'] = ''; $tab_piece[$i]['nom']['val'] = $ligne_piece->getService(); } $tab_piece[$i]['prix_vente']['val'] = $ligne_piece->getPrixVente(); $tab_piece[$i]['prix_achat']['val'] = $ligne_piece->getPrixAchat(); $tab_piece[$i]['id_maintenance_piece'] = $ligne_piece->getId(); $i++; } } if ($editForm->isSubmitted() && $editForm->isValid() && $nb_err == 0) { foreach ($tab_piece as $ligne_piece) { if (in_array($ligne_piece['id_maintenance_piece'], $tab_maintenance_piece_id)) { unset($tab_maintenance_piece_id[$ligne_piece['id_maintenance_piece']]); } } foreach ($tab_piece as $ligne_piece) { if ($ligne_piece['nom']['val'] != '' && $ligne_piece['prix_vente']['val'] != '') { if ($ligne_piece['id_maintenance_piece'] != '') { $maintenance_piece = $em->getRepository('EEMMaintenanceBundle:MaintenancePiece')->find($ligne_piece['id_maintenance_piece']); $old_qte = 1; } else { $maintenance_piece = new MaintenancePiece(); $old_qte = 0; } if ($ligne_piece['id'] != '') { $article = $em->getRepository('EEMArticleBundle:Article')->find($ligne_piece['id']); $maintenance_piece->setArticle($article); $maintenance_piece->setService(null); $article->setQte($article->getQte() + $old_qte - 1); if($old_qte==0){ $historiqueService->HistoriqueMaintenance($article,$maintenance_piece->getId(),'Pièce de rechange utilisé',1); } } else { $maintenance_piece->setArticle(null); $maintenance_piece->setService($ligne_piece['nom']['val']); } $maintenance_piece->setPrixVente($ligne_piece['prix_vente']['val']); $maintenance_piece->setPrixAchat($ligne_piece['prix_achat']['val']); $maintenance_piece->setMaintenance($maintenance); $em->persist($maintenance_piece); $em->flush(); } } foreach ($tab_maintenance_piece_id as $maintenance_piece_id) { $maintenance_piece = $em->getRepository('EEMMaintenanceBundle:MaintenancePiece')->find($maintenance_piece_id); if ($maintenance_piece->getArticle()) { $piece_rechange = $maintenance_piece->getArticle(); $piece_rechange->setQte($piece_rechange->getQte() + 1); $historiqueService->HistoriqueMaintenance($piece_rechange,$maintenance_piece->getId(),'Retour pièce de rechange',1); } $em->remove($maintenance_piece); } $em->flush(); $benefice = 0; foreach ($maintenance->getMaintenancePieces() as $maintenancePiece) { $benefice += floatval($maintenancePiece->getPrixVente()) - floatval($maintenancePiece->getPrixAchat()); } $reste_payer = floatval($maintenance->getPrixVente()) - floatval($maintenance->getAvance()); $maintenance->setBenefice($benefice); $maintenance->setRestePayer($reste_payer); $em->persist($maintenance); $em->flush(); return $this->redirectToRoute('maintenance_show', array('id' => $maintenance->getId())); } return $this->render('@EEMMaintenance/maintenance/edit.html.twig', array( 'maintenance' => $maintenance, 'tab_piece' => $tab_piece, 'articles' => $em->getRepository('EEMArticleBundle:Article')->recherchePieceRechange(), 'form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a maintenance entity. * * @Route("/{id}/delete", name="maintenance_delete") * @Method("DELETE") * @Security("has_role('ROLE_USER')") */ public function deleteAction(Request $request, Maintenance $maintenance) { $form = $this->createDeleteForm($maintenance); $form->handleRequest($request); $em = $this->getDoctrine()->getManager(); $historiqueService=new HistoriqueService($em); if ($form->isSubmitted() && $form->isValid()) { foreach ($maintenance->getMaintenancePieces() as $maintenance_piece) { if ($maintenance_piece->getArticle()) { $article = $maintenance_piece->getArticle(); $article->setQte($article->getQte() + 1); $historiqueService->HistoriqueMaintenance($article,$maintenance_piece->getId(),'Retour pièce de rechange',1); } $em->flush(); } $em->remove($maintenance); $em->flush(); } return $this->redirectToRoute('maintenance_index'); } /** * Creates a form to delete a maintenance entity. * * @param Maintenance $maintenance The maintenance entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Maintenance $maintenance) { return $this->createFormBuilder() ->setAction($this->generateUrl('maintenance_delete', array('id' => $maintenance->getId()))) ->setMethod('DELETE') ->getForm(); } function genererBarCode() { //$caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $caracteres = '0123456789'; $longueurMax = strlen($caracteres); $chaineAleatoire = ''; for ($i = 0; $i < 13; $i++) { $chaineAleatoire .= $caracteres[rand(0, $longueurMax - 1)]; } return $chaineAleatoire; } private function buildSearchUrl($data) { $url = []; foreach ($data as $k => $v) { if (isset($data['seach_maintenance']['client']) && !empty($data['seach_maintenance']['client'])) { $url['client'] = $data['seach_maintenance']['client']; } } return $url; } }