%PDF- %PDF-
Mini Shell

Mini Shell

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

Zerion Mini Shell 1.0