%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/emtnaeewxm/www/src/EEM/TraiteBundle/Controller/
Upload File :
Create Path :
Current File : /home/emtnaeewxm/www/src/EEM/TraiteBundle/Controller/TraiteController.php

<?php

namespace EEM\TraiteBundle\Controller;

use EEM\FonctionnaliteBundle\Service\HistoriqueService;
use EEM\FonctionnaliteBundle\Service\TresorieService;
use EEM\TraiteBundle\Entity\LigneTraite;
use EEM\TraiteBundle\Entity\Traite;
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 Spipu\Html2Pdf\Html2Pdf;
use Picqer\Barcode\BarcodeGeneratorPNG;
use Picqer\Barcode\BarcodeGeneratorHTML;

/**
 * Traite controller.
 *
 * @Route("/admin/traite")
 */
class TraiteController extends Controller
{
    /**
     * Lists all traite entities.
     *
     * @Route("/", name="traite_index")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function indexAction(Request $request)
    {
        $form = $this->createForm('EEM\TraiteBundle\Form\TraiteSearchType');
        $form->handleRequest($request);

        if ($form->isSubmitted()) {
            $url = $this->buildSearchUrl($request->request->all());
            if (!empty($url)) {
                return $this->redirectToRoute('traite_index', $url);
            }
        }
        $em = $this->getDoctrine()->getManager();
        if (isset($request->request->all()['pay_traite'])) {
            $barcode = $request->request->get('barcode');
            $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($barcode);
            $traite = $ligne_traite->getTraite();
            $ligne_traite->setEtat(true);
            $ligne_traite->setDatePaiement(new \DateTime());
            $em->persist($ligne_traite);
            $em->flush();

            $comp = 0;
            foreach ($traite->getLigneTraites() as $li_traite) {
                if ($li_traite->getEtat() == 1) {
                    $comp++;
                }
            }
            if ($traite->getNbTraite() == $comp) {
                $client = $traite->getclient();
                $client->setEtat('non_engage');
                $em->flush();
                $traite->setEtat('payer');
                $em->flush();
            }

        }
        $paginator = $this->get('knp_paginator');

        $traites = $paginator->paginate(
            $em->getRepository('EEMTraiteBundle:Traite')->MyFindAll($request->query->all()), /* query NOT result */
            $request->query->getInt('page', 1)/* page number */, 10/* limit per page */
        );

        return $this->render('@EEMTraite/traite/index.html.twig', array(
            'traites' => $traites,
            'form' => $form->createView(),
        ));
    }

    /**
     * Lists all traite entities.
     *
     * @Route("/traite-a-payer", name="echeance_traite_index")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function echeanceTraiteIndexAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();
        $form = $this->createForm('EEM\TraiteBundle\Form\TraiteSearchType');
        $form->handleRequest($request);

        if ($form->isSubmitted()) {
            $url = $this->buildSearchUrl($request->request->all());
            if (!empty($url)) {
                return $this->redirectToRoute('echeance_traite_index', $url);
            }
        }
        $paginator = $this->get('knp_paginator');

        $ligne_traites = $paginator->paginate(
            $em->getRepository('EEMTraiteBundle:LigneTraite')->echeanceTraiteIndex($request->query->all()), /* query NOT result */
            $request->query->getInt('page', 1)/* page number */, 10/* limit per page */
        );

        return $this->render('@EEMTraite/traite/echeance_traite.html.twig', array(
            'ligne_traites' => $ligne_traites,
            'form' => $form->createView(),
        ));
    }

    /**
     * Creates a new traite entity.
     *
     * @Route("/new", name="traite_new")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function newAction(Request $request)
    {

        $traite = new Traite();
        $form = $this->createForm('EEM\TraiteBundle\Form\TraiteType', $traite);
        $form->handleRequest($request);

        $em = $this->getDoctrine()->getManager();
        $historiqueService=new HistoriqueService($em);

        if ($form->isSubmitted() && $form->isValid()) {
            $data = $request->request->all();
            $traite->setEtat('en_cours');
            $em->persist($traite);
            $tresorieService = new TresorieService($em);
            $tresorieService->controleExisteTresorie();
            $tresorieService->mettreAJourTresorie($traite->getMontantAvance());

            $article = $traite->getArticle();
            $article->setQte($article->getQte() - 1);
            $em->persist($article);
            $client = $traite->getClient();
            $client->setEtat('engage');
            $em->flush();
            $historiqueService->HistoriqueTraite($article,$traite->getId(),'Nouvelle vente',1);

            if ($data['eem_traitebundle_traite']['nbTraite'] == 1) {
                $ligne_traite = new LigneTraite();
                $ligne_traite->setEtat(0);
                $date_echeance = date('Y-m-d', strtotime($this->convertDate($data['eem_traitebundle_traite']['dateEcheance'])));

                $ligne_traite->setDateEcheance(new \DateTime($date_echeance));
                $ligne_traite->setMontant($data['eem_traitebundle_traite']['montantVente'] - $data['eem_traitebundle_traite']['montantAvance']);
                $ligne_traite->setTraite($traite);
                $em->persist($ligne_traite);
                $em->flush();
                $ligne_traite->setBarCode($this->genererBarCode($ligne_traite->getId()));
                $em->flush();

            } else {
                for ($nb_traite = 0; $nb_traite < $data['eem_traitebundle_traite']['nbTraite']; $nb_traite++) {
                    $date_echeance = date('Y-m-d', strtotime("+" . $nb_traite . " months", strtotime($this->convertDate($data['eem_traitebundle_traite']['dateEcheance']))));
                    $ligne_traite = new LigneTraite();
                    $ligne_traite->setEtat(0);
                    $ligne_traite->setDateEcheance(new \DateTime($date_echeance));
                    $ligne_traite->setMontant('100');
                    $ligne_traite->setTraite($traite);
                    $em->persist($ligne_traite);
                    $em->flush();
                    $ligne_traite->setBarCode($this->genererBarCode($ligne_traite->getId()));
                    $em->flush();
                }
            }


            return $this->redirectToRoute('traite_show', array('id' => $traite->getId()));
        }

        return $this->render('@EEMTraite/traite/new.html.twig', array(
            'traite' => $traite,
            'form' => $form->createView(),
            'date_jour' => date('d/m/Y'),
            'date_echeance' => date('d/m/Y', strtotime("+1 months", strtotime(date("Y-m-d"))))

        ));
    }

    /**
     * Creates a new traite entity.
     *
     * @Route("/traite_note", name="traite_note")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function traiteNoteAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();
        $data = $request->request->all();
        $id_ligne_traite = $data['id_ligne_traite'];
        $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($id_ligne_traite);


        return $this->render('@EEMTraite/traite/note_traite.html.twig', array(
            'ligne_traite' => $ligne_traite,

        ));
    }

    /**
     * Creates a new traite entity.
     *
     * @Route("/save_traite_note", name="save_traite_note")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function saveTraiteNoteAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();
        $data = $request->request->all();
        $id_ligne_traite = $data['id_ligne_traite'];
        $note = $data['note_traite'];
        $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($id_ligne_traite);
        $ligne_traite->setNote($note);
        $em->flush();

        return $this->redirectToRoute('echeance_traite_index');
    }

    public function genererBarCode($code)
    {
        $nb_chiffre = strlen($code);
        $barcode = '';
        for ($i = 0; $i < 10 - $nb_chiffre; $i++) {
            $barcode .= '0';
        }
        $barcode .= $code;
        return $barcode;
    }

    /**
     * Lists all locataire entities.
     *
     * @Route("/traite_print/{id}", name="traite_print")
     * @Method("GET")
     * @Security("has_role('ROLE_USER')")
     */
    public function uploadPdfAction(Traite $traite)
    {
        //header("Content-type: application/force-download");
        //header('Content-Disposition: attachment; filename=' . rand(1000, 9999) . '.pdf');
        $generator = new BarcodeGeneratorHTML();
        $tab_bar_code = [];
        foreach ($traite->getLigneTraites() as $ligneTraite) {
            $barcode = $generator->getBarcode($ligneTraite->getBarCode(), $generator::TYPE_CODE_128);
            $tab_bar_code[$ligneTraite->getId()] = $barcode;
        }
        $html = $this->renderView('@EEMTraite/traite/generer_traite.html.twig', [
            'traite' => $traite,
            'tab_bar_code' => $tab_bar_code,
            'server' => 'http://' . $_SERVER['HTTP_HOST'],
        ]);
        $html2pdf = new Html2Pdf('P', 'A4', 'fr');

        $html2pdf->writeHTML($html);
        $html2pdf->Output();


        //readfile($this->getParameter('pdf_locataires') . '/fiche_' . $traite->getId() . '.pdf');

    }

    /**
     * Finds and displays a traite entity.
     *
     * @Route("/ligne_traite_detail", name="ligne_traite_detail")
     * @Method("GET")
     */
    public function LigneTraiteDetailAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $article = $em->getRepository('EEMArticleBundle:Article')->find($request->request->get('article'));
        $parameter = $em->getRepository('EEMParametreBundle:Parametre')->find(1);
        $prixVente = $article->getPrixFinal();

        $tab = [
            'prixVente' => $prixVente,
            'prix_1m' => number_format($prixVente * (1 + ($parameter->getPercent1m() / 100)), 3, '.', ''),
            'prix_2m' => number_format($prixVente * (1 + ($parameter->getPercent2m() / 100)), 3, '.', ''),
            'prix_3m' => number_format($prixVente * (1 + ($parameter->getPercent3m() / 100)), 3, '.', ''),
            'prix_4m' => number_format($prixVente * (1 + ($parameter->getPercent4m() / 100)), 3, '.', ''),
            'prix_5m' => number_format($prixVente * (1 + ($parameter->getPercent5m() / 100)), 3, '.', ''),
            'prix_6m' => number_format($prixVente * (1 + ($parameter->getPercent6m() / 100)), 3, '.', ''),
        ];
        return new Response(json_encode($tab));
    }

    /**
     * Creates a new article entity.
     *
     * @Route("/recup_ligne_traite", name="recup_ligne_traite")
     * @Method({"GET", "POST"})
     */
    public function recupLigneTraiteAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $code_barre = $request->request->get('code_barre');
        $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->findOneBy(['barCode' => $code_barre]);
        if ($ligne_traite) {
            if ($ligne_traite->getEtat()) {
                $tab_json = [
                    'reponse' => 'payer',
                    'date_payer' => $ligne_traite->getDatePaiement()->format('d-m-Y'),
                ];
            } else {
                $traite = $ligne_traite->getTraite();
                $ligne_traite->setEtat(true);
                $ligne_traite->setDatePaiement(new \DateTime());
                $em->persist($ligne_traite);
                $em->flush();

                $comp = 0;
                foreach ($traite->getLigneTraites() as $li_traite) {
                    if ($li_traite->getEtat() == 1) {
                        $comp++;
                    }
                }
                if ($traite->getNbTraite() == $comp) {
                    $client = $traite->getclient();
                    $client->setEtat('non_engage');
                    $em->flush();
                    $traite->setEtat('payer');
                    $em->flush();
                }
                $tab_json = [
                    'reponse' => 'oui',
                    'montant' => $ligne_traite->getMontant(),
                    'echeance' => $ligne_traite->getDateEcheance()->format('d-m-Y'),
                    'client' => $ligne_traite->getTraite()->getClient()->getPrenom() . ' ' . $ligne_traite->getTraite()->getClient()->getNom(),
                ];


                $tresorieService = new TresorieService($em);
                $tresorieService->controleExisteTresorie();
                $tresorieService->mettreAJourTresorie($ligne_traite->getMontant());
            }
        } else {
            $tab_json = [
                'reponse' => 'non',
            ];
        }
        return new Response(json_encode($tab_json));
    }

    /**
     * Finds and displays a traite entity.
     *
     * @Route("/payer_traite_bar_code", name="payer_traite_bar_code")
     * @Method("GET")
     * @Security("has_role('ROLE_USER')")
     */
    public function payerTraiteBarCodeAction(Request $request)
    {
        $barCode = $request->request->get('barCode');
        //echo $barCode . "--";
        $em = $this->getDoctrine()->getManager();
        $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($barCode);
        $msg_erreur = '';
        $traite = null;
        if ($ligne_traite) {
            $traite = $ligne_traite->getTraite();
        } else {
            $msg_erreur = "La traite n'existe pas";
        }

        return $this->redirectToRoute('traite_index', [
            'msg_erreur' => $msg_erreur,
            'traite' => $traite
        ]);
    }

    /**
     * Finds and displays a traite entity.
     *
     * @Route("/payer_traite", name="payer_traite")
     * @Method("GET")
     * @Security("has_role('ROLE_USER')")
     */
    public function payerTraiteAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $ligne_traite = $em->getRepository('EEMTraiteBundle:LigneTraite')->find($request->request->get('id_ligne_traite'));
        $traite = $ligne_traite->getTraite();
        $ligne_traite->setEtat(1);
        $ligne_traite->setDatePaiement(new \DateTime());
        $em->persist($ligne_traite);
        $em->flush();

        $tresorieService = new TresorieService($em);
        $tresorieService->controleExisteTresorie();
        $tresorieService->mettreAJourTresorie($ligne_traite->getMontant());

        $comp = 0;
        foreach ($traite->getLigneTraites() as $li_traite) {
            if ($li_traite->getEtat() == 1) {
                $comp++;
            }
        }
        if ($traite->getNbTraite() == $comp) {
            $client = $traite->getclient();
            $client->setEtat('non_engage');
            $em->flush();
            $traite->setEtat('payer');
            $em->flush();
        }
        return new Response($ligne_traite->getDatePaiement()->format('d/m/Y'));
    }

    /**
     * Finds and displays a traite entity.
     *
     * @Route("/{id}", name="traite_show")
     * @Method("GET")
     * @Security("has_role('ROLE_USER')")
     */
    public function showAction(Traite $traite)
    {
        $deleteForm = $this->createDeleteForm($traite);

        return $this->render('@EEMTraite/traite/show.html.twig', array(
            'traite' => $traite,
            'delete_form' => $deleteForm->createView(),
        ));
    }

    /**
     * Displays a form to edit an existing traite entity.
     *
     * @Route("/{id}/edit", name="traite_edit")
     * @Method({"GET", "POST"})
     * @Security("has_role('ROLE_USER')")
     */
    public function editAction(Request $request, Traite $traite)
    {
        $deleteForm = $this->createDeleteForm($traite);
        $editForm = $this->createForm('EEM\TraiteBundle\Form\TraiteType', $traite);
        $editForm->handleRequest($request);

        if ($editForm->isSubmitted() && $editForm->isValid()) {
            $this->getDoctrine()->getManager()->flush();

            return $this->redirectToRoute('traite_edit', array('id' => $traite->getId()));
        }

        return $this->render('@EEMTraite/traite/edit.html.twig', array(
            'traite' => $traite,
            'edit_form' => $editForm->createView(),
            'delete_form' => $deleteForm->createView(),
        ));
    }

    /**
     * Deletes a traite entity.
     *
     * @Route("/{id}/delete", name="traite_delete")
     * @Method("DELETE")
     * @Security("has_role('ROLE_USER')")
     */
    public function deleteAction(Request $request, Traite $traite)
    {
        $form = $this->createDeleteForm($traite);
        $form->handleRequest($request);

        $em = $this->getDoctrine()->getManager();
        $historiqueService=new HistoriqueService($em);
        if ($form->isSubmitted() && $form->isValid()) {
            $article = $traite->getArticle();
            $article->setQte($article->getQte() + 1);
            $historiqueService->HistoriqueTraite($article,$traite->getId(),'Vente annulé',1);
            $em->persist($article);
            $em->remove($traite);
            $em->flush();
        }

        return $this->redirectToRoute('traite_index');
    }

    /**
     * Creates a form to delete a traite entity.
     *
     * @param Traite $traite The traite entity
     *
     * @return \Symfony\Component\Form\Form The form
     */
    private function createDeleteForm(Traite $traite)
    {
        return $this->createFormBuilder()
            ->setAction($this->generateUrl('traite_delete', array('id' => $traite->getId())))
            ->setMethod('DELETE')
            ->getForm();
    }

    public function convertDate($date)
    {
        $date = str_replace('/', '-', $date);
        $tabDate = explode('-', $date);
        $enDate = $tabDate[2] . '-' . $tabDate[1] . '-' . $tabDate[0];
        return $enDate;
    }

    private function buildSearchUrl($data)
    {
        $url = [];
        foreach ($data as $k => $v) {
            if (isset($data['search_traite']['client']) && !empty($data['search_traite']['client'])) {
                $url['client'] = $data['search_traite']['client'];
            }
        }
        return $url;
    }

}

Zerion Mini Shell 1.0