%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/RechargeBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/RechargeBundle/Controller/RechargeController.php |
<?php namespace EEM\RechargeBundle\Controller; use EEM\FonctionnaliteBundle\Service\TresorieService; use EEM\RechargeBundle\Entity\ArticleRecharge; use EEM\RechargeBundle\Entity\LigneRecharge; use EEM\RechargeBundle\Entity\Recharge; use EEM\VenteBundle\Entity\Vente; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; /** * Recharge controller. * * @Route("/admin/recharge") */ class RechargeController extends Controller { /** * Lists all recharge entities. * * @Route("/", name="recharge_index") * @Method("GET") */ public function indexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $recharges = $em->getRepository('EEMRechargeBundle:Recharge')->findBy([],['dateRecharge'=>'DESC']); if (isset($request->query->all()['type']) && !empty($request->query->all()['type']) ) { $recharges = $em->getRepository('EEMRechargeBundle:Recharge')->findBy(['type'=>$request->query->all()['type']],['dateRecharge'=>'DESC']); } return $this->render('@EEMRecharge/recharge/index.html.twig', array( 'recharges' => $recharges, )); } /** * Creates a new recharge entity. * * @Route("/achat", name="recharge_achat") * @Method({"GET", "POST"}) */ public function achatAction(Request $request) { $article_recharge = new ArticleRecharge(); $recharge = new Recharge(); $em = $this->getDoctrine()->getManager(); $article_recharges = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getAchatLight(); $montant_ticket1 = $parametre->getAchatTicket1(); $montant_ticket5 = $parametre->getAchatTicket5(); $montant_data = $parametre->getAchatData(); $tab_article = []; foreach ($article_recharges as $article_recharge) { $tab_article[$article_recharge->getOperateur()][$article_recharge->getCategory()] = ''; } $data = $request->request->all(); if (isset($data['save_recharge'])) { $recharge->setDateRecharge(new \datetime()); $recharge->setType('achat'); $em->persist($recharge); $em->flush(); //verification si la date de vente existe ou nn $ventes = $em->getRepository('EEMVenteBundle:Vente')->rechercheDate($recharge->getDateRecharge()->format('Y-m-d'), 'detail'); if (count($ventes) == 1) { $vente = $ventes[0]; } else { $vente = new Vente(); $vente->setDateVente(new \DateTime($recharge->getDateRecharge()->format('Y-m-d'))); $vente->setType('detail'); $em->persist($vente); $em->flush(); } $vente->setBenefice($this->calculBenefice($vente)); $vente->setChiffreRestant($this->calculChiffre()['stock_detail']); $vente->setChiffreRestantGros($this->calculChiffre()['stock_gros']); $em->flush(); //echo "<pre>".print_r($data,1)."</pre>";exit(); //echo "<pre>".print_r($tab_article,1)."</pre>"; foreach ($tab_article as $key_op => $operateur) { foreach ($operateur as $key_cat => $category) { if ($data['input_' . $key_op . '_' . $key_cat] != '' && $data['input_' . $key_op . '_' . $key_cat] != 0) { $article_recharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $key_op, 'category' => $key_cat]); $ligne_recharge = new LigneRecharge(); $ligne_recharge->setMontant(${'montant_' . $key_cat}); $ligne_recharge->setRecharge($recharge); $ligne_recharge->setArticleRecharge($article_recharge); $ligne_recharge->setQte($data['input_' . $key_op . '_' . $key_cat]); $em->persist($ligne_recharge); $article_recharge->setQte($article_recharge->getQte() + $data['input_' . $key_op . '_' . $key_cat]); $em->flush(); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($data['input_' . $key_op . '_' . $key_cat]*${'montant_' . $key_cat})); } } } $em->flush(); //exit(); return $this->redirectToRoute('recharge_index'); } // echo "<pre>".print_r($tab_article,1)."</pre>"; //exit(); return $this->render('@EEMRecharge/recharge/new.html.twig', array( 'type' => 'Achat', 'recharge' => $recharge, 'tab_article' => $tab_article, 'liste_category' => $article_recharge->listeCategory(), 'liste_operateur' => $article_recharge->listeOperateur(), )); } /** * Creates a new recharge entity. * * @Route("/{id}/achat", name="recharge_achat_edit") * @Method({"GET", "POST"}) */ public function achatEditAction(Recharge $recharge, Request $request) { $article_recharge = new ArticleRecharge(); $em = $this->getDoctrine()->getManager(); $article_recharges = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getAchatLight(); $montant_ticket1 = $parametre->getAchatTicket1(); $montant_ticket5 = $parametre->getAchatTicket5(); $montant_data = $parametre->getAchatData(); $tab_article = []; foreach ($article_recharges as $article_recharge) { $articleRecharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $article_recharge->getOperateur(), 'category' => $article_recharge->getCategory()]); $ligne_recharge = $em->getRepository('EEMRechargeBundle:LigneRecharge')->findOneBy(['recharge' => $recharge->getId(), 'articleRecharge' => $articleRecharge->getId()]); if ($ligne_recharge) { $qte = $ligne_recharge->getQte(); } else { $qte = ''; } $tab_article[$article_recharge->getOperateur()][$article_recharge->getCategory()] = $qte; } $data = $request->request->all(); if (isset($data['save_recharge'])) { foreach ($tab_article as $key_op => $operateur) { foreach ($operateur as $key_cat => $category) { $article_recharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $key_op, 'category' => $key_cat]); $ligne_recharge = $em->getRepository('EEMRechargeBundle:LigneRecharge')->findOneBy(['recharge' => $recharge->getId(), 'articleRecharge' => $article_recharge->getId()]); if ($data['input_' . $key_op . '_' . $key_cat] != '' && $data['input_' . $key_op . '_' . $key_cat] != 0) { if ($ligne_recharge) { $qte_act = $ligne_recharge->getQte(); } else { $ligne_recharge = new LigneRecharge(); $ligne_recharge->setMontant(${'montant_' . $key_cat}); $qte_act = 0; } $ligne_recharge->setRecharge($recharge); $ligne_recharge->setArticleRecharge($article_recharge); $ligne_recharge->setQte($data['input_' . $key_op . '_' . $key_cat]); $em->persist($ligne_recharge); $article_recharge->setQte($article_recharge->getQte() - $qte_act + $data['input_' . $key_op . '_' . $key_cat]); $em->flush(); } else { if ($ligne_recharge) { $qte_act = $ligne_recharge->getQte(); $article_recharge->setQte($article_recharge->getQte() - $qte_act); $em->flush(); $em->remove($ligne_recharge); $em->flush(); } } } } //exit(); return $this->redirectToRoute('recharge_index'); } // echo "<pre>".print_r($tab_article,1)."</pre>"; //exit(); return $this->render('@EEMRecharge/recharge/new.html.twig', array( 'type' => 'Achat', 'recharge' => $recharge, 'tab_article' => $tab_article, 'liste_category' => $article_recharge->listeCategory(), 'liste_operateur' => $article_recharge->listeOperateur(), )); } /** * Creates a new recharge entity. * * @Route("/vente", name="recharge_vente") * @Method({"GET", "POST"}) */ public function venteAction(Request $request) { $article_recharge = new ArticleRecharge(); $recharge = new Recharge(); $em = $this->getDoctrine()->getManager(); $article_recharges = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getVenteLight(); $montant_ticket1 = $parametre->getVenteTicket1(); $montant_ticket5 = $parametre->getVenteTicket5(); $montant_data = $parametre->getVenteData(); $montant_achat_light = $parametre->getAchatLight(); $montant_achat_ticket1 = $parametre->getAchatTicket1(); $montant_achat_ticket5 = $parametre->getAchatTicket5(); $montant_achat_data = $parametre->getAchatData(); $tab_article = []; foreach ($article_recharges as $article_recharge) { if($article_recharge->getQte()==''){ $qte=0; }else{ $qte=$article_recharge->getQte(); } $tab_article[$article_recharge->getOperateur()][$article_recharge->getCategory()] = $qte; } $data = $request->request->all(); //dump($data);exit(); if (isset($data['save_recharge'])) { $recharge->setDateRecharge(new \datetime()); $recharge->setType('vente'); $em->persist($recharge); $em->flush(); foreach ($tab_article as $key_op => $operateur) { foreach ($operateur as $key_cat => $category) { $article_recharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $key_op, 'category' => $key_cat]); if ($data['input_' . $key_op . '_' . $key_cat] == '') { $qte_saisie=0; }else{ $qte_saisie=$data['input_' . $key_op . '_' . $key_cat]; } if ($article_recharge->getQte()>$qte_saisie) { $qte_ligne=$article_recharge->getQte()-$qte_saisie; $ligne_recharge = new LigneRecharge(); $ligne_recharge->setMontant(${'montant_' . $key_cat}); $ligne_recharge->setMontantAchat(${'montant_achat_' . $key_cat}); $ligne_recharge->setRecharge($recharge); $ligne_recharge->setArticleRecharge($article_recharge); $ligne_recharge->setQte($qte_ligne); $em->persist($ligne_recharge); $article_recharge->setQte($qte_saisie); $em->flush(); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie($qte_ligne*${'montant_' . $key_cat}); } } } //exit(); return $this->redirectToRoute('recharge_index'); } return $this->render('@EEMRecharge/recharge/new.html.twig', array( 'type' => 'Vente', 'recharge' => $recharge, 'tab_article' => $tab_article, 'liste_category' => $article_recharge->listeCategory(), 'liste_operateur' => $article_recharge->listeOperateur(), )); } /** * Creates a new recharge entity. * * @Route("/{id}/vente", name="recharge_vente_edit") * @Method({"GET", "POST"}) */ public function venteEditAction(Recharge $recharge, Request $request) { $article_recharge = new ArticleRecharge(); $em = $this->getDoctrine()->getManager(); $article_recharges = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getVenteLight(); $montant_ticket1 = $parametre->getVenteTicket1(); $montant_ticket5 = $parametre->getVenteTicket5(); $montant_data = $parametre->getVenteData(); $montant_achat_light = $parametre->getAchatLight(); $montant_achat_ticket1 = $parametre->getAchatTicket1(); $montant_achat_ticket5 = $parametre->getAchatTicket5(); $montant_achat_data = $parametre->getAchatData(); $tab_article = []; foreach ($article_recharges as $article_recharge) { $articleRecharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $article_recharge->getOperateur(), 'category' => $article_recharge->getCategory()]); $ligne_recharge = $em->getRepository('EEMRechargeBundle:LigneRecharge')->findOneBy(['recharge' => $recharge->getId(), 'articleRecharge' => $articleRecharge->getId()]); if ($ligne_recharge) { $qte = $articleRecharge->getQte()+$ligne_recharge->getQte(); } else { $qte = $articleRecharge->getQte(); } $tab_article[$article_recharge->getOperateur()][$article_recharge->getCategory()] = $qte; } $data = $request->request->all(); if (isset($data['save_recharge'])) { foreach ($tab_article as $key_op => $operateur) { foreach ($operateur as $key_cat => $category) { $article_recharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $key_op, 'category' => $key_cat]); $ligne_recharge = $em->getRepository('EEMRechargeBundle:LigneRecharge')->findOneBy(['recharge' => $recharge->getId(), 'articleRecharge' => $article_recharge->getId()]); if ($data['input_' . $key_op . '_' . $key_cat] != '' && $data['input_' . $key_op . '_' . $key_cat] != 0) { if ($ligne_recharge) { $qte_act = $ligne_recharge->getQte(); } else { $ligne_recharge = new LigneRecharge(); $ligne_recharge->setMontant(${'montant_' . $key_cat}); $ligne_recharge->setMontantAchat(${'montant_achat_' . $key_cat}); $qte_act = 0; } $ligne_recharge->setRecharge($recharge); $ligne_recharge->setArticleRecharge($article_recharge); $ligne_recharge->setQte($data['input_' . $key_op . '_' . $key_cat]); $em->persist($ligne_recharge); $article_recharge->setQte($article_recharge->getQte() + $qte_act - $data['input_' . $key_op . '_' . $key_cat]); $em->flush(); } else { if ($ligne_recharge) { $qte_act = $ligne_recharge->getQte(); $article_recharge->setQte($article_recharge->getQte() + $qte_act); $em->flush(); echo $qte_act . "---" . $ligne_recharge->getId(); $em->remove($ligne_recharge); $em->flush(); } } } } return $this->redirectToRoute('recharge_index'); } return $this->render('@EEMRecharge/recharge/new.html.twig', array( 'type' => 'Vente', 'recharge' => $recharge, 'tab_article' => $tab_article, 'liste_category' => $article_recharge->listeCategory(), 'liste_operateur' => $article_recharge->listeOperateur(), )); } /** * Finds and displays a recharge entity. * * @Route("/{id}", name="recharge_show") * @Method("GET") */ public function showAction(Recharge $recharge) { $deleteForm = $this->createDeleteForm($recharge); $em = $this->getDoctrine()->getManager(); $article_recharges = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); $tab_article = []; foreach ($article_recharges as $article_recharge) { $articleRecharge = $em->getRepository('EEMRechargeBundle:ArticleRecharge')->findOneBy(['operateur' => $article_recharge->getOperateur(), 'category' => $article_recharge->getCategory()]); $ligne_recharge = $em->getRepository('EEMRechargeBundle:LigneRecharge')->findOneBy(['recharge' => $recharge->getId(), 'articleRecharge' => $articleRecharge->getId()]); if ($ligne_recharge) { $qte = $ligne_recharge->getQte(); } else { $qte = 0; } $tab_article[$article_recharge->getOperateur()][$article_recharge->getCategory()] = $qte; } $article_recharge = new ArticleRecharge(); return $this->render('@EEMRecharge/recharge/show.html.twig', array( 'recharge' => $recharge, 'delete_form' => $deleteForm->createView(), 'tab_article' => $tab_article, 'liste_category' => $article_recharge->listeCategory(), 'liste_operateur' => $article_recharge->listeOperateur(), )); } /** * Displays a form to edit an existing recharge entity. * * @Route("/{id}/edit", name="recharge_edit") * @Method({"GET", "POST"}) */ public function editAction(Request $request, Recharge $recharge) { $deleteForm = $this->createDeleteForm($recharge); $editForm = $this->createForm('EEM\RechargeBundle\Form\RechargeType', $recharge); $editForm->handleRequest($request); if ($editForm->isSubmitted() && $editForm->isValid()) { $this->getDoctrine()->getManager()->flush(); return $this->redirectToRoute('recharge_edit', array('id' => $recharge->getId())); } return $this->render('@EEMRecharge/recharge/edit.html.twig', array( 'recharge' => $recharge, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a recharge entity. * * @Route("/{id}/delete", name="recharge_delete") * @Method("DELETE") */ public function deleteAction(Request $request, Recharge $recharge) { $form = $this->createDeleteForm($recharge); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $type = $recharge->getType(); foreach ($recharge->getLigneRecharges() as $ligneRecharge) { $articleRecharge = $ligneRecharge->getArticleRecharge(); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); if ($type == 'vente') { $articleRecharge->setQte($articleRecharge->getQte() + $ligneRecharge->getQte()); $tresorieService->mettreAJourTresorie(-($ligneRecharge->getQte()*$ligneRecharge->getMontant())); } if ($type == 'achat') { $articleRecharge->setQte($articleRecharge->getQte() - $ligneRecharge->getQte()); $tresorieService->mettreAJourTresorie($ligneRecharge->getQte()*$ligneRecharge->getMontant()); } } $em->remove($recharge); $em->flush(); } return $this->redirectToRoute('recharge_index'); } /** * Creates a form to delete a recharge entity. * * @param Recharge $recharge The recharge entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Recharge $recharge) { return $this->createFormBuilder() ->setAction($this->generateUrl('recharge_delete', array('id' => $recharge->getId()))) ->setMethod('DELETE') ->getForm(); } public function calculStockRecharge(){ $em = $this->getDoctrine()->getManager(); $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getAchatLight(); $montant_ticket1 = $parametre->getAchatTicket1(); $montant_ticket5 = $parametre->getAchatTicket5(); $montant_data = $parametre->getAchatData(); $stock_recharge = 0; $articleRecharges=$em->getRepository('EEMRechargeBundle:ArticleRecharge')->findAll(); foreach ($articleRecharges as $articleRecharge) { $stock_recharge+=${'montant_'.$articleRecharge->getCategory()}*$articleRecharge->getQte(); } return $stock_recharge; } public function calculChiffre() { $em = $this->getDoctrine()->getManager(); $stock_detail = 0; $stock_gros = 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(); } return [ 'stock_detail' => $stock_detail, 'stock_gros' => $stock_gros, ]; } public function calculBenefice($vente) { $benefice = 0; foreach ($vente->getLigneVentes() as $ligneVente) { $benefice += (floatval($ligneVente->getPrixVente()) - floatval($ligneVente->getPrixAchat())) * intval($ligneVente->getQte()); //echo $benefice."--"; } return $benefice; } }