%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/emtnaeewxm/www/src/EEM/VenteBundle/Controller/
Upload File :
Create Path :
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;
    }
}

Zerion Mini Shell 1.0