%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/AchatBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/AchatBundle/Controller/AchatController.php |
<?php namespace EEM\AchatBundle\Controller; use EEM\AchatBundle\Entity\Achat; use EEM\AchatBundle\Entity\LigneAchat; use EEM\AchatBundle\Entity\Reglement; use EEM\FonctionnaliteBundle\Service\HistoriqueService; use EEM\FonctionnaliteBundle\Service\TresorieService; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; /** * Achat controller. * * @Route("/admin/achat") * @Security("has_role('ROLE_ADMIN')") */ class AchatController extends Controller { /** * Creates a new vente entity. * * @Route("/save_achat_ajax", name="save_achat_ajax") * @Method({"GET", "POST"}) */ public function saveAchatAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); //print_r($request->request->all()); //exit(); $data = $request->request->all()['add_ligne']; $article = $em->getRepository('EEMArticleBundle:Article')->find($data['article']); $achat = $em->getRepository('EEMAchatBundle:Achat')->find($data['achat']); $ligne_achat = new LigneAchat(); $ligne_achat->setArticle($article); $ligne_achat->setAchat($achat); if ($data['quantite'] != '') $quantite = $data['quantite']; else $quantite = 1; if ($data['prixAchat'] != '') $prix_achat = $data['prixAchat']; else $prix_achat = '0.000'; if ($data['prixFinal'] != '') $prix_final = $data['prixFinal']; else $prix_final = '0.000'; $ligne_achat->setPrixFinal($prix_final); $ligne_achat->setPrixAchat($prix_achat); $historiqueService=new HistoriqueService($em); if ($achat->getType() == 'detail') { $ligne_achat->setPrixFinalOld($article->getPrixFinal()); $ligne_achat->setPrixAchatOld($article->getPrixAchat()); $article->setPrixFinal($ligne_achat->getPrixFinal()); $article->setPrixAchat($ligne_achat->getPrixAchat()); $article->setQte($article->getQte() + $quantite); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Nouveau achat',$quantite); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($ligne_achat->getPrixAchat()*$quantite)); } if ($achat->getType() == 'gros') { $ligne_achat->setPrixVenteGrosOld($article->getPrixVenteGros()); $ligne_achat->setPrixAchatGrosOld($article->getPrixAchatGros()); $article->setPrixVenteGros($ligne_achat->getPrixFinal()); $article->setPrixAchatGros($ligne_achat->getPrixAchat()); $article->setQteGros($article->getQteGros() + $quantite); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Nouveau achat',$quantite); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($ligne_achat->getPrixAchat()*$quantite)); } if ($achat->getType() == 'transfert') { $ligne_achat->setPrixFinalOld($article->getPrixFinal()); $ligne_achat->setPrixAchatOld($article->getPrixAchat()); $article->setPrixFinal($ligne_achat->getPrixFinal()); $article->setPrixAchat($ligne_achat->getPrixAchat()); $article->setQte($article->getQte() + $quantite); $article->setQteGros($article->getQteGros() - $quantite); $historiqueService->HistoriqueTransfert($article,$achat->getId(),'Transfert article',$quantite); } $ligne_achat->setQte($quantite); $em->persist($ligne_achat); $em->flush(); $this->calculChiffreVente(); $tab['id_ligne_achat'] = $ligne_achat->getId(); $tab['code_barre'] = $article->getCodeABarre(); $tab['article'] = $article->getArticleComplet(); $tab['prixAchat'] = $prix_achat; $tab['prixFinal'] = $prix_final; $tab['qte'] = $ligne_achat->getQte(); return new Response(json_encode($tab)); } /** * Creates a new vente entity. * * @Route("/edit_ligne_achat", name="edit_ligne_achat") * @Method({"GET", "POST"}) */ public function editLigneAchatAction(Request $request) { $id_ligne_achat = $request->request->get('id_ligne_achat'); $em = $this->getDoctrine()->getManager(); $ligne_Achat = $em->getRepository('EEMAchatBundle:LigneAchat')->find($id_ligne_achat); $form = $this->createForm('EEM\AchatBundle\Form\AddLigneAchatType'); return $this->render('@EEMAchat/achat/edit_ajax.html.twig', array( 'ligne_achat' => $ligne_Achat, 'form' => $form->createView(), )); } /** * Creates a new vente entity. * * @Route("/delete_ligne_achat", name="delete_ligne_achat") * @Method({"GET", "POST"}) */ public function deleteLigneAchatAction(Request $request) { $id_ligne_achat = $request->request->get('id_ligne_achat'); $em = $this->getDoctrine()->getManager(); $ligne_achat = $em->getRepository('EEMAchatBundle:LigneAchat')->find($id_ligne_achat); $historiqueService=new HistoriqueService($em); $article = $ligne_achat->getArticle(); $achat = $ligne_achat->getAchat(); if ($achat->getType() == 'detail') { $article->setPrixFinal($ligne_achat->getPrixFinalOld()); $article->setPrixAchat($ligne_achat->getPrixAchatOld()); $article->setQte($article->getQte() - $ligne_achat->getQte()); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Achat annulé',$ligne_achat->getQte()); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($ligne_achat->getQte()*$ligne_achat->getPrixAchat()); } if ($achat->getType() == 'gros') { $article->setPrixVenteGros($ligne_achat->getPrixVenteGrosOld()); $article->setPrixAchatGros($ligne_achat->getPrixAchatGrosOld()); $article->setQteGros($article->getQteGros() - $ligne_achat->getQte()); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Achat annulé',$ligne_achat->getQte()); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($ligne_achat->getQte()*$ligne_achat->getPrixAchat()); } if ($achat->getType() == 'transfert') { $article->setPrixFinal($ligne_achat->getPrixFinalOld()); $article->setPrixAchat($ligne_achat->getPrixAchatOld()); $article->setQte($article->getQte() - $ligne_achat->getQte()); $article->setQteGros($article->getQteGros() + $ligne_achat->getQte()); $historiqueService->HistoriqueTransfert($article,$achat->getId(),'Transfert annulé',$ligne_achat->getQte()); } $em->remove($ligne_achat); $em->flush(); $this->calculChiffreVente(); return new Response('ok'); } /** * Creates a new vente entity. * * @Route("/save_edit_achat_ajax", name="save_edit_achat_ajax") * @Method({"GET", "POST"}) */ public function saveEditAchatAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); $data = $request->request->all()['add_ligne']; $old_article = $request->request->all()['old_article']; $old_qte = $request->request->all()['old_qte']; $article = $em->getRepository('EEMArticleBundle:Article')->find($data['article']); $historiqueService=new HistoriqueService($em); $ligne_achat = $em->getRepository('EEMAchatBundle:LigneAchat')->find($data['ligneAchat']); $achat=$ligne_achat->getAchat(); if($ligne_achat->getAchat()->getType()=='detail') { if ($data['article'] == $old_article) { $article->setQte($article->getQte() - $old_qte); } elseif ($data['article'] != $old_article) { $old_article = $em->getRepository('EEMArticleBundle:Article')->find($old_article); $old_article->setQte($old_article->getQte() - $old_qte); $old_article->setPrixAchat($ligne_achat->getPrixAchatOld()); $old_article->setPrixFinal($ligne_achat->getPrixFinalOld()); $ligne_achat->setPrixAchatOld($article->getPrixAchat()); $ligne_achat->setPrixFinalOld($article->getPrixFinal()); } $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($data['quantite']*$data['prixAchat'])+($ligne_achat->getQte()*$ligne_achat->getPrixAchat())); $ligne_achat->setArticle($article); $ligne_achat->setPrixAchat($data['prixAchat']); $ligne_achat->setPrixFinal($data['prixFinal']); $ligne_achat->setQte($data['quantite']); $article->setQte($article->getQte() + $data['quantite']); $article->setPrixAchat($data['prixAchat']); $article->setPrixFinal($data['prixFinal']); $em->persist($ligne_achat); $em->flush(); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Achat modifié',$data['quantite']); } if($ligne_achat->getAchat()->getType()=='gros') { if ($data['article'] == $old_article) { $article->setQteGros($article->getQteGros() - $old_qte); } elseif ($data['article'] != $old_article) { $old_article = $em->getRepository('EEMArticleBundle:Article')->find($old_article); $old_article->setQteGros($old_article->getQteGros() - $old_qte); $old_article->setPrixAchatGros($ligne_achat->getPrixAchatGrosOld()); $old_article->setPrixVenteGros($ligne_achat->getPrixVenteGrosOld()); $ligne_achat->setPrixAchatGrosOld($article->getPrixAchatGros()); $ligne_achat->setPrixVenteGrosOld($article->getPrixVenteGros()); } $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($data['quantite']*$data['prixAchat'])+($ligne_achat->getQte()*$ligne_achat->getPrixAchat())); $ligne_achat->setArticle($article); $ligne_achat->setPrixAchat($data['prixAchat']); $ligne_achat->setPrixFinal($data['prixFinal']); $ligne_achat->setQte($data['quantite']); $article->setQteGros($article->getQteGros() + $data['quantite']); $article->setPrixAchatGros($data['prixAchat']); $article->setPrixVenteGros($data['prixFinal']); $em->persist($ligne_achat); $em->flush(); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Achat modifié',$data['quantite']); } if($ligne_achat->getAchat()->getType()=='transfert') { if ($data['article'] == $old_article) { $article->setQteGros($article->getQteGros() + $old_qte); $article->setQte($article->getQte() - $old_qte); } elseif ($data['article'] != $old_article) { $old_article = $em->getRepository('EEMArticleBundle:Article')->find($old_article); $old_article->setQteGros($article->getQteGros() + $old_qte); $old_article->setQte($article->getQte() - $old_qte); $old_article->setPrixAchat($ligne_achat->getPrixAchatOld()); $old_article->setPrixFinal($ligne_achat->getPrixFinalOld()); $ligne_achat->setPrixAchatOld($article->getPrixAchat()); $ligne_achat->setPrixFinalOld($article->getPrixFinal()); } $ligne_achat->setArticle($article); $ligne_achat->setPrixAchat($data['prixAchat']); $ligne_achat->setPrixFinal($data['prixFinal']); $ligne_achat->setQte($data['quantite']); $article->setQte($article->getQte() + $data['quantite']); $article->setQteGros($article->getQteGros() - $data['quantite']); $article->setPrixAchat($data['prixAchat']); $article->setPrixFinal($data['prixFinal']); $em->persist($ligne_achat); $em->flush(); $historiqueService->HistoriqueTransfert($article,$achat->getId(),'Transfert modifié',$data['quantite']); } $this->calculChiffreVente(); $tab['id_ligne_achat'] = $ligne_achat->getId(); $tab['code_barre'] = $article->getCodeABarre(); $tab['article'] = $article->getArticleComplet(); $tab['prixAchat'] = $data['prixAchat']; $tab['prixFinal'] = $data['prixFinal']; $tab['qte'] = $ligne_achat->getQte(); return new Response(json_encode($tab)); } /** * Lists all achat entities. * * @Route("/{type}", name="achat_index") * @Method("GET") */ public function indexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $paginator = $this->get('knp_paginator'); $data_query = $request->attributes->all(); if (empty($data_query['type']) || !isset($data_query['type']) || !in_array($data_query['type'], ['detail', 'gros', 'transfert'])) { return $this->redirectToRoute('accueil'); } $type = $data_query['type']; $achats = $paginator->paginate( $em->getRepository('EEMAchatBundle:Achat')->findBy(['type' => $type], ['dateAchat' => 'DESC']), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 10/* limit per page */ ); return $this->render('@EEMAchat/achat/index.html.twig', array( 'achats' => $achats, )); } /** * Creates a new vente entity. * * @Route("/{type}/{date}", name="achat_new") * @Method({"GET", "POST"}) */ public function newDetailAction(Request $request) { $data_attributes = $request->attributes->all(); $date_achat = $data_attributes['date']; if (empty($data_attributes['type']) || !isset($data_attributes['type']) || !in_array($data_attributes['type'], ['detail', 'gros', 'transfert'])) { return $this->redirectToRoute('accueil'); } $em = $this->getDoctrine()->getManager(); $achats = $em->getRepository('EEMAchatBundle:Achat')->rechercheDate($date_achat,$data_attributes['type'] ); if (count($achats) == 1) { $achat = $achats[0]; } else { $achat = new Achat(); $achat->setDateAchat(new \DateTime($date_achat)); $achat->setType($data_attributes['type']); $em->persist($achat); $em->flush(); } $this->calculChiffreVente(); if ($data_attributes['type'] == 'detail') { return $this->redirectToRoute('achat_detail_show', ['id' => $achat->getId(), 'date' => $date_achat]); } if ($data_attributes['type'] == 'gros') { return $this->redirectToRoute('achat_gros_show', ['id' => $achat->getId(), 'date' => $date_achat]); } if ($data_attributes['type'] == 'transfert') { return $this->redirectToRoute('achat_transfert_show', ['id' => $achat->getId(), 'date' => $date_achat]); } } /** * Creates a new vente entity. * * @Route("/detail/{id}/{date}", name="achat_detail_show") * @Route("/gros/{id}/{date}", name="achat_gros_show") * @Route("/transfert/{id}/{date}", name="achat_transfert_show") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function achatDetailAction(Achat $achat, Request $request) { $em = $this->getDoctrine()->getManager(); $form = $this->createForm('EEM\AchatBundle\Form\AddLigneAchatType', null, ['type' => $achat->getType()]); $ligne_achats = $em->getRepository('EEMAchatBundle:LigneAchat')->findBy(['achat' => $achat->getId()], ['createdAt' => 'desc']); $deleteForm = $this->createDeleteForm($achat); return $this->render('@EEMAchat/achat/show.html.twig', array( 'achat' => $achat, 'ligne_achats' => $ligne_achats, 'form' => $form->createView(), 'date_jour' => date('d/m/Y'), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a achat entity. * * @Route("/{id}/delete", name="achat_delete") * @Method("DELETE") */ public function deleteAction(Request $request, Achat $achat) { $em = $this->getDoctrine()->getManager(); $form = $this->createDeleteForm($achat); $form->handleRequest($request); $historiqueService=new HistoriqueService(); if ($form->isSubmitted() && $form->isValid()) { if ($achat->getType() == 'detail') { foreach ($achat->getLigneAchats() as $ligneAchat) { $article = $ligneAchat->getArticle(); $article->setQte($article->getQte() - $ligneAchat->getQte()); $article->setPrixAchat($ligneAchat->getPrixAchatOld()); $article->setPrixFinal($ligneAchat->getPrixFinalOld()); $em->flush($article); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Transfert annulé',$ligneAchat->getQte()); } } if ($achat->getType() == 'gros') { foreach ($achat->getLigneAchats() as $ligneAchat) { $article = $ligneAchat->getArticle(); $article->setQteGros($article->getQteGros() - $ligneAchat->getQte()); $article->setPrixAchatGros($ligneAchat->getPrixAchatGrosOld()); $article->setPrixVenteGros($ligneAchat->getPrixVenteGrosOld()); $em->flush($article); $historiqueService->HistoriqueAchat($article,$achat->getId(),$achat->getType(),'Transfert annulé', $ligneAchat->getQte()); } } if ($achat->getType() == 'transfert') { foreach ($achat->getLigneAchats() as $ligneAchat) { $article = $ligneAchat->getArticle(); $article->setQteGros($article->getQteGros() + $ligneAchat->getQte()); $article->setQte($article->getQte() - $ligneAchat->getQte()); $article->setPrixAchat($ligneAchat->getPrixAchatOld()); $article->setPrixFinal($ligneAchat->getPrixFinalOld()); $em->flush($article); $historiqueService->HistoriqueTransfert($article,$achat->getId(),'Transfert annulé', $ligneAchat->getQte()); } } $em->remove($achat); $em->flush(); $this->calculChiffreVente(); } $this->addFlash('success', 'Achat supprimé avec succès.'); return $this->redirectToRoute('achat_index', ['type' => $achat->getType()]); } /** * Creates a form to delete a achat entity. * * @param Achat $achat The achat entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Achat $achat) { return $this->createFormBuilder() ->setAction($this->generateUrl('achat_delete', array('id' => $achat->getId()))) ->setMethod('DELETE') ->getForm(); } /********************************************************************/ /** * Finds and displays a achat entity. * * @Route("/{id}", name="achat_show") * @Method("GET") */ public function showAction(Achat $achat) { $deleteForm = $this->createDeleteForm($achat); $em = $this->getDoctrine()->getManager(); $last_achat = $em->getRepository('EEMAchatBundle:Achat')->findOneBy([], ['dateAchat' => 'DESC']); $form = $this->createForm('EEM\AchatBundle\Form\AddLigneAchatType'); $ligne_achats = $em->getRepository('EEMAchatBundle:LigneAchat')->findBy(['achat' => $achat->getId()], ['id' => 'DESC']); return $this->render('@EEMAchat/achat/show.html.twig', array( 'achat' => $achat, 'form' => $form->createView(), 'ligne_achats' => $ligne_achats, 'last_achat' => $last_achat, 'delete_form' => $deleteForm->createView(), )); } public function calculChiffreVente() { $em = $this->getDoctrine()->getManager(); $ventes = $em->getRepository('EEMVenteBundle:Vente')->rechercheDate(date('Y-m-d'), 'detail'); if (count($ventes) == 1) { $vente = $ventes[0]; $stock_detail = 0; $stock_gros = 0; $stock_magasin = 0; $article_stocks = $em->getRepository('EEMArticleBundle:Article')->findAll(); foreach ($article_stocks as $article_stock) { $stock_detail += $article_stock->getQte() * $article_stock->getPrixAchat(); $stock_gros += $article_stock->getQteGros() * $article_stock->getPrixAchatGros(); $stock_magasin += $article_stock->getQteMagasin() * $article_stock->getPrixAchatMagasin(); } $vente->setChiffreRestant($stock_detail); $vente->setChiffreRestantGros($stock_gros); $vente->setChiffreRestantMagasin($stock_magasin); $em->flush(); } } }