%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/VenteBundle/Controller/ |
Current File : /home/emtnaeewxm/www/src/EEM/VenteBundle/Controller/VenteController.php |
<?php namespace EEM\VenteBundle\Controller; use EEM\FonctionnaliteBundle\Service\HistoriqueService; use EEM\FonctionnaliteBundle\Service\TresorieService; use EEM\PieceBundle\Entity\LignePiece; use EEM\PieceBundle\Entity\Piece; use EEM\VenteBundle\Entity\Vente; use EEM\VenteBundle\Entity\LigneVente; 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 Doctrine\Common\Collections\ArrayCollection; /** * Vente controller. * * @Route("/admin/vente") */ class VenteController extends Controller { /** * Creates a new vente entity. * * @Route("/save_vente_ajax", name="save_vente_ajax") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function saveVenteAjaxAction(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']); $vente = $em->getRepository('EEMVenteBundle:Vente')->find($data['vente']); $ligne_vente = new LigneVente(); $ligne_vente->setArticle($article); $ligne_vente->setVente($vente); $ligne_vente->setPrixVente($data['prixFinal']); $ligne_vente->setPrixAchat($data['prixAchat']); $ligne_vente->setQte($data['quantite']); $ligne_vente->setCreatedAt(new \DateTime()); $em->persist($ligne_vente); $em->flush(); if ($vente->getType() == 'detail') { $article->setQte($article->getQte() - $data['quantite']); $historiqueService = new HistoriqueService($em); $historiqueService->HistoriqueVente($article, $vente->getId(), $vente->getType(), 'Nouvelle vente', $ligne_vente->getQte()); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(($data['quantite'] * $data['prixFinal'])); } if ($vente->getType() == 'gros') { $article->setQteGros($article->getQteGros() - $data['quantite']); $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(($data['quantite'] * $data['prixFinal'])); } $ventes = $em->getRepository('EEMVenteBundle:Vente')->rechercheDate( $vente->getDateVente()->format('Y-m-d'), 'detail'); if (count($ventes) == 1) { $vente_stat = $ventes[0]; } else { $vente_stat = new Vente(); $vente_stat->setDateVente(new \DateTime($vente->getDateVente()->format('Y-m-d'))); $vente_stat->setType('detail'); $em->persist($vente_stat); $em->flush(); } $vente_stat->setBenefice($this->calculBenefice($vente_stat)); $vente_stat->setChiffreRestant($this->calculChiffre()['stock_detail']); $vente_stat->setChiffreRestantGros($this->calculChiffre()['stock_gros']); $vente_stat->setChiffreRestantMagasin($this->calculChiffre()['stock_magasin']); $em->flush(); $tab['id_ligne_vente'] = $ligne_vente->getId(); $tab['code_barre'] = $article->getCodeABarre(); $tab['article'] = $article->getArticleComplet(); $tab['id_article'] = $article->getId(); $tab['prixVente'] = $data['prixFinal']; $tab['qte'] = $ligne_vente->getQte(); $tab['heur'] = $ligne_vente->getCreatedAt()->format('H:i'); return new Response(json_encode($tab)); } /** * Creates a new achat entity. * * @Route("/{id}/vente_valider", name="vente_valider") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function venteValiderAction(Vente $vente) { $em = $this->getDoctrine()->getManager(); $historiqueService = new HistoriqueService($em); $vente->setValider(true); foreach ($vente->getLigneVentes() as $ligneVente) { $article = $ligneVente->getArticle(); $article->setQteGros($article->getQteGros() - $ligneVente->getQte()); $historiqueService->HistoriqueVente($article, $vente->getId(), $vente->getType(), 'Nouvelle vente', $ligneVente->getQte()); } $em->flush(); //Save piece:bon livraison $type_piece = 'bon_livraison'; $annee = date('Y'); $last_pieces = $em->getRepository('EEMPieceBundle:Piece')->lastPiece($type_piece, $annee); if (count($last_pieces) == 1) { $num = $last_pieces[0]->getNum() + 1; } else { $num = 1; } $piece = new Piece(); $piece->setDatePiece(new \DateTime()); $piece->setTypePiece($type_piece); $piece->setAnnee($annee); $piece->setNum($num); $piece->setClient($vente->getClient()); $piece->setVenteGros($vente); $em->persist($piece); $em->flush(); foreach ($vente->getLigneVentes() as $ligne_vente) { $ligne_piece = new LignePiece(); $ligne_piece->setArticle($ligne_vente->getArticle()); $ligne_piece->setQte($ligne_vente->getQte()); $ligne_piece->setPiece($piece); $ligne_piece->setPrix($ligne_vente->getPrixVente()); $ligne_piece->setCodeABarre($ligne_vente->getArticle()->getCodeABarre()); $ligne_piece->setName($ligne_vente->getArticle()->getArticleComplet()); $ligne_piece->setTotalPrix($ligne_vente->getPrixVente() * $ligne_vente->getQte()); $em->persist($ligne_piece); $em->flush(); } $vente->setPiece($piece); $vente->setChiffreRestant($this->calculChiffre()['stock_detail']); $vente->setChiffreRestantGros($this->calculChiffre()['stock_gros']); $em->flush(); return $this->redirectToRoute('vente_gros_show', array('id' => $vente->getId())); } /** * Creates a new vente entity. * * @Route("/edit_ligne_vente", name="edit_ligne_vente") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function editLigneVenteAction(Request $request) { $id_ligne_vente = $request->request->get('id_ligne_vente'); $em = $this->getDoctrine()->getManager(); $ligne_vente = $em->getRepository('EEMVenteBundle:LigneVente')->find($id_ligne_vente); $form = $this->createForm('EEM\VenteBundle\Form\AddLigneVenteType'); return $this->render('@EEMVente/vente/edit_ajax.html.twig', array( 'ligne_vente' => $ligne_vente, 'form' => $form->createView(), )); } /** * Creates a new vente entity. * * @Route("/recup_ligne_vente_ajax", name="recup_ligne_vente_ajax") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function recupLigneVenteAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); $erreur = ''; $nom_article = null; $ligne_ventes = null; $ventes = null; if ($request->request->get('code_barre') && !empty($request->request->get('code_barre'))) { $code_barre = $request->request->get('code_barre'); $article = $em->getRepository('EEMArticleBundle:Article')->findOneBy(['codeABarre' => $code_barre]); if ($article) { $id_article = $article->getId(); $nom_article = $article->getArticleComplet(); } else { $erreur = 'Le code à barre ne correspond à aucun article'; } } elseif ($request->request->get('id_article') && !empty($request->request->get('id_article'))) { $id_article = $request->request->get('id_article'); } else { $erreur = 'Taper le code à barre ou choisissez une article'; } if ($erreur == "") { $ligne_ventes = $em->getRepository('EEMVenteBundle:LigneVente')->findBy(['article' => $id_article]); $ventes = $em->getRepository('EEMVenteBundle:Vente')->findVenteArticle($id_article); } return $this->render('@EEMVente/vente/ligne_vente_ajax.html.twig', array( 'nom_article' => $nom_article, 'ligne_ventes' => $ligne_ventes, 'ventes' => $ventes, 'erreur' => $erreur, )); } /** * Creates a new vente entity. * * @Route("/save_edit_vente_ajax", name="save_edit_vente_ajax") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function saveEditVenteAjaxAction(Request $request) { $em = $this->getDoctrine()->getManager(); //print_r($request->request->all()); //exit(); $data = $request->request->all()['add_ligne']; $historiqueService = new HistoriqueService($em); $ligne_vente = $em->getRepository('EEMVenteBundle:LigneVente')->find($data['ligneVente']); $vente = $ligne_vente->getVente(); $qte_actuel = $ligne_vente->getQte(); $montant_ligne = $qte_actuel * $ligne_vente->getPrixVente(); $article_actuel = $ligne_vente->getArticle(); $article = $ligne_vente->getArticle(); if ($vente->getType() == 'detail') { if ($article->getId() == $data['article']) { $article->setQte($article->getQte() + $qte_actuel - $data['quantite']); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente modifiée', $qte_actuel); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente modifiée', '-' . $data['quantite']); } else { $article = $em->getRepository('EEMArticleBundle:Article')->find($data['article']); $article_actuel->setQte($article_actuel->getQte() + $qte_actuel); $article->setQte($article->getQte() - $data['quantite']); $historiqueService->HistoriqueVente($article_actuel, $vente->getType(), $vente->getType(), 'Vente modifiée', $qte_actuel); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente modifiée', '-' . $data['quantite']); } $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(($data['quantite'] * $data['prixFinal']) - $montant_ligne); } $vente = $ligne_vente->getVente(); $ligne_vente->setArticle($article); $ligne_vente->setVente($vente); $ligne_vente->setPrixVente($data['prixFinal']); $ligne_vente->setPrixAchat($data['prixAchat']); $ligne_vente->setQte($data['quantite']); $em->persist($ligne_vente); $em->flush(); $vente->setBenefice($this->calculBenefice($vente)); $vente->setChiffreRestant($this->calculChiffre()['stock_detail']); $vente->setChiffreRestantGros($this->calculChiffre()['stock_gros']); $em->flush(); $tab['id_ligne_vente'] = $ligne_vente->getId(); $tab['code_barre'] = $article->getCodeABarre(); $tab['article'] = $article->getArticleComplet(); $tab['prixVente'] = $data['prixFinal']; $tab['qte'] = $ligne_vente->getQte(); $tab['montant_ligne'] = $montant_ligne; return new Response(json_encode($tab)); } /** * Creates a new vente entity. * * @Route("/delete_ligne_vente", name="delete_ligne_vente") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function deleteLigneVenteAction(Request $request) { $id_ligne_vente = $request->request->get('id_ligne_vente'); $em = $this->getDoctrine()->getManager(); $ligne_vente = $em->getRepository('EEMVenteBundle:LigneVente')->find($id_ligne_vente); $vente = $ligne_vente->getVente(); $article = $ligne_vente->getArticle(); if ($vente->getType() == 'detail') { $qte_delete=$ligne_vente->getQte(); $prix_delete=$ligne_vente->getPrixVente(); $article->setQte($article->getQte() + $qte_delete); $historiqueService = new HistoriqueService($em); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente supprimée', $ligne_vente->getQte()); } $em->remove($ligne_vente); $em->flush(); if ($vente->getType() == 'detail') { $tresorieService = new TresorieService($em); $tresorieService->controleExisteTresorie(); $tresorieService->mettreAJourTresorie(-($prix_delete * $qte_delete)); } $vente->setBenefice($this->calculBenefice($vente)); $vente->setChiffreRestant($this->calculChiffre()['stock_detail']); $vente->setChiffreRestantGros($this->calculChiffre()['stock_gros']); $em->flush(); return new Response('ok'); } /** * Lists all vente entities. * * @Route("/liste/{type}", name="vente_index") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function indexAction(Request $request) { $data_attributes = $request->attributes->all(); $em = $this->getDoctrine()->getManager(); $type = $data_attributes['type']; if ($type == 'detail' && !$this->getUser()->is_admin()) { $this->addFlash('danger', "Impossible d'accéder a cette page."); return $this->redirectToRoute('accueil'); } $form = $this->createForm('EEM\VenteBundle\Form\VenteSearchType'); $form->handleRequest($request); if ($form->isSubmitted()) { $url = $this->buildSearchUrl($request->request->all(), $type); if (!empty($url)) { return $this->redirectToRoute('vente_index', $url); } } $paginator = $this->get('knp_paginator'); $ventes = $paginator->paginate( $em->getRepository('EEMVenteBundle:Vente')->myFindAll($request->query->all(), $type), /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 20/* limit per page */ ); $array_tresorie = []; $tresories = $em->getRepository('EEMVenteBundle:Tresorie')->findAll(); foreach ($tresories as $tresorie) { $array_tresorie[$tresorie->getDate()->format('d-m-Y')] = $tresorie->getMontant(); } $parametre = $em->getRepository('EEMParametreBundle:Parametre')->find(1); $montant_light = $parametre->getAchatLight(); $montant_ticket1 = $parametre->getAchatTicket1(); $montant_ticket5 = $parametre->getAchatTicket5(); $montant_data = $parametre->getAchatData(); $recharges = $em->getRepository('EEMRechargeBundle:Recharge')->findAllOrderDate(); $tab_recharge = []; $first = 'oui'; $prev = ''; foreach ($recharges as $recharge) { $montant_recharge = 0; if (!isset($tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')])) { $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] = 0; if ($first != 'oui') { $montant_recharge = $tab_recharge[$prev]; } } foreach ($recharge->getLigneRecharges() as $ligne_recharge) { // $total_ligne += ${'montant_' . $ligne_recharge->getArticleRecharge()->getCategory()} * $ligne_recharge->getQte(); if ($recharge->getType() == 'achat') { $montant_recharge += ${'montant_' . $ligne_recharge->getArticleRecharge()->getCategory()} * $ligne_recharge->getQte(); } if ($recharge->getType() == 'vente') { $montant_recharge -= ${'montant_' . $ligne_recharge->getArticleRecharge()->getCategory()} * $ligne_recharge->getQte(); } } $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] = $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')]+ $montant_recharge; /*if ($recharge->getType() == 'achat') { $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] = $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] + $montant_recharge; } if ($recharge->getType() == 'vente') { $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] = $tab_recharge[$recharge->getDateRecharge()->format('d-m-Y')] + $montant_recharge; }*/ $first = 'non'; $prev = $recharge->getDateRecharge()->format('d-m-Y'); } //dump($tab_recharge);exit(); $array_recharge = []; $vente_recharges = $em->getRepository('EEMVenteBundle:Vente')->listeVente(); $prev_stock=0; foreach ($vente_recharges as $vente_recharge) { if (isset($tab_recharge[$vente_recharge->getDateVente()->format('d-m-Y')])) { $array_recharge[$vente_recharge->getDateVente()->format('d-m-Y')] = $tab_recharge[$vente_recharge->getDateVente()->format('d-m-Y')]; } else { $array_recharge[$vente_recharge->getDateVente()->format('d-m-Y')] = isset($array_recharge[$prev_stock]) ? $array_recharge[$prev_stock] : 0; } $prev_stock=$vente_recharge->getDateVente()->format('d-m-Y'); } //dump($tab_recharge); //dump($array_recharge);exit(); return $this->render('@EEMVente/vente/index.html.twig', array( 'array_tresorie' => $array_tresorie, 'array_recharge' => $array_recharge, 'ventes' => $ventes, 'form' => $form->createView(), )); } /** * Creates a new vente entity. * * @Route("/detail/{date}", name="vente_detail_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function newDetailAction(Request $request) { $date_vente = $request->attributes->get('date'); $em = $this->getDoctrine()->getManager(); $ventes = $em->getRepository('EEMVenteBundle:Vente')->rechercheDate($date_vente, 'detail'); if (count($ventes) == 1) { $vente = $ventes[0]; } else { $vente = new Vente(); $vente->setDateVente(new \DateTime($date_vente)); $vente->setType('detail'); $em->persist($vente); $em->flush(); } return $this->redirectToRoute('vente_detail_show', ['id' => $vente->getId(), 'date' => $date_vente]); } /** * Creates a new vente entity. * * @Route("/gros", name="vente_gros_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function newGrosAction(Request $request) { $em = $this->getDoctrine()->getManager(); $date_vente = $request->attributes->get('date'); $vente = new Vente(); $vente->setDateVente(new \DateTime($date_vente)); $vente->setType('gros'); $em->persist($vente); $em->flush(); return $this->redirectToRoute('vente_gros_show', ['id' => $vente->getId()]); } /** * Creates a new vente entity. * * @Route("/detail/{id}/{date}", name="vente_detail_show") * @Route("/gros/{id}", name="vente_gros_show") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_USER')") */ public function showAction(Vente $vente, Request $request) { $em = $this->getDoctrine()->getManager(); $form = $this->createForm('EEM\VenteBundle\Form\AddLigneVenteType', null, ['type' => $vente->getType()]); $ligne_ventes = $em->getRepository('EEMVenteBundle:LigneVente')->findBy(['vente' => $vente->getId()], ['createdAt' => 'desc']); $vente_reduits = []; if (count($ligne_ventes) > 0) { foreach ($ligne_ventes as $ligne_vente) { $id_article = $ligne_vente->getArticle()->getId(); if (isset($vente_reduits[$id_article])) { $new_qte = $vente_reduits[$id_article]['qte'] + $ligne_vente->getQte(); } else { $new_qte = $ligne_vente->getQte(); } $vente_reduits[$id_article]['qte'] = $new_qte; $vente_reduits[$id_article]['article'] = $ligne_vente->getArticle()->getArticleComplet(); $vente_reduits[$id_article]['barcode'] = $ligne_vente->getArticle()->getCodeABarre(); $vente_reduits[$id_article]['id_ligne_vente'] = $ligne_vente->getId(); $vente_reduits[$id_article]['id_article'] = $ligne_vente->getArticle()->getId(); } foreach ($vente_reduits as $k => $v) { $qte[$k] = $v['qte']; } array_multisort($qte, SORT_DESC, $vente_reduits); } $deleteForm = $this->createDeleteForm($vente); $clients = $em->getRepository('EEMTraiteBundle:Client')->findAll(); if($request->attributes->all()['_route']=='vente_gros_show'){ return $this->render('@EEMVente/vente/new_gros.html.twig', array( 'vente' => $vente, 'vente_reduits' => $vente_reduits, 'ligne_ventes' => $ligne_ventes, 'form' => $form->createView(), 'date_jour' => date('d/m/Y'), 'delete_form' => $deleteForm->createView(), 'clients' => $clients )); } return $this->render('@EEMVente/vente/new.html.twig', array( 'vente' => $vente, 'vente_reduits' => $vente_reduits, 'ligne_ventes' => $ligne_ventes, 'form' => $form->createView(), 'date_jour' => date('d/m/Y'), 'delete_form' => $deleteForm->createView(), 'clients' => $clients )); } /** * Deletes a vente entity. * * @Route("/{id}/vente_delete_gros", name="vente_delete_gros") * @Method("DELETE") * @Security("has_role('ROLE_USER')") */ public function deleteVenteGrosAction(Request $request, Vente $vente) { $em = $this->getDoctrine()->getManager(); $historiqueService = new HistoriqueService($em); if ($vente->getPiece()) { foreach ($vente->getLigneVentes() as $ligne_vente) { $article = $ligne_vente->getArticle(); $article->setQteGros($article->getQteGros() + $ligne_vente->getQte()); $em->flush(); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente supprimée', $ligne_vente->getQte()); } } $em->remove($vente); $em->flush(); $this->addFlash('success', 'Vente supprimée avec succès.'); return $this->redirectToRoute('vente_index', ['type' => 'gros']); } /** * Deletes a vente entity. * * @Route("/{id}/delete", name="vente_delete") * @Method("DELETE") * @Security("has_role('ROLE_USER')") */ public function deleteAction(Request $request, Vente $vente) { $em = $this->getDoctrine()->getManager(); $historiqueService = new HistoriqueService($em); $last_vente = $em->getRepository('EEMVenteBundle:Vente')->findOneBy([], ['dateVente' => 'DESC']); if ($last_vente->getId() != $vente->getId()) { $this->addFlash('danger', 'Impossible de supprimer cette vente.'); return $this->redirectToRoute('vente_index'); } $form = $this->createDeleteForm($vente); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($vente->getType() == 'detail') { foreach ($vente->getLigneVentes() as $ligneVente) { $article = $ligneVente->getArticle(); $qte_act = $article->getQte(); $article->setQte($qte_act + $ligneVente->getQte()); $em->flush($article); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente supprimée', $ligneVente->getQte()); } } if ($vente->getType() == 'gros') { foreach ($vente->getLigneVentes() as $ligneVente) { $article = $ligneVente->getArticle(); $qte_act = $article->getQteGros(); $article->setQteGros($qte_act + $ligneVente->getQte()); $em->flush($article); $historiqueService->HistoriqueVente($article, $vente->getType(), $vente->getType(), 'Vente supprimée', $ligneVente->getQte()); } } $em->remove($vente); $em->flush(); } $this->addFlash('success', 'Vente supprimée avec succès.'); return $this->redirectToRoute('vente_index'); } /** * Finds and displays a achat entity. * * @Route("/vente_update_client", name="vente_update_client") * @Method("GET") * @Security("has_role('ROLE_USER')") */ public function venteUpdateClientAction(Request $request) { $vente_id = $request->request->get('vente'); $client_id = $request->request->get('client'); $em = $this->getDoctrine()->getManager(); $vente = $em->getRepository('EEMVenteBundle:Vente')->find($vente_id); $client = $em->getRepository('EEMTraiteBundle:Client')->find($client_id); $vente->setClient($client); $em->flush(); return new Response('ok'); } /** * Creates a form to delete a vente entity. * * @param Vente $vente The vente entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Vente $vente) { return $this->createFormBuilder() ->setAction($this->generateUrl('vente_delete', array('id' => $vente->getId()))) ->setMethod('DELETE') ->getForm(); } private function buildSearchUrl($data, $type) { $url['type'] = $type; foreach ($data as $k => $v) { if (isset($data['search_vente']['dateDu']) && !empty($data['search_vente']['dateDu'])) { $url['dateDu'] = $this->convertDate($data['search_vente']['dateDu']); } if (isset($data['search_vente']['dateAu']) && !empty($data['search_vente']['dateAu'])) { $url['dateAu'] = $this->convertDate($data['search_vente']['dateAu']); } } return $url; } public function convertDate($date) { $date = str_replace('/', '-', $date); $tabDate = explode('-', $date); $enDate = $tabDate[2] . '-' . $tabDate[1] . '-' . $tabDate[0]; return $enDate; } public function calculChiffre() { $em = $this->getDoctrine()->getManager(); $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(); } return [ 'stock_detail' => $stock_detail, 'stock_gros' => $stock_gros, 'stock_magasin' => $stock_magasin, ]; } 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; } }