%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/ArticleBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/ArticleBundle/Controller/ArticleController.php |
<?php namespace EEM\ArticleBundle\Controller; use EEM\ArticleBundle\Entity\Article; use Picqer\Barcode\BarcodeGeneratorPNG; 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; /** * Article controller. * * @Route("/admin/article") */ class ArticleController extends Controller { /** * Lists all article entities. * * @Route("/", name="article_index") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function indexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $marques = $em->getRepository('EEMArticleBundle:Marque')->findAll(); if (isset($request->query->all()['famille']) && !empty($request->query->all()['famille'])) { $marques = $em->getRepository('EEMArticleBundle:Marque')->findMarques($request->query->all()['famille']); } $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele(null); if (isset($request->query->all()['marque']) && !empty($request->query->all()['marque'])) { $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele($request->query->all()['marque']); } if (isset($request->request->all()['btn_search'])) { $url = $this->buildSearchUrl($request->request->all(), 'detail'); if (!empty($url)) { return $this->redirectToRoute('article_index', $url); } } $paginator = $this->get('knp_paginator'); $articles = $paginator->paginate( $em->getRepository('EEMArticleBundle:Article')->MyFindAll($request->query->all()), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 20/* limit per page */ ); $valeur_article = 0; $article_stocks = $em->getRepository('EEMArticleBundle:Article')->chiffreArticle($request->query->all()); foreach ($article_stocks as $article_stock) { $valeur_article += $article_stock->getQte() * $article_stock->getPrixAchat(); } $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $recharge_stocks = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); foreach ($recharge_stocks as $recharge_stock) { if ($recharge_stock->getCategory() == 'light') { $valeur_article += $recharge_stock->getQte() * ($parametre->getVenteLight() - $parametre->getAchatLight()); } if ($recharge_stock->getCategory() == 'ticket1') { $valeur_article += $recharge_stock->getQte() * ($parametre->getVenteTicket1() - $parametre->getAchatTicket1()); } if ($recharge_stock->getCategory() == 'ticket5') { $valeur_article += $recharge_stock->getQte() * ($parametre->getVenteTicket5() - $parametre->getAchatTicket5()); } if ($recharge_stock->getCategory() == 'data') { $valeur_article += $recharge_stock->getQte() * ($parametre->getVenteData() - $parametre->getAchatData()); } } return $this->render('@EEMArticle/article/index.html.twig', array( 'articles' => $articles, 'modeles' => $modeles, 'valeur_article' => $valeur_article, 'familles' => $em->getRepository('EEMArticleBundle:Famille')->findAll(), 'marques' => $marques, )); } /** * Lists all article entities. * * @Route("/verif_article_archiver", name="verif_article_archiver") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function verifArticleArchiverAction(Request $request) { $data = $request->request->all()['article_type']; $em = $this->getDoctrine()->getManager(); $articles = []; if ($data['famille'] != '' && $data['marque'] != '' && $data['modele'] != '' && $data['color'] != '') { $data_request['famille'] = $data['famille']; $data_request['marque'] = $data['marque']; $data_request['modele'] = $data['modele']; $data_request['color'] = $data['color']; if ($data['codeABarre'] != '') { $data_request['codeABarre'] = $data['codeABarre']; } $articles = $em->getRepository('EEMArticleBundle:Article')->findBy($data_request); } return $this->render('@EEMArticle/article/verif_article_archiver.html.twig', array( 'articles' => $articles, )); } /** * Lists all article entities. * * @Route("/archiver", name="article_index_archiver") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function indexArchiverAction(Request $request) { $em = $this->getDoctrine()->getManager(); $marques = $em->getRepository('EEMArticleBundle:Marque')->findAll(); if (isset($request->query->all()['famille']) && !empty($request->query->all()['famille'])) { $marques = $em->getRepository('EEMArticleBundle:Marque')->findMarques($request->query->all()['famille']); } $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele(null); if (isset($request->query->all()['marque']) && !empty($request->query->all()['marque'])) { $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele($request->query->all()['marque']); } if (isset($request->request->all()['btn_search'])) { $url = $this->buildSearchUrl($request->request->all(), 'detail'); if (!empty($url)) { return $this->redirectToRoute('article_index_archiver', $url); } } $paginator = $this->get('knp_paginator'); $articles = $paginator->paginate( $em->getRepository('EEMArticleBundle:Article')->MyFindAllArchive($request->query->all()), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 20/* limit per page */ ); $valeur_article = 0; $article_stocks = $em->getRepository('EEMArticleBundle:Article')->chiffreArticleArchive($request->query->all()); foreach ($article_stocks as $article_stock) { $valeur_article += $article_stock->getQte() * $article_stock->getPrixAchat(); $valeur_article += $article_stock->getQteGros() * $article_stock->getPrixAchatGros(); } return $this->render('@EEMArticle/article/index_archive.html.twig', array( 'articles' => $articles, 'modeles' => $modeles, 'valeur_article' => $valeur_article, 'familles' => $em->getRepository('EEMArticleBundle:Famille')->findAll(), 'marques' => $marques, )); } /** * Lists all article entities. * * @Route("/gros", name="article_gros_index") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function indexGrosAction(Request $request) { $em = $this->getDoctrine()->getManager(); $marques = $em->getRepository('EEMArticleBundle:Marque')->findAll(); if (isset($request->query->all()['famille']) && !empty($request->query->all()['famille'])) { $marques = $em->getRepository('EEMArticleBundle:Marque')->findMarques($request->query->all()['famille']); } $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele(null); if (isset($request->query->all()['marque']) && !empty($request->query->all()['marque'])) { $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele($request->query->all()['marque']); } if (isset($request->request->all()['btn_search'])) { $url = $this->buildSearchUrl($request->request->all(), 'gros'); if (!empty($url)) { return $this->redirectToRoute('article_gros_index', $url); } } $array_article_gros = []; $achat_gros = $em->getRepository('EEMAchatBundle:Achat')->findAll(); foreach ($achat_gros as $achatGros) { if ($achatGros->getType() == 'gros') { foreach ($achatGros->getLigneAchats() as $ligneAchat) { $array_article_gros[] = $ligneAchat->getArticle()->getId(); } } } $array_article_gros = array_unique($array_article_gros); $paginator = $this->get('knp_paginator'); $articles = $paginator->paginate( $em->getRepository('EEMArticleBundle:Article')->chiffreArticleGros($request->query->all(), $array_article_gros), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 20/* limit per page */ ); $valeur_article = 0; $article_stocks = $em->getRepository('EEMArticleBundle:Article')->chiffreArticleGros($request->query->all(), $array_article_gros); foreach ($article_stocks as $article_stock) { $valeur_article += $article_stock->getQteGros() * $article_stock->getPrixAchatGros(); } return $this->render('@EEMArticle/article/index_gros.html.twig', array( 'articles' => $articles, 'modeles' => $modeles, 'valeur_article' => $valeur_article, 'familles' => $em->getRepository('EEMArticleBundle:Famille')->findAll(), 'marques' => $marques, )); } /** * Lists all marque entities. * * @Route("/url_list_modele_ajax", name="url_list_modele_ajax") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function listModeleAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); $marque = $request->request->all()['marque']; $modeles = $em->getRepository('EEMArticleBundle:Modele')->findModele($marque); return $this->render('@EEMArticle/article/list_modele_ajax.html.twig', array( 'modeles' => $modeles, )); } /** * Creates a new article entity. * * @Route("/article_ligne_vente", name="article_ligne_vente") * @Method({"GET", "POST"}) */ public function articleLigneVenteAction(Request $request) { $em = $this->getDoctrine()->getManager(); $id = $request->request->get('article'); $type = $request->request->get('type'); $article = $em->getRepository('EEMArticleBundle:Article')->find($id); if ($type == 'gros') { $tab_json['prix_final'] = $article->getPrixVenteGros(); $tab_json['prix_achat'] = $article->getPrixAchatGros(); $tab_json['qteDispo'] = $article->getQteGros()==''? 0 : $article->getQteGros(); } if ($type == 'transfert') { $tab_json['prix_final'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixVenteGros(); $tab_json['qteDispo'] = $article->getQteGros(); } if ($type == 'detail') { $tab_json['prix_final'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixAchat(); $tab_json['qteDispo'] = $article->getQte(); } if ($type == 'achatmagasin') { $tab_json['prix_final'] = $article->getPrixAchatGros(); $tab_json['prix_achat'] = $article->getPrixVenteGros(); $tab_json['qteDispo'] = $article->getQteGros(); } if ($type == 'ventemagasin') { $tab_json['prix_final'] = $article->getPrixAchatMagasin(); $tab_json['prix_achat'] = $article->getPrixAchatMagasin(); $tab_json['qteDispo'] = $article->getQteMagasin(); } $tab_json['nom'] = $article->getArticleComplet(); $tab_json['article_id'] = $article->getId(); return new Response(json_encode($tab_json)); } /** * Creates a new article entity. * * @Route("/article_ligne_piece", name="article_ligne_piece") * @Method({"GET", "POST"}) */ public function articleLignePieceAction(Request $request) { $em = $this->getDoctrine()->getManager(); $id = $request->request->get('article'); $article = $em->getRepository('EEMArticleBundle:Article')->find($id); $tab_json['prix_vente'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixAchat(); $tab_json['qteDispo'] = $article->getQte(); $tab_json['code_bare'] = $article->getCodeABarre(); $tab_json['nom_article'] = $article->getArticleComplet(); return new Response(json_encode($tab_json)); } /** * Creates a new article entity. * * @Route("/article_ligne_piece_code_bare", name="article_ligne_piece_code_bare") * @Method({"GET", "POST"}) */ public function articleLignePieceCodeBareAction(Request $request) { $em = $this->getDoctrine()->getManager(); $code_bare = $request->request->get('code_bare'); $article = $em->getRepository('EEMArticleBundle:Article')->findOneBy(['codeABarre' => $code_bare]); if ($article) { $tab_json['code_bare'] = $article->getCodeABarre(); $tab_json['prix_vente'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixAchat(); $tab_json['qteDispo'] = $article->getQte(); $tab_json['article'] = $article->getId(); $tab_json['nom_article'] = $article->getArticleComplet(); } else { $tab_json = []; } return new Response(json_encode($tab_json)); } /** * Creates a new article entity. * * @Route("/recup_article_ajax", name="recup_article_ajax") * @Method({"GET", "POST"}) */ public function recupArticleAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); $code_barre = $request->request->get('code_barre'); $type = $request->request->get('type'); $article = $em->getRepository('EEMArticleBundle:Article')->findOneBy(['codeABarre' => $code_barre]); if ($article) { if ($type == 'transfert') { $tab_json['prix_final'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixVenteGros(); $tab_json['qteDispo'] = $article->getQteGros(); } if ($type == 'gros') { $tab_json['prix_final'] = $article->getPrixVenteGros(); $tab_json['prix_achat'] = $article->getPrixAchatGros(); $tab_json['qteDispo'] = $article->getQteGros(); } if ($type == 'detail') { $tab_json['prix_final'] = $article->getPrixFinal(); $tab_json['prix_achat'] = $article->getPrixAchat(); $tab_json['qteDispo'] = $article->getQte(); } if ($type == 'achatmagasin') { $tab_json['prix_final'] = $article->getPrixAchatGros(); $tab_json['prix_achat'] = $article->getPrixVenteGros(); $tab_json['qteDispo'] = $article->getQteGros(); } if ($type == 'ventemagasin') { $tab_json['prix_final'] = $article->getPrixAchatMagasin(); $tab_json['prix_achat'] = $article->getPrixAchatMagasin(); $tab_json['qteDispo'] = $article->getQteMagasin(); } $tab_json['reponse'] = 'oui'; $tab_json['nom'] = $article->getArticleComplet(); $tab_json['article_id'] = $article->getId(); } else { $tab_json = [ 'reponse' => 'non', ]; } return new Response(json_encode($tab_json)); } /** * Creates a new article entity. * * @Route("/recup_type_article", name="recup_type_article") * @Method({"GET", "POST"}) */ public function recupTypeArticleAction(Request $request) { $em = $this->getDoctrine()->getManager(); //print_r( $request->request->all()); $famille_id = $request->request->get('famille_id'); //echo $famille_id."--"; $famille = $em->getRepository('EEMArticleBundle:Famille')->find($famille_id); if ($famille->getPieceRechange()) { $tab_json = [ 'reponse' => 'oui' ]; } else { $tab_json = [ 'reponse' => 'non' ]; } return new Response(json_encode($tab_json)); } /** * Creates a new article entity. * * @Route("/new", name="article_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_ADMIN')") */ public function newAction(Request $request) { $article = new Article(); $form = $this->createForm('EEM\ArticleBundle\Form\ArticleType', $article, ['type_form' => 'add']); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); if ($request->request->all()['article_type']['codeABarre'] == '') { $article->setCodeABarre($this->genererBarCode()); } $em->persist($article); $em->flush(); $bar_code = $article->getCodeABarre(); $generator = new BarcodeGeneratorPNG(); file_put_contents($this->getParameter('bar_code') . '/' . $bar_code . '.png', $generator->getBarcode($bar_code, $generator::TYPE_CODE_93, 3, 50, [0, 0, 0])); $this->addFlash('success', 'Article ajouté avec succès.'); return $this->redirectToRoute('article_show', array('id' => $article->getId())); } return $this->render('@EEMArticle/article/new.html.twig', array( 'article' => $article, 'form' => $form->createView(), )); } /** * Afficher la page 1. * * @Route("/{id}/imprimer-bar-code", name="imprimer_bar_code") * @Method({"GET", "POST"}) */ public function imprimerBarCodeAction(Article $article, Request $request) { $data = $request->query->all(); $nb_ligne = 1; if (isset($data['nb_ligne']) && !empty($data['nb_ligne'])) { $nb_ligne = $data['nb_ligne']; } $nb_colonne = 1; if (isset($data['nb_colonne']) && !empty($data['nb_colonne'])) { $nb_colonne = $data['nb_colonne']; } $nb_code = 80; if (isset($data['nb_code']) && !empty($data['nb_code'])) { $nb_code = $data['nb_code']; } $html = $this->renderView('@EEMArticle/article/imprimer_barCode.html.twig', [ 'article' => $article, 'nb_code' => $nb_code, 'nb_ligne' => $nb_ligne, 'nb_colonne' => $nb_colonne, 'server' => 'http://' . $_SERVER['HTTP_HOST'], ]); $html2pdf = new \Spipu\Html2Pdf\Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array(10, 10, 10, 10)); $html2pdf->pdf->SetDisplayMode('fullpage'); $html2pdf->writeHTML($html); $html2pdf->output('barCode.pdf'); } /** * Finds and displays a article entity. * * @Route("/{id}", name="article_show") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function showAction(Article $article) { $deleteForm = $this->createDeleteForm($article); return $this->render('@EEMArticle/article/show.html.twig', array( 'article' => $article, 'delete_form' => $deleteForm->createView(), )); } /** * Finds and displays a article entity. * * @Route("/{id}/archiver", name="article_archiver") * @Method("GET") * @Security("has_role('ROLE_ADMIN')") */ public function archiverAction(Article $article) { $deleteForm = $this->createDeleteForm($article); return $this->render('@EEMArticle/article/archiver.html.twig', array( 'article' => $article, 'delete_form' => $deleteForm->createView(), )); } /** * Finds and displays a article entity. * * @Route("/{id}/article_valid_archiver", name="article_valid_archiver") * @Method("GET") * @Security("has_role('ROLE_ADMIN')") */ public function validerArchiverAction(Article $article) { $article->setArchiver(true); $this->getDoctrine()->getManager()->flush(); $this->addFlash('success', 'Article archivé avec succès.'); return $this->redirectToRoute('article_show', array('id' => $article->getId())); } /** * Finds and displays a article entity. * * @Route("/{id}/article_restaurer", name="article_restaurer") * @Method("GET") * @Security("has_role('ROLE_ADMIN')") */ public function restaurerArticleAction(Article $article) { $article->setArchiver(false); $this->getDoctrine()->getManager()->flush(); $this->addFlash('success', 'Article restauré avec succès.'); return $this->redirectToRoute('article_show', array('id' => $article->getId())); } /** * Displays a form to edit an existing article entity. * * @Route("/{id}/edit", name="article_edit") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_ADMIN')") */ public function editAction(Request $request, Article $article) { $deleteForm = $this->createDeleteForm($article); $editForm = $this->createForm('EEM\ArticleBundle\Form\ArticleType', $article, ['type_form' => 'edit']); $editForm->handleRequest($request); if ($editForm->isSubmitted() && $editForm->isValid()) { if ($request->request->all()['article_type']['codeABarre'] == '') { $article->setCodeABarre($this->genererBarCode()); } $this->getDoctrine()->getManager()->flush(); $bar_code = $article->getCodeABarre(); $generator = new BarcodeGeneratorPNG(); file_put_contents($this->getParameter('bar_code') . '/' . $bar_code . '.png', $generator->getBarcode($bar_code, $generator::TYPE_CODE_93, 3, 50, [0, 0, 0])); $this->addFlash('success', 'Article modifié avec succès.'); return $this->redirectToRoute('article_show', array('id' => $article->getId())); } return $this->render('@EEMArticle/article/edit.html.twig', array( 'article' => $article, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a article entity. * * @Route("/{id}/delete", name="article_delete") * @Method("DELETE") * @Security("has_role('ROLE_ADMIN')") */ public function deleteAction(Request $request, Article $article) { $form = $this->createDeleteForm($article); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->remove($article); $em->flush(); $this->addFlash('success', 'Famille article supprimée avec succès.'); } return $this->redirectToRoute('article_index'); } /** * Creates a form to delete a article entity. * * @param Article $article The article entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Article $article) { return $this->createFormBuilder() ->setAction($this->generateUrl('article_delete', array('id' => $article->getId()))) ->setMethod('DELETE') ->getForm(); } private function buildSearchUrl($data, $type) { $url['type'] = $type; foreach ($data as $k => $v) { if (isset($data['famille']) && !empty($data['famille'])) { $url['famille'] = $data['famille']; } if (isset($data['marque']) && !empty($data['marque'])) { $url['marque'] = $data['marque']; } if (isset($data['modele']) && !empty($data['modele'])) { $url['modele'] = $data['modele']; } if (isset($data['stock']) && !empty($data['stock'])) { $url['stock'] = $data['stock']; } if (isset($data['barcode']) && !empty($data['barcode'])) { $url['barcode'] = $data['barcode']; } } return $url; } function genererBarCode() { //$caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $caracteres = '0123456789'; $longueurMax = strlen($caracteres); $chaineAleatoire = ''; for ($i = 0; $i < 13; $i++) { $chaineAleatoire .= $caracteres[rand(0, $longueurMax - 1)]; } return $chaineAleatoire; } }