<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace CmBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\StreamedResponse;
use CmBundle\Entity\Ingresos;
use CmBundle\Entity\AlumonTramites;
use CmBundle\Controller\PDF;
use CmBundle\Controller\PDFBachillerato;
use CmBundle\Entity\Pagos;
use CmBundle\Entity\Extraordinarios;
use Picqer\Barcode\BarcodeGeneratorPNG;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

date_default_timezone_set('America/Mexico_City');

/**
 * Description of CajaController
 *
 * @author omar
 */
class CajaController extends Controller
{

    //put your code here
    public function vistaAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $cveCtl = $request->get('cveCtl');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('cveCtl' => $cveCtl));

                if ($alumno != null) { // EL ALUMNO SI EXISTE
                    $ideAlu = $alumno->getIdeAlu();

                    $fotoAlumno = 0;
                    $nombre_fichero = "fotos/" . $alumno->getCveCtl() . ".jpg";

                    if (file_exists($nombre_fichero)) {
                        $fotoAlumno = $nombre_fichero;
                    } else {
                        $fotoAlumno = "images/usuario.png";
                    }


                    if ($alumno->getTipoAlumno() == 2) { // ES BACHILLERATO EXAMEN ÚNICO
                    } elseif ($alumno->getTipoAlumno() == 8) { // TITULACION DIRECTA
                        $auxAlumno = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('curp' => $alumno->getCurp()));

                        $pagos = $em->getRepository('CmBundle:Pagos')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $otros = $em->getRepository('CmBundle:CostoTramites')
                            ->findBy(array(), array('cveTra' => 'ASC', 'desTra' => 'ASC'));


                        $oAlumnos = $em->getRepository('CmBundle:AlumonTramites')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('ideAluTra' => 'DESC'));

                        $pagosConvenio = $em->getRepository('CmBundle:PagosConvenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $convenios = $em->getRepository('CmBundle:Convenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));


                        $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                            ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));

                        return $this->render('CmBundle:Caja:pagosTD.html.twig', array(
                            'alumno' => $alumno,
                            'pagos' => $pagos,
                            'otros' => $otros,
                            'otrosPagos' => $oAlumnos,
                            'pagosConvenio' => $pagosConvenio,
                            'convenios' => $convenios,
                            'auxAlumno' => $auxAlumno,
                            'titulacion' => $titulacion,
                            'pagoTitulacion' => $pagoTitulacion,
                            'especialidad' => $especialidades,
                            'fotoAlumno' => $fotoAlumno
                        ));
                    } else { // PUEDE SER BACHILLERATO ESCOLARIZADO // LICENCIATURAS // MAESTRÍAS // DOCTORADOS
                        $auxAlumno = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('curp' => $alumno->getCurp()));

                        $pagos = $em->getRepository('CmBundle:Pagos')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $otros = $em->getRepository('CmBundle:CostoTramites')
                            ->findBy(array(), array('cveTra' => 'ASC', 'desTra' => 'ASC'));


                        $oAlumnos = $em->getRepository('CmBundle:AlumonTramites')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('ideAluTra' => 'DESC'));

                        $pagosConvenio = $em->getRepository('CmBundle:PagosConvenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $convenios = $em->getRepository('CmBundle:Convenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));


                        return $this->render('CmBundle:Caja:pagos.html.twig', array(
                            'alumno' => $alumno,
                            'pagos' => $pagos,
                            'otros' => $otros,
                            'otrosPagos' => $oAlumnos,
                            'pagosConvenio' => $pagosConvenio,
                            'convenios' => $convenios,
                            'auxAlumno' => $auxAlumno,
                            'titulacion' => $titulacion,
                            'pagoTitulacion' => $pagoTitulacion,
                            'fotoAlumno' => $fotoAlumno
                        ));
                    }
                } else {

                    return $this->redirect($this->generateUrl('cm_homepage'));
                }
            } else { // ES GET
                $em = $this->getDoctrine()->getManager();

                $cveCtl = $request->get('cveCtl');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('cveCtl' => $cveCtl));

                if ($alumno != null) { // EL ALUMNO SI EXISTE
                    $ideAlu = $alumno->getIdeAlu();

                    $fotoAlumno = 0;
                    $nombre_fichero = "fotos/" . $alumno->getCveCtl() . ".jpg";

                    if (file_exists($nombre_fichero)) {
                        $fotoAlumno = $nombre_fichero;
                    } else {
                        $fotoAlumno = "images/usuario.png";
                    }


                    if ($alumno->getTipoAlumno() == 2) { // ES BACHILLERATO EXAMEN ÚNICO
                    } elseif ($alumno->getTipoAlumno() == 8) { // TITULACION DIRECTA
                        $auxAlumno = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('curp' => $alumno->getCurp()));

                        $pagos = $em->getRepository('CmBundle:Pagos')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $otros = $em->getRepository('CmBundle:CostoTramites')
                            ->findBy(array(), array('cveTra' => 'ASC', 'desTra' => 'ASC'));

                        $oAlumnos = $em->getRepository('CmBundle:AlumonTramites')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('ideAluTra' => 'DESC'));

                        $pagosConvenio = $em->getRepository('CmBundle:PagosConvenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $convenios = $em->getRepository('CmBundle:Convenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        //$pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                        //        ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => "PAGO DE TITULACIÓN"));
                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                            ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));

                        return $this->render('CmBundle:Caja:pagosTD.html.twig', array(
                            'alumno' => $alumno,
                            'pagos' => $pagos,
                            'otros' => $otros,
                            'otrosPagos' => $oAlumnos,
                            'pagosConvenio' => $pagosConvenio,
                            'convenios' => $convenios,
                            'auxAlumno' => $auxAlumno,
                            'titulacion' => $titulacion,
                            'pagoTitulacion' => $pagoTitulacion,
                            'titulacion' => $titulacion,
                            'especialidad' => $especialidades,
                            'fotoAlumno' => $fotoAlumno
                        ));
                    } else { // PUEDE SER BACHILLERATO ESCOLARIZADO // LICENCIATURAS // MAESTRÍAS // DOCTORADOS
                        $auxAlumno = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('curp' => $alumno->getCurp()));

                        $pagos = $em->getRepository('CmBundle:Pagos')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $otros = $em->getRepository('CmBundle:CostoTramites')
                            ->findBy(array(), array('cveTra' => 'ASC', 'desTra' => 'ASC'));

                        $oAlumnos = $em->getRepository('CmBundle:AlumonTramites')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('ideAluTra' => 'DESC'));
                        $pagosConvenio = $em->getRepository('CmBundle:PagosConvenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                        $convenios = $em->getRepository('CmBundle:Convenios')
                            ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        //$pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                        //        ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));


                        return $this->render('CmBundle:Caja:pagos.html.twig', array(
                            'alumno' => $alumno,
                            'pagos' => $pagos,
                            'otros' => $otros,
                            'otrosPagos' => $oAlumnos,
                            'pagosConvenio' => $pagosConvenio,
                            'convenios' => $convenios,
                            'auxAlumno' => $auxAlumno,
                            'titulacion' => $titulacion,
                            'pagoTitulacion' => $pagoTitulacion,
                            'fotoAlumno' => $fotoAlumno
                        ));
                    }
                } else {
                    return $this->redirect($this->generateUrl('cm_homepage'));
                }
            } // FIN METODO POST O GET
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cInscripcionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $fechaA = $alumno->getFecIns();
                $fechaB = strtotime('+20 day', strtotime($fechaA->format('Y-m-d')));
                $fechaB = date('Y-m-d', $fechaB);
                $fechaB = new \DateTime($fechaB);
                $fechaC = new \DateTime(date('Y-m-d')); // HOY

                $banRecargos = 0;
                if ($fechaA <= $fechaC & $fechaB > $fechaC) {
                    print_r("SIN RECARGOS, PAGA EN EL RANGO DE DÍAS PERMITIDO<br>");
                    print_r("FECHA INICIAL: " . $fechaA->format('d-m-Y'));
                    print_r("<br>");
                    print_r("FECHA LÍMITE: " . $fechaB->format('d-m-Y'));
                    $banRecargos = 0;
                } elseif ($fechaA >= $fechaC & $fechaB > $fechaC) {
                    print_r("SIN RECARGOS, INSCRIPCION ADELANTADA<br>");
                    print_r("FECHA INICIAL: " . $fechaA->format('d-m-Y'));
                    print_r("<br>");
                    print_r("FECHA LÍMITE: " . $fechaB->format('d-m-Y'));
                    $banRecargos = 0;
                } elseif ($fechaA < $fechaC & $fechaB <= $fechaC) {
                    print_r("CON RECARGOS<br>");
                    print_r("FECHA INICIAL: " . $fechaA->format('d-m-Y'));
                    print_r("<br>");
                    print_r("FECHA LÍMITE: " . $fechaB->format('d-m-Y'));
                    $banRecargos = 1;
                }

                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $ideAlu, 'staPag' => 1));

                return $this->render('CmBundle:Caja:tablaInscripcion.html.twig', array('a' => $alumno, 'banderaRec' => $banRecargos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function gInscripcionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $referencia = $request->get('referencia');
                $montoInscripcion = $request->get('ins');
                $recargos = $request->get('recargos');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $pago = $em->getRepository('CmBundle:Pagos')
                    ->findOneBy(array('cveAlu' => $ideAlu, 'staPag' => 1, 'numero' => 0));

                $pago->setReferencia($referencia);
                $pago->setStaPag(2);
                if ($alumno->getReinscripcion() == 0) {
                    $pago->setDescripcion("PAGO DE INSCRIPCION");
                } else {
                    $pago->setDescripcion("PAGO DE REINSCRIPCION");
                }

                $pago->setTipPag($request->get("modoPago"));
                $pago->setMonto($montoInscripcion);
                $pago->setRecargos($recargos);
                $pago->setCveUsu($session->get('identificador'));

                $anio = date('y');

                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));

                $contador = $plantel->getContadorIngresos();

                $numeroRecibo = $session->get('plantel') . $anio;

                if ($contador <= 9) {
                    $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                } elseif ($contador > 9 & $contador <= 99) {
                    $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                } elseif ($contador > 99 & $contador <= 999) {
                    $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                } elseif ($contador > 999 & $contador <= 9999) {
                    $numeroRecibo = $session->get('plantel') . $anio . $contador;
                }

                if ($request->get("modoPago") != 99) {
                    $pago->setNumRecibo($numeroRecibo);
                } else {

                }

                if ($request->get("modoPago") != 99) {
                    $ingreso = new Ingresos();
                    $ingreso->setCveAlu($alumno);
                    $ingreso->setReferencia($referencia);
                    $ingreso->setMonto($montoInscripcion);
                    $ingreso->setBeca(0);
                    $ingreso->setRecargos($recargos);
                    $ingreso->setTotal($montoInscripcion);
                    if ($alumno->getReinscripcion() == 0) {
                        $ingreso->setDescripcion("PAGO DE INSCRIPCION");
                    } else {
                        $ingreso->setDescripcion("PAGO DE REINSCRIPCION");
                    }
                    $ingreso->setTipPag($request->get("modoPago"));
                    //$ingreso->setCveRazSoz($cveRazSoz);
                    $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                    $ingreso->setCvePla($plantel);
                    $ingreso->setCveUsu($session->get('identificador'));
                    $ingreso->setNumRecibo($numeroRecibo);
                    $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                    $em->persist($ingreso);
                    $em->flush();

                    $pago->setCveIng($ingreso->getIdeIng());
                } else {
                    // NO REGISTRAR INGRESO
                }

                $em->persist($pago);
                $em->flush();

                if ($request->get("modoPago") != 99) {
                    $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                    $em->persist($plantel);
                    $em->flush();
                } else {
                    // NO AUMENTAR EL CONTADOR DE INGRESOS DEL PLANTEL
                }

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                return $this->render('CmBundle:Caja:correctoMensualidad.html.twig', array('pagos' => $listaPagos, 'alumno' => $alumno));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function impInscripcionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 77 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "POST") {

            $em = $this->getDoctrine()->getManager();

            $ideIng = $request->get('ideIng');
            $ingreso = $em->getRepository('CmBundle:Ingresos')
                ->findOneBy(array('ideIng' => $ideIng));

            $pdf = new PDF('P', 'mm', 'Letter');
            $pdf->setTitulo("RECIBO");
            $pdf->setPosicion("V");
            $pdf->AddPage();
            $pdf->AliasNbPages();
            $pdf->SetFont('Arial', '', 12);
            $pdf->ReciboPagado($ingreso);

            return new Response($pdf->Output('recibo.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cMensualidadAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');


                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $pago = $em->getRepository('CmBundle:Pagos')
                    ->findOneBy(array('cveAlu' => $ideAlu, 'staPag' => 1, 'numero' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10')));
                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $ideAlu, 'staPag' => 1));
                $bandera = 0;
                $dia = date('d');
                $corteA = $alumno->getCorteA();
                $corteB = $alumno->getCorteB();

                $mesActual = $this->traerNumeroDeMes(date('M'));
                $anioActual = date('Y');
                if ($pago != null) {
                    $mesAPagar = $pago->getFecIni();
                    $mesAPagar_ultimoDia = $mesAPagar;
                    print_r("MES A PAGAR: " . $mesAPagar_ultimoDia->format('d-m-Y'));
                    print_r("<br>");
                    $mesAPagar_ultimoDia->modify('Last Day Of This Month');
                    print_r("MES A PAGAR ULTIMO DÍA: " . $mesAPagar_ultimoDia->format('d-m-Y'));
                    print_r("<br>");
                    $fechaCorteA = $alumno->getCorteA();

                    if ($fechaCorteA == -1) {
                        print_r("CORTE A: " . "PAGA EL ÚLTIMO DÍA DEL MES");
                    } elseif ($fechaCorteA == -2) {
                        print_r("CORTE A: " . "NO PAGA RECARGOS");
                    }


                    $hoy = new \DateTime(date('Y-m-d'));
                    $banRecargos = 0; // SIN RECARGOS
                    print_r("<br>");
                    if ($fechaCorteA == -1) { // PAGA LOS ULTIMOS DÍAS DEL MES
                        $fA = new \DateTime(date($mesAPagar_ultimoDia->format('Y-m-d')));
                        $fB = new \DateTime(date($mesAPagar_ultimoDia->format('Y-m-d')));
                        $fB = $fB->modify('+10 days');

                        print_r("FA: " . $fA->format('d-m-Y') . "<br>");
                        print_r("FB: " . $fB->format('d-m-Y') . "<br>");
                        print_r("HOY: " . $hoy->format('d-m-Y') . "<br>");

                        if ($hoy <= $fA) {// PAGA SIN RECARGOS
                            $banRecargos = 0;
                            print_r($hoy <= $fA);
                            print_r("<br>SIN RECARGOS<BR>");
                        } elseif ($fA < $hoy & $hoy <= $fB) { // PAGA CON RECARGO DE $100.00
                            $banRecargos = 1;
                            print_r("<br>$100.00<BR>");
                        } elseif ($fB < $hoy) { // PAGA CON RECARGOS DE $200.00
                            $banRecargos = 2;
                            print_r("<br>$200.00<BR>");
                        }

                        print_r("Bandera Recargos: " . $banRecargos);
                    } elseif ($fechaCorteA == -2) { // NO PAGA RECARGOS
                        $banRecargos = 0;
                    } elseif ($fechaCorteA > 0) {
                        $fA = new \DateTime(date($mesAPagar_ultimoDia->format('Y-m-d')));
                        $fA->modify('First Day Of This Month');
                        $fA->modify('+' . $fechaCorteA . ' days -2 days');

                        $fB = new \DateTime(date($fA->format('Y-m-d')));
                        $fB->modify('+10 days');

                        print_r("FA: " . $fA->format('d-m-Y'));
                        print_r("<br>");
                        print_r("FB: " . $fB->format('d-m-Y'));
                        print_r("<br>");
                        print_r("HOY: " . $hoy->format('d-m-Y') . "<br>");

                        if ($hoy <= $fA) {// PAGA SIN RECARGOS
                            $banRecargos = 0;
                            print_r($hoy <= $fA);
                            print_r("<br>SIN RECARGOS<BR>");
                        } elseif ($fA < $hoy & $hoy <= $fB) { // PAGA CON RECARGO DE $100.00
                            $banRecargos = 1;
                            print_r("<br>$100.00<BR>");
                        } elseif ($fB < $hoy) { // PAGA CON RECARGOS DE $200.00
                            $banRecargos = 2;
                            print_r("<br>$200.00<BR>");
                        }

                        print_r("Bandera Recargos: " . $banRecargos);
                    }

                    $bandera = $banRecargos;

                    return $this->render('CmBundle:Caja:tablaMensualidad.html.twig', array('a' => $alumno, 'p' => $pago, 'b' => $bandera, 'lPagos' => $listaPagos));
                } else {
                    return $this->render('CmBundle:Caja:tablaMensualidad.html.twig', array('a' => $alumno, 'p' => $pago));
                }
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    function traerNumeroDeMes($mes)
    {
        switch ($mes) {
            case 'ENERO':
                return 1;
                break;
            case 'FEBRERO':
                return 2;
                break;
            case 'MARZO':
                return 3;
                break;
            case 'ABRIL':
                return 4;
                break;
            case 'MAYO':
                return 5;
                break;
            case 'JUNIO':
                return 6;
                break;
            case 'JULIO':
                return 7;
                break;
            case 'AGOSTO':
                return 8;
                break;
            case 'SEPTIEMBRE':
                return 9;
                break;
            case 'OCTUBRE':
                return 10;
                break;
            case 'NOVIEMBRE':
                return 11;
                break;
            case 'DICIEMBRE':
                return 12;
                break;
            case 'Jan':
                return 1;
                break;
            case 'Feb':
                return 2;
                break;
            case 'Mar':
                return 3;
                break;
            case 'Abr':
                return 4;
                break;
            case 'May':
                return 5;
                break;
            case 'Jun':
                return 6;
                break;
            case 'Jul':
                return 7;
                break;
            case 'Aug':
                return 8;
                break;
            case 'Sep':
                return 9;
                break;
            case 'Oct':
                return 10;
                break;
            case 'Dec':
                return 11;
                break;
        }
    }

    public function cPagosBachiAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $idePag = $request->get('idePag');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $pago = $em->getRepository('CmBundle:Pagos')
                    ->findOneBy(array('idePag' => $idePag));
                $listaPagos = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $ideAlu, 'cvePag' => $idePag));

                return $this->render('CmBundle:Caja:tablaAbonos.html.twig', array('a' => $alumno, 'p' => $pago, 'lista' => $listaPagos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cTablaPagosBachiAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "alumno");

            $ideAlu = $request->get('ideAlu');

            $em = $this->getDoctrine()->getManager();

            $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $ideAlu));

            $pagos = $em->getRepository('CmBundle:Pagos')
                ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
            $pagosConAbonos = array();
            foreach ($pagos as $key => $value) {
                $listaPagos = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $ideAlu, 'cvePag' => $value->getIdePag()));
                $suma = 0;
                foreach ($listaPagos as $k => $v) {
                    $suma = $suma + $v->getMonto();
                }
                $pagosConAbonos[$key] = array($value, $suma);
            }

            return $this->render('CmBundle:Caja:tabla-pagos-abonos-bachi-tecno.html.twig', array(
                'pagosConAbonos' => $pagosConAbonos,
                'a' => $alumno
            ));
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function gMensualidadAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $referencia = $request->get('referencia');
                $totalM = $request->get('tM');

                $anuCom = $request->get('anuCom'); // ANUALIDAD COMPLETA
                $aM = $request->get('aM'); // ADELANTAR MESES
                $mesesA = $request->get('mesesA'); // ADELANTAR MESES
                $recargos = $request->get('recargos'); // RECARGOS

                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));

                if ($anuCom == "true") {// ANUALIDAD COMPLETA == TRUE
                    $alumno = $em->getRepository('CmBundle:Alumnos')
                        ->findOneBy(array('ideAlu' => $ideAlu));

                    //$pago = $em->getRepository('CmBundle:Pagos')
                    //        ->findBy(array('cveAlu' => $ideAlu, 'staPag' => 1));
                    $dql = "SELECT p "
                        . "FROM CmBundle:Pagos p "
                        . "WHERE p.cveAlu = :cve "
                        . "AND p.staPag = 1 "
                        . "AND p.numero != -1 ";
                    $query = $em->createQuery($dql);
                    $query->setParameter('cve', $ideAlu);
                    $pago = $query->getResult();

                    $bandera = 0;
                    $dia = date('d');
                    if ($dia <= 6) {
                        $bandera = 0;
                    } else {
                        $bandera = 1;
                    }

                    if (count($pago) > 0) {
                        $montoDividido = $totalM / count($pago);

                        $ingreso = new Ingresos();
                        $ingreso->setCveAlu($alumno);
                        $ingreso->setReferencia($referencia);
                        $ingreso->setMonto($totalM);
                        $ingreso->setBeca($alumno->getCveBeca()->getMonto());

                        $subtotal = ($totalM - $alumno->getCveBeca()->getMonto());

                        $ingreso->setRecargos($recargos);
                        $ingreso->setTotal($totalM);
                        $ingreso->setDescripcion("PAGO DE MENSUALIDAD");
                        $ingreso->setTipPag($request->get("modoPago"));
                        //$ingreso->setCveRazSoz($cveRazSoz);
                        $ingreso->setCvePla($plantel);
                        $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                        $ingreso->setCveUsu($session->get('identificador'));

                        $anio = date('y');
                        $contador = $plantel->getContadorIngresos();

                        $numeroRecibo = $session->get('plantel') . $anio;

                        if ($contador <= 9) {
                            $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                        } elseif ($contador > 9 & $contador <= 99) {
                            $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                        } elseif ($contador > 99 & $contador <= 999) {
                            $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                        } elseif ($contador > 999 & $contador <= 9999) {
                            $numeroRecibo = $session->get('plantel') . $anio . $contador;
                        }

                        $ingreso->setNumRecibo($numeroRecibo);
                        $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                        $em->persist($ingreso);
                        $em->flush();

                        foreach ($pago as $key => $value) {
                            $value->setReferencia($referencia);
                            /* if ($key == 0) {
                              $value->setMonto($totalM);
                              } else {
                              $value->setMonto(0);
                              } */
                            $value->setMonto($montoDividido);
                            $value->setStaPag(2);
                            $value->setDescripcion("PAGO DE MENSUALIDAD");
                            $value->setTipPag($request->get("modoPago"));
                            $value->setCveUsu($session->get('identificador'));
                            $value->setNumRecibo($numeroRecibo);
                            $value->setCveIng($ingreso->getIdeIng());

                            $em->persist($value);
                            $em->flush();
                        }

                        $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                        $em->persist($plantel);
                        $em->flush();
                    }
                } else { // EN TRO CASO
                    if ($aM == "true") { // ADELANTA  MESES
                        $alumno = $em->getRepository('CmBundle:Alumnos')
                            ->findOneBy(array('ideAlu' => $ideAlu));
                        //$montoDividido = $totalM / count($mesesA);
                        $dia = date('d');

                        $anio = date('y');
                        $contador = $plantel->getContadorIngresos();

                        $numeroRecibo = $session->get('plantel') . $anio;

                        if ($contador <= 9) {
                            $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                        } elseif ($contador > 9 & $contador <= 99) {
                            $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                        } elseif ($contador > 99 & $contador <= 999) {
                            $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                        } elseif ($contador > 999 & $contador <= 9999) {
                            $numeroRecibo = $session->get('plantel') . $anio . $contador;
                        }

                        if (count($mesesA) > 0) {

                            if ($request->get("modoPago") != 99) {
                                $ingreso = new Ingresos();
                                $ingreso->setCveAlu($alumno);
                                $ingreso->setReferencia($referencia);
                                $ingreso->setMonto($totalM);
                                $ingreso->setBeca($alumno->getCveBeca()->getMonto());

                                $subtotal = ($totalM - $alumno->getCveBeca()->getMonto());

                                $ingreso->setRecargos($recargos);

                                $ingreso->setTotal($totalM);
                                $ingreso->setDescripcion("PAGO DE MENSUALIDAD");
                                $ingreso->setTipPag($request->get("modoPago"));
                                //$ingreso->setCveRazSoz($cveRazSoz);
                                $ingreso->setCvePla($plantel);
                                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                                $ingreso->setCveUsu($session->get('identificador'));

                                $ingreso->setNumRecibo($numeroRecibo);
                                $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                                $em->persist($ingreso);
                                $em->flush();
                            } else {
                                // NO REGISTRA NINGÚN INGRESO
                            }
                        }
                        $montoDividido = $totalM / count($mesesA);
                        foreach ($mesesA as $kk => $vv) {
                            $pago = $em->getRepository('CmBundle:Pagos')
                                ->findOneBy(array('idePag' => $vv));
                            $bandera = 0;

                            if ($dia <= 6) {
                                $bandera = 0;
                            } else {
                                $bandera = 1;
                            }

                            if ($pago != null) {
                                $pago->setReferencia($referencia);
                                if ($kk == 0) {
                                    $pago->setMonto($montoDividido);
                                } else {
                                    $pago->setMonto($montoDividido);
                                }
                                $pago->setRecargos($recargos);
                                $pago->setStaPag(2);
                                $pago->setDescripcion("PAGO DE MENSUALIDAD");
                                $pago->setTipPag($request->get("modoPago"));
                                $pago->setCveUsu($session->get('identificador'));

                                if ($request->get("modoPago") != 99) {
                                    $pago->setNumRecibo($numeroRecibo);
                                    $pago->setCveIng($ingreso->getIdeIng());
                                } else {
                                    // NO REGISTRA NUMERO DE RECIBO
                                }

                                $em->persist($pago);
                                $em->flush();
                            }
                        }

                        if ($request->get("modoPago") != 99) {
                            $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                            $em->persist($plantel);
                            $em->flush();
                        } else {
                            // NO AUMENTAR EL CONTADOR DE INGRESOS DEL PLANTEL
                        }
                    } else { // EN OTRO CASO SOLO PAGA UN SOLO MES
                        $alumno = $em->getRepository('CmBundle:Alumnos')
                            ->findOneBy(array('ideAlu' => $ideAlu));

                        $pago = $em->getRepository('CmBundle:Pagos')
                            ->findOneBy(array('cveAlu' => $ideAlu, 'staPag' => 1, 'numero' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10')));
                        $bandera = 0;
                        $dia = date('d');
                        if ($dia <= 6) {
                            $bandera = 0;
                        } else {
                            $bandera = 1;
                        }

                        $pago->setReferencia($referencia);
                        $pago->setMonto($totalM);
                        $pago->setRecargos($recargos);
                        $pago->setStaPag(2);
                        $pago->setDescripcion("PAGO DE MENSUALIDAD");
                        $pago->setTipPag($request->get("modoPago"));
                        $pago->setCveUsu($session->get('identificador'));

                        $anio = date('y');
                        $contador = $plantel->getContadorIngresos();

                        $numeroRecibo = $session->get('plantel') . $anio;

                        if ($contador <= 9) {
                            $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                        } elseif ($contador > 9 & $contador <= 99) {
                            $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                        } elseif ($contador > 99 & $contador <= 999) {
                            $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                        } elseif ($contador > 999 & $contador <= 9999) {
                            $numeroRecibo = $session->get('plantel') . $anio . $contador;
                        }

                        if ($request->get("modoPago") != 99) {
                            $pago->setNumRecibo($numeroRecibo);
                        } else {
                            // NO REGISTRA NUMERO DE RECIBO
                        }


                        if ($request->get("modoPago") != 99) {
                            $ingreso = new Ingresos();
                            $ingreso->setCveAlu($alumno);
                            $ingreso->setReferencia($referencia);
                            $ingreso->setMonto($totalM);
                            $ingreso->setBeca($alumno->getCveBeca()->getMonto());

                            $subtotal = ($totalM - $alumno->getCveBeca()->getMonto());

                            $ingreso->setRecargos($recargos);

                            $ingreso->setTotal($totalM);
                            $ingreso->setDescripcion("PAGO DE MENSUALIDAD");
                            $ingreso->setTipPag($request->get("modoPago"));
                            //$ingreso->setCveRazSoz($cveRazSoz);
                            $ingreso->setCvePla($plantel);
                            $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                            $ingreso->setCveUsu($session->get('identificador'));
                            $ingreso->setNumRecibo($numeroRecibo);
                            $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                            $em->persist($ingreso);
                            $em->flush();

                            $pago->setCveIng($ingreso->getIdeIng());
                        } else {
                            // NO REGISTRA INGRESOS
                        }

                        $em->persist($pago);
                        $em->flush();

                        if ($request->get("modoPago") != 99) {
                            $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                            $em->persist($plantel);
                            $em->flush();
                        } else {
                            // NO AUMENTAR EL CONTADOR DE INGRESOS DEL PLANTEL
                        }
                    }
                }

                /* $cveRazSoz->setContador($cveRazSoz->getContador() + 1);
                  $em->persist($cveRazSoz);
                  $em->flush(); */

                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                return $this->render('CmBundle:Caja:correctoMensualidad.html.twig', array('pagos' => $listaPagos, 'alumno' => $alumno));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function gPagosBachiAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $idePag = $request->get('idePag');
                $referencia = $request->get('referencia');
                $totalM = $request->get('tM');


                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));

                $anio = date('y');
                $contador = $plantel->getContadorIngresos();

                $numeroRecibo = $session->get('plantel') . $anio;

                if ($contador <= 9) {
                    $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                } elseif ($contador > 9 & $contador <= 99) {
                    $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                } elseif ($contador > 99 & $contador <= 999) {
                    $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                } elseif ($contador > 999 & $contador <= 9999) {
                    $numeroRecibo = $session->get('plantel') . $anio . $contador;
                }

                $pago = $em->getRepository('CmBundle:Pagos')
                    ->findOneBy(array('cveAlu' => $ideAlu, 'idePag' => $idePag));

                $ingreso = new Ingresos();
                $ingreso->setCveAlu($alumno);
                $ingreso->setReferencia($referencia);
                $ingreso->setMonto($totalM);
                $ingreso->setBeca($alumno->getCveBeca()->getMonto());
                $ingreso->setRecargos(0);
                $ingreso->setTotal($totalM);
                if ($pago->getDescripcion() == "INSCRIPCIÓN") {
                    $ingreso->setDescripcion($pago->getDescripcion() . " E.U.");
                } else {
                    $ingreso->setDescripcion("ABONO: " . $pago->getDescripcion());
                }

                $ingreso->setTipPag($request->get("modoPago"));
                //$ingreso->setCveRazSoz($cveRazSoz);
                $ingreso->setNumRecibo($numeroRecibo);
                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                $ingreso->setCvePla($plantel);
                $ingreso->setCvePag($idePag);
                $ingreso->setCveUsu($session->get('identificador'));
                $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                $em->persist($ingreso);
                $em->flush();

                $pago->setCveIng($ingreso->getIdeIng());

                $em->persist($pago);
                $em->flush();

                /* $cveRazSoz->setContador($cveRazSoz->getContador() + 1);
                  $em->persist($cveRazSoz);
                  $em->flush(); */

                $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                $em->persist($plantel);
                $em->flush();

                // =====
                $listaPagos = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $ideAlu, 'cvePag' => $idePag));

                return $this->render('CmBundle:Caja:tablaAbonos.html.twig', array('a' => $alumno, 'p' => $pago, 'lista' => $listaPagos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function impPagosBachiAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 77 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "POST") {

            $em = $this->getDoctrine()->getManager();

            $ideIng = $request->get('ideIng');
            $cveAlu = $request->get('ideAlu');
            $ingreso = $em->getRepository('CmBundle:Ingresos')
                ->findOneBy(array('ideIng' => $ideIng, 'cveAlu' => $cveAlu));

            $usuario = $em->getRepository('CmBundle:Empleados')
                ->findOneBy(array('identificador' => $ingreso->getCveUsu()));

            $generator = new BarcodeGeneratorPNG();
            $imagenBarra = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getCveAlu()->getCveCtl(), $generator::TYPE_CODE_128));
            $cb1 = $this->base64_to_png($imagenBarra, 'barras/' . $ingreso->getCveAlu()->getCveCtl() . '.png');

            $imagenBarraDos = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getNumRecibo(), $generator::TYPE_CODE_128));
            $cb2 = $this->base64_to_png($imagenBarraDos, 'barras/' . $ingreso->getNumRecibo() . '.png');

            $rolUsuario = $session->get("rol");

            //$pdf = new PDFBachillerato('P', 'mm', 'Letter');
            $pdf = new PDFBachillerato('L', 'mm', array(140, 216));
            $pdf->banRecibo = 1;
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobante(0, $ingreso, null, 0, $usuario, $cb1, $cb2, $rolUsuario);
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobante(0, $ingreso, null, 0, $usuario, $cb1, $cb2, $rolUsuario);

            return new Response($pdf->Output('comprobante.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));

            //return new Response($pdf->Output('reciboA.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function impMensualidadAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 77 || $session->get("rol") == 101)) {

            $em = $this->getDoctrine()->getManager();

            $ideIng = $request->get('ref');
            $ban = $request->get('ban');
            $cveAlu = $request->get('ideAlu');
            $cveIng = $request->get('cveIng');
            $numRec = $request->get('numRec');

            $ingreso = $em->getRepository('CmBundle:Ingresos')
                ->findOneBy(array('ideIng' => $cveIng, 'cveAlu' => $cveAlu));
            $pago = $em->getRepository('CmBundle:Pagos')
                ->findOneBy(array('numRecibo' => $numRec, 'cveAlu' => $cveAlu));
            $usuario = $em->getRepository('CmBundle:Empleados')
                ->findOneBy(array('identificador' => $ingreso->getCveUsu()));

            $generator = new BarcodeGeneratorPNG();
            //echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
            $imagenBarra = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getCveAlu()->getCveCtl(), $generator::TYPE_CODE_128));
            $cb1 = $this->base64_to_png($imagenBarra, 'barras/' . $ingreso->getCveAlu()->getCveCtl() . '.png');

            $imagenBarraDos = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getNumRecibo(), $generator::TYPE_CODE_128));
            $cb2 = $this->base64_to_png($imagenBarraDos, 'barras/' . $ingreso->getNumRecibo() . '.png');


            $rolUsuario = $session->get("rol");

            $pdf = new PDFBachillerato('L', 'mm', array(140, 216));
            $pdf->banRecibo = 1;
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobante(0, $ingreso, $pago, 0, $usuario, $cb1, $cb2, $rolUsuario);
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobante(0, $ingreso, $pago, 0, $usuario, $cb1, $cb2, $rolUsuario);

            return new Response($pdf->Output('comprobante.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function lineaDePagoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "POST") {

            $em = $this->getDoctrine()->getManager();

            $ideAlu = $request->get('ideAlu');


            $alumno = $em->getRepository('CmBundle:Alumnos')
                ->findOneBy(array('ideAlu' => $ideAlu));
            $pago = $em->getRepository('CmBundle:Pagos')
                ->findOneBy(array('cveAlu' => $ideAlu, 'staPag' => 1));
            $bandera = 0;
            $dia = date('d');
            if ($dia <= 6) {
                $bandera = 0;
            } else {
                $bandera = 1;
            }

            $pdf = new PDF('P', 'mm', 'Letter');
            $pdf->setTitulo("LINEA DE PAGO");
            $pdf->setPosicion("V");
            $pdf->AddPage();
            $pdf->AliasNbPages();
            $pdf->SetFont('Arial', '', 12);
            $pdf->LineaDePago($alumno, $pago, 0, $pago->getSemestre());
            $pdf->AddPage();
            $pdf->LineaDePago($alumno, $pago, 0.15, $pago->getSemestre());

            return new Response($pdf->Output('reciboM.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cOtroAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideOtro = $request->get('ideOtro');


                $otro = $em->getRepository('CmBundle:CostoTramites')
                    ->findOneBy(array('ideCosTra' => $ideOtro));

                return $this->render('CmBundle:Caja:tablaOtro.html.twig', array('otro' => $otro));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function gOtroAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideOtro = $request->get('ideOtro');
                $tipoPago = $request->get('modoPag');
                $referencia = $request->get('referencia');
                $ideAlu = $request->get('ideAlu');
                $monto = $request->get('monto');


                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $otro = $em->getRepository('CmBundle:CostoTramites')
                    ->findOneBy(array('ideCosTra' => $ideOtro));

                $anio = date('y');
                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));

                $contador = $plantel->getContadorIngresos();

                $numeroRecibo = $session->get('plantel') . $anio;

                if ($contador <= 9) {
                    $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                } elseif ($contador > 9 & $contador <= 99) {
                    $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                } elseif ($contador > 99 & $contador <= 999) {
                    $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                } elseif ($contador > 999 & $contador <= 9999) {
                    $numeroRecibo = $session->get('plantel') . $anio . $contador;
                }

                $aluTra = new AlumonTramites();
                $aluTra->setCveAlu($alumno);
                $aluTra->setCveTra($otro);
                $aluTra->setMonto($monto);
                $aluTra->setNumeroRecibo($numeroRecibo);
                $aluTra->setFecMov(new \DateTime(date('Y-m-d')));
                //$aluTra->setCveRazSoz($cveRazSoz->getIdeRazSoc());

                $em->persist($aluTra);
                $em->flush();

                $ingreso = new Ingresos();
                $ingreso->setCveAlu($alumno);
                $ingreso->setReferencia($referencia);
                $ingreso->setMonto($monto);
                $ingreso->setBeca(0);
                $ingreso->setRecargos(0);
                $ingreso->setTotal($monto);
                $ingreso->setDescripcion($otro->getDesTra());
                $ingreso->setTipPag($tipoPago);
                //$ingreso->setCveRazSoz($cveRazSoz);
                $ingreso->setNumRecibo($numeroRecibo);
                $ingreso->setCvePla($plantel);
                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                $ingreso->setCveUsu($session->get('identificador'));
                $ingreso->setHorMov(new \DateTime(date("H:i:s")));

                $em->persist($ingreso);
                $em->flush();

                $otro->setContador($otro->getContador() + 1);
                $em->persist($otro);
                $em->flush();

                $oAlumnos = $em->getRepository('CmBundle:AlumonTramites')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('ideAluTra' => 'DESC'));

                $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                $em->persist($plantel);
                $em->flush();

                return $this->render('CmBundle:Caja:correctoOtro.html.twig', array('registro' => $aluTra, 'otrosPagos' => $oAlumnos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function impOtroAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "POST") {

            $em = $this->getDoctrine()->getManager();

            $aluTra = $em->getRepository('CmBundle:AlumonTramites')
                ->findOneBy(array('ideAluTra' => $request->get('ideOtro')));
            $ingreso = $em->getRepository('CmBundle:Ingresos')
                ->findOneBy(array('numRecibo' => $aluTra->getNumeroRecibo(), 'cveAlu' => $aluTra->getCveAlu()->getIdeAlu()));
            $usuario = $em->getRepository('CmBundle:Empleados')
                ->findOneBy(array('identificador' => $ingreso->getCveUsu()));

            $generator = new BarcodeGeneratorPNG();
            //echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
            $imagenBarra = "data:image/png;base64," . base64_encode($generator->getBarcode($aluTra->getCveAlu()->getCveCtl(), $generator::TYPE_CODE_128));
            $cb1 = $this->base64_to_png($imagenBarra, 'barras/' . $aluTra->getCveAlu()->getCveCtl() . '.png');

            $imagenBarraDos = "data:image/png;base64," . base64_encode($generator->getBarcode($aluTra->getNumeroRecibo(), $generator::TYPE_CODE_128));
            $cb2 = $this->base64_to_png($imagenBarraDos, 'barras/' . $aluTra->getNumeroRecibo() . '.png');

            $rolUsuario = $session->get("rol");

            $pdf = new PDFBachillerato('L', 'mm', array(140, 216));
            $pdf->banRecibo = 1;
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobanteOtros($aluTra, $session, $cb1, $cb2, $ingreso, $usuario, $rolUsuario);
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobanteOtros($aluTra, $session, $cb1, $cb2, $ingreso, $usuario, $rolUsuario);

            return new Response($pdf->Output('comprobante.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function alumnosAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $alumno->setModoPago($request->get('mod' . $ideAlu));
                $em->persist($alumno);
                $em->flush();

                return $this->redirect($this->generateUrl('caja_alumnos'));
            } else {
                $em = $this->getDoctrine()->getManager();

                $alumnos = $em->getRepository('CmBundle:Alumnos')->findAll();

                return $this->render('CmBundle:Caja:alumnos.html.twig', array('alumnos' => $alumnos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function verOtrosIngresosAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $concepto = $request->get("c");

                $em = $this->getDoctrine()->getManager();

                $ingresosDos = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d')), 'cveUsu' => $session->get("identificador")));

                return $this->render('CmBundle:Caja:tablaOtrosIngresos.html.twig', array('ingresosDos' => $ingresosDos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function reinscripcionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $numero = $request->get('numeroR');
                $fechaR = $request->get('fechaR');


                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $alumno->setNumero($numero);
                $alumno->setFecIns(new \DateTime(date($fechaR)));
                $alumno->setReinscripcion(1);

                $em->persist($alumno);
                $em->flush();

                $auxPago = $em->getRepository('CmBundle:Pagos')->findBy(array('cveAlu' => $alumno->getIdeAlu()), array('idePag' => 'DESC'), 1);

                $fecIni = $auxPago[0]->getFecIni();
                $fecIni->modify('Last day of this month');
                print_r($fecIni->format('Y-m-d'));
                /* CREAR PAGO DE REINSCRIPCION DEL ALUMNO */
                $pago = new Pagos();
                $pago->setCveAlu($alumno);
                $pago->setSemestre($alumno->getNumero());
                $pago->setNumero(0);
                $pago->setReferencia("");
                $pago->setFecIni(new \DateTime(date($fechaR)));
                $pago->setFecTer(new \DateTime(date($fechaR)));
                $pago->setTipPag("");
                $pago->setStaPag(1);
                $pago->setFecMov(new \DateTime(date('Y-m-d')));
                $pago->setCveUsu($session->get('identificador'));

                $em->persist($pago);
                $em->flush();

                /* CREAR LOS PAGOS DEL ALUMNO */
                $fin = 0;
                if ($alumno->getModalidad() == "SEMESTRAL") {
                    $fin = 6;
                } elseif ($alumno->getModalidad() == "CUATRIMESTRAL") {
                    $fin = 4;
                }

                $fecIni = $fecIni->modify('+1 day')->format('Y-m-d');

                for ($i = 1; $i <= $fin; $i++) {

                    $fecTer = strtotime('+1 month -1 day', strtotime($fecIni));
                    $auxAnio = date('Y', strtotime($fecIni));
                    $fecTer = date('Y-m-d', $fecTer);

                    $auxFecha = date('m', strtotime($fecIni));
                    $meses = array("ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE");
                    $nomMes = $meses[$auxFecha - 1];

                    $pago = new Pagos();
                    $pago->setCveAlu($alumno);
                    $pago->setSemestre($alumno->getNumero());
                    $pago->setNumero($i);
                    $pago->setReferencia("");
                    $pago->setFecIni(new \DateTime($fecIni));
                    $pago->setFecTer(new \DateTime($fecTer));
                    $pago->setNomMes($nomMes);
                    $pago->setTipPag("");
                    $pago->setStaPag(1);
                    $pago->setFecMov(new \DateTime(date('Y-m-d')));
                    $pago->setCveUsu($session->get('identificador'));

                    $em->persist($pago);
                    $em->flush();

                    $fecTer = strtotime('+1 month', strtotime($fecIni));
                    $fecTer = date('Y-m-d', $fecTer);
                    $fecIni = $fecTer;
                }
                /* if ($alumno->getTipoAlumno() <= 2) {
                  /* CREAR PAGO DE INSCRIPCION SEMESTRAL O CUATRIMESTRAL DEL ALUMNO
                  $pago = new Pagos();
                  $pago->setCveAlu($alumno);
                  $pago->setSemestre($alumno->getNumero());
                  $pago->setNumero(-1);
                  $pago->setReferencia("");
                  $pago->setFecIni(new \DateTime(date('Y-m-d')));
                  $pago->setFecTer(new \DateTime(date('Y-m-d')));
                  $pago->setTipPag("");
                  $pago->setStaPag(1);
                  $pago->setFecMov(new \DateTime(date('Y-m-d')));
                  $pago->setCveUsu($session->get('identificador'));

                  $em->persist($pago);
                  $em->flush();
                  } */

                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                return $this->render('CmBundle:Caja:correctoMensualidad.html.twig', array('pagos' => $listaPagos, 'alumno' => $alumno));
            } else { // NO FUE POST
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function imprimirIngresosAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "GET") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');

                $em = $this->getDoctrine()->getEntityManager();

                $plantel = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $session->get('plantel')));

                $ingresos = 0;
                if ($fA != null & $fB != null) { // AMBAS FECHAS
                    if ($session->get('rol') == 1 | $session->get('rol') == 99) { // ADMINISTRADOR y NUBIA, NO ES LA CUENTA DE OSCAR, NI ALE
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov BETWEEN :fA AND :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion , i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();


                        $dqlIngMat = "SELECT "
                            . "im.fecMov, im.total, p.idePla, p.nomPla, "
                            . "pm.mesMatriculacion, pm.anioMatriculacion, "
                            . "im.numRecibo, im.tipPag, im.referencia "
                            . "FROM "
                            . "CmBundle:IngresosMatriculacion im, "
                            . "CmBundle:PagosMatriculacion pm, "
                            . "CmBundle:Planteles p "
                            . "WHERE "
                            . "im.cvePagMat = pm.idePagMat "
                            . "AND "
                            . "pm.cvePla = p.idePla "
                            . "AND "
                            . "im.fecMov BETWEEN '" . $fA . "' AND '" . $fB . "' "
                            . "ORDER BY "
                            . "im.fecMov, p.nomPla,im.numRecibo";
                        $query = $em->createQuery($dqlIngMat);
                        $ingrsosMatriculacion = $query->getResult();

                    } else { // BUSCA POR SESSION
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov BETWEEN :fA AND :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion , i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                } elseif ($fA != null & $fB == null) { // SOLO A
                    if ($session->get('rol') == 1 | $session->get('rol') == 99) { // ADMINISTRADOR y NUBIA, NO ES LA CUENTA DE OSCAR, NI ALE
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov= :fA "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();

                        $dqlIngMat = "SELECT "
                            . "im.fecMov, im.total, p.idePla, p.nomPla, "
                            . "pm.mesMatriculacion, pm.anioMatriculacion, "
                            . "im.numRecibo, im.tipPag, im.referencia "
                            . "FROM "
                            . "CmBundle:IngresosMatriculacion im, "
                            . "CmBundle:PagosMatriculacion pm, "
                            . "CmBundle:Planteles p "
                            . "WHERE "
                            . "im.cvePagMat = pm.idePagMat "
                            . "AND "
                            . "pm.cvePla = p.idePla "
                            . "AND "
                            . "im.fecMov = '" . $fA . "'"
                            . "ORDER BY "
                            . "im.fecMov, p.nomPla,im.numRecibo";
                        $query = $em->createQuery($dqlIngMat);
                        $ingrsosMatriculacion = $query->getResult();

                    } else { // BUSCA POR SESSION
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov= :fA "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                } elseif ($fA == null & $fB != null) { // SOLO B
                    if ($session->get('rol') == 1 | $session->get('rol') == 99) { // ADMINISTRADOR, NO ES LA CUENTA DE OSCAR, NI NUBIA, NI ALE
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov= :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();

                        $dqlIngMat = "SELECT "
                            . "im.fecMov, im.total, p.idePla, p.nomPla, "
                            . "pm.mesMatriculacion, pm.anioMatriculacion, "
                            . "im.numRecibo, im.tipPag, im.referencia "
                            . "FROM "
                            . "CmBundle:IngresosMatriculacion im, "
                            . "CmBundle:PagosMatriculacion pm, "
                            . "CmBundle:Planteles p "
                            . "WHERE "
                            . "im.cvePagMat = pm.idePagMat "
                            . "AND "
                            . "pm.cvePla = p.idePla "
                            . "AND "
                            . "im.fecMov = '" . $fB . "'"
                            . "ORDER BY "
                            . "im.fecMov, p.nomPla,im.numRecibo";
                        $query = $em->createQuery($dqlIngMat);
                        $ingrsosMatriculacion = $query->getResult();

                    } else { // BUSCA POR SESSION
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov= :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                }


                $pdf = new PDF('P', 'mm', 'Letter');
                $pdf->setTitulo("INGRESOS TITULACIÓN");
                $pdf->setPosicion("V");
                $pdf->AddPage();
                $pdf->AliasNbPages();
                $pdf->SetFont('Arial', '', 12);
                $pdf->HistorialIngresosDetalles($ingresos, $fA, $fB, $plantel->getNomPla());
                $pdf->setTitulo("INGRESOS MATRICULACIÓN");
                $pdf->historialIngresosMatriculacion($ingrsosMatriculacion);


                return new Response($pdf->Output('historialIngresos.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function verIngresosPlantelesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');
                $usu = $request->get('usu');

                $em = $this->getDoctrine()->getEntityManager();

                $ingresosTodos = 0;
                $ingresosDosTodos = 0;

                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                            . "GROUP BY i.descripcion";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "GROUP BY i.descripcion";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "GROUP BY i.descripcion";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "GROUP BY i.descripcion";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    }// FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "GROUP BY i.descripcion";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.total) total "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "GROUP BY i.descripcion";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    }// FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                return $this->render('CmBundle:Caja:vista-ingresos.html.twig', array(
                    'ingresosTodos' => $ingresosTodos, 'ingresosAgrupados' => $ingresosDosTodos, 'fA' => $fA, 'fB' => $fB
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function verIngresosPlantelesDetallesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');
                $usu = $request->get('usu');
                $concepto = $request->get("concepto");

                $em = $this->getDoctrine()->getManager();

                $ingresosDos = 0;
                $ingresosDosTodos = 0;
                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                            . "AND i.descripcion = :con";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('con', $concepto);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "AND i.descripcion = :con";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $query->setParameter('con', $concepto);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "AND i.descripcion = :con";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('con', $concepto);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "AND i.descripcion = :con";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('con', $concepto);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "AND i.descripcion = :con";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('con', $concepto);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('descripcion' => $concepto, 'fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "AND i.descripcion = :con";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $query->setParameter('con', $concepto);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                return $this->render('CmBundle:Caja:tablaDetalleIngresos.html.twig', array(
                    'ingresosDos' => $ingresosDos, 'ingresos' => $ingresosDosTodos
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function imprimirIngresosPlantelesDetallesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "GET") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');
                $usu = $request->get('usu');
                $concepto = $request->get("concepto");

                $em = $this->getDoctrine()->getManager();

                $plan = $em->getRepository('CmBundle:Planteles')->findOneBy(array('idePla' => $plantel));

                if ($plan == null) {
                    $plan = "TODOS";
                } else {
                    $plan = $plan->getNomPla();
                }

                $ingresosDos = 0;
                $ingresosDosTodos = 0;
                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                $pdf = new PDF('P', 'mm', 'Legal');
                $pdf->setTitulo("HISTORIAL DE INGRESOS");
                $pdf->setPosicion("V");
                $pdf->AddPage();
                $pdf->AliasNbPages();
                $pdf->SetFont('Arial', '', 12);
                $pdf->HistorialIngresosDetalles($ingresosDosTodos, $fA, $fB, $plan);

                return new Response($pdf->Output('historialIngresos.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function verEgresosPlantelesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');
                $usu = $request->get('usu');

                $em = $this->getDoctrine()->getEntityManager();

                $ingresosTodos = 0;
                $ingresosDosTodos = 0;

                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT IDENTITY(e.cvePla) cvePla, p.nomPla,COUNT(e.descripcion) cantidad, SUM(e.monto) total "
                            . "FROM CmBundle:Egresos e, CmBundle:Planteles p "
                            . "WHERE (e.fecMov BETWEEN :fA AND :fB) AND p.idePla = e.cvePla "
                            . "GROUP BY e.cvePla";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT IDENTITY(i.cvePla) cvePla,p.nomPla, i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.monto) total "
                                . "FROM CmBundle:Egresos i, CmBundle:Planteles p "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) AND p.idePla = i.cvePla "
                                . "AND i.cvePla = " . $plantel
                                . "GROUP BY i.cvePla";

                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.monto) total "
                            . "FROM CmBundle:Egresos i "
                            . "WHERE i.fecMov = :fA "
                            . "GROUP BY i.descripcion";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "', '";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.monto) total "
                                . "FROM CmBundle:Egresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "GROUP BY i.descripcion";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    }// FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                        $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.monto) total "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "GROUP BY i.descripcion";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "', '";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime($fA)));

                            $dql = "SELECT i.descripcion, COUNT(i.descripcion) cantidad, SUM(i.monto) total "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "GROUP BY i.descripcion";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    }// FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                return $this->render('CmBundle:Caja:vista-egresos.html.twig', array(
                    'ingresosTodos' => $ingresosTodos, 'ingresosAgrupados' => $ingresosDosTodos, 'fA' => $fA, 'fB' => $fB
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function extrasAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $profesor = $request->get('profesor');
                $materia = $request->get('materia');
                $semestre = $request->get('semestre');
                $periodo = $request->get('periodo');
                $grupo = $request->get('grupo');
                $turno = $request->get('turno');
                $semActual = $request->get('semActual');
                $especialidad = $request->get('especialidad');
                $costo = $request->get('costo');
                $fecMov = date('Y-m-d');
                $cveUsu = $session->get('identificador');
                $referencia = $request->get('ref');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $anio = date('y');
                $auxClaveAlumno = substr($alumno->getCveCtl(), -4);

                $numeroRecibo = $anio . $session->get('plantel') . $auxClaveAlumno . " " . $alumno->getContador();

                $extra = new Extraordinarios();
                $extra->setCveAlu($alumno);
                $extra->setProfesor($profesor);
                $extra->setMateria($materia);
                $extra->setSemestre($semestre);
                $extra->setPeriodo($periodo);
                $extra->setGrupo($grupo);
                $extra->setTurno($turno);
                $extra->setSemActual($semActual);
                $extra->setEspecialidad($especialidad);
                $extra->setCosto($costo);
                $extra->setFecMov(new \DateTime($fecMov));
                $extra->setCveUsu($cveUsu);
                //$extra->setCveRazSoz($cveRazSoz->getIdeRazSoc());
                $extra->setNumRecibo($numeroRecibo);
                $em->persist($extra);
                $em->flush();

                $ingreso = new Ingresos();
                $ingreso->setCveAlu($alumno);
                $ingreso->setReferencia($referencia);
                $ingreso->setMonto($costo);
                $ingreso->setBeca(0);
                $ingreso->setRecargos(0);
                $ingreso->setTotal($costo);
                $ingreso->setDescripcion("EXAMEN EXTRAORDINARIO");
                $ingreso->setTipPag(1);
                //$ingreso->setCveRazSoz($cveRazSoz);
                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                $ingreso->setCvePla($alumno->getCvePla());
                $ingreso->setCveUsu($cveUsu);
                $ingreso->setNumRecibo($numeroRecibo);

                $em->persist($ingreso);
                $em->flush();

                $alumno->setContador($alumno->getContador() + 1);
                $em->persist($alumno);
                $em->flush();

                return $this->render('CmBundle:Caja:correctoExtra.html.twig', array('extra' => $extra));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function impExtrasAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "POST") {

            $em = $this->getDoctrine()->getManager();

            $ideExa = $request->get('ideExa');

            $extra = $em->getRepository('CmBundle:Extraordinarios')
                ->findOneBy(array('ideExa' => $ideExa));

            $pdf = new PDFBachillerato('L', 'mm', array(140, 216));
            $pdf->banRecibo = 1;
            $pdf->AddPage();
            //$pdf->AddFont('Calibri', '', 'calibri.php');
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobanteExtras($extra);

            return new Response($pdf->Output('reciboExamen.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function ciGeneralAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            //if ($request->getMethod() == "GET") {
            $em = $this->getDoctrine()->getManager();
            $planteles = $em->getRepository('CmBundle:Planteles')->findBy(array('idePla' => array(1, 2, 3, 4, 9)));

            return $this->render('CmBundle:Caja:ciGeneral.html.twig', array('planteles' => $planteles));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function exportarIngresosAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "GET") {

                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $em = $this->getDoctrine()->getEntityManager();
                $ingresos = 0;
                if ($fA != null & $fB != null) { // AMBAS FECHAS
                    if ($session->get('rol') == 1) {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov BETWEEN :fA AND :fB "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresos = $query->getResult();
                    } else {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov BETWEEN :fA AND :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                } elseif ($fA != null & $fB == null) { // SOLO A
                    if ($session->get('rol') == 1) {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresos = $query->getResult();
                    } else {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                } elseif ($fA == null & $fB != null) { // SOLO B
                    if ($session->get('rol') == 1) {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresos = $query->getResult();
                    } else {
                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "AND i.cveUsu = :usu "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $query->setParameter('usu', $session->get('identificador'));
                        $ingresos = $query->getResult();
                    }
                }

                $response = new StreamedResponse(function () use ($ingresos) {
                    $handle = fopen('php://output', 'w+');
                    // Add the header
                    fputcsv($handle, ['CONCEPTO', 'IDENTIFICADOR', 'RECIBO', 'CLAVE ALUMNO', 'NOMBRE COMPLETO', 'FECHA DE REGISTRO', 'MONTO', 'RECARGOS', 'TOTAL', '*'], ';');
                    // Query data from database
                    //$results = $conn->query("Replace this with your query");
                    $concepto = "";
                    foreach ($ingresos as $key => $row) {
                        if ($concepto == utf8_decode($row->getDescripcion())) {

                        } else {
                            $concepto = utf8_decode($row->getDescripcion());
                            fputcsv($handle, array("", "", "", "", "", "", "", "", ""), ';');
                        }
                        if ($row->getTipPag() == 1) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveUsu(),
                                $row->getNumRecibo(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'EFECTIVO'
                            ), ';');
                        } elseif ($row->getTipPag() == 0) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveUsu(),
                                $row->getNumRecibo(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'BOUCHER'
                            ), ';');
                        } elseif ($row->getTipPag() == 2) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveUsu(),
                                $row->getNumRecibo(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'TRANSFERENCIA'
                            ), ';');
                        } elseif ($row->getTipPag() == 3) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveUsu(),
                                $row->getNumRecibo(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'TERMINAL'
                            ), ';');
                        } else {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveUsu(),
                                $row->getNumRecibo(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'NO DEFINIDO'
                            ), ';');
                        }
                    }
                    fclose($handle);
                });
                $response->setStatusCode(200);
                $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
                if ($session->get('rol') == 1) {
                    $response->headers->set('Content-Disposition', 'attachment; filename="ingresosGeneral.csv"');
                } else {
                    $response->headers->set('Content-Disposition', 'attachment; filename="ingresos"' . $session->get('identificador') . '-' . $fA . " " . $fB . '".csv"');
                    $query->setParameter('usu', $session->get('identificador'));
                }

                return $response;
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function exportarIngresosPlantelesDetallesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "GET") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');
                $usu = $request->get('usu');
                $concepto = $request->get("concepto");

                $em = $this->getDoctrine()->getManager();

                $plan = $em->getRepository('CmBundle:Planteles')->findOneBy(array('idePla' => $plantel));

                if ($plan == null) {
                    $plan = "TODOS";
                } else {
                    $plan = $plan->getNomPla();
                }

                $ingresosDos = 0;
                $ingresosDosTodos = 0;
                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "', '";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "', '";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB "
                            . "ORDER BY i.descripcion, i.fecMov";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "', '";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") "
                                . "ORDER BY i.descripcion, i.fecMov";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                $response = new StreamedResponse(function () use ($ingresosDosTodos) {
                    $handle = fopen('php://output', 'w+');
                    // Add the header
                    fputcsv($handle, ['CONCEPTO', 'MATRICULA', 'CLAVE ALUMNO', 'NOMBRE COMPLETO', 'FECHA DE REGISTRO', 'MONTO', 'RECARGOS', 'TOTAL', '*'], ';');
                    // Query data from database
                    //$results = $conn->query("Replace this with your query");
                    $concepto = "";
                    foreach ($ingresosDosTodos as $key => $row) {
                        if ($concepto == utf8_decode($row->getDescripcion())) {

                        } else {
                            $concepto = utf8_decode($row->getDescripcion());
                            fputcsv($handle, array("", "", "", "", "", "", "", ""), ';');
                        }
                        if ($row->getTipPag() == 1) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveAlu()->getCveAnterior(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'EFECTIVO'
                            ), ';');
                        } elseif ($row->getTipPag() == 0) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveAlu()->getCveAnterior(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'BOUCHER'
                            ), ';');
                        } elseif ($row->getTipPag() == 2) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveAlu()->getCveAnterior(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'TRANSFERENCIA'
                            ), ';');
                        } elseif ($row->getTipPag() == 3) {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveAlu()->getCveAnterior(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'TERMINAL'
                            ), ';');
                        } else {
                            fputcsv($handle, array(
                                utf8_decode($row->getDescripcion()),
                                $row->getCveAlu()->getCveAnterior(),
                                $row->getCveAlu()->getCveCtl(),
                                utf8_decode($row->getCveAlu()->getApePat() . " " . $row->getCveAlu()->getApeMat() . " " . $row->getCveAlu()->getNomAlu()),
                                $row->getFecMov()->format('d-m-Y'),
                                $row->getMonto(), $row->getRecargos(),
                                $row->getTotal(), 'NO DEFINIDO'
                            ), ';');
                        }
                    }
                    fclose($handle);
                });
                $response->setStatusCode(200);
                $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
                if ($session->get('rol') == 1 | $session->get('rol') == 99) {
                    $response->headers->set('Content-Disposition', 'attachment; filename="ingresosGeneral.csv"');
                } else {
                    $response->headers->set('Content-Disposition', 'attachment; filename="ingresos"' . $session->get('identificador') . '-' . $fA . " " . $fB . '".csv"');
                    $query->setParameter('usu', $session->get('identificador'));
                }

                return $response;
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function ceGeneralAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            //if ($request->getMethod() == "GET") {
            $em = $this->getDoctrine()->getManager();
            $planteles = $em->getRepository('CmBundle:Planteles')->findBy(array('idePla' => array(1, 2, 3, 4, 9)));

            return $this->render('CmBundle:Caja:ceGeneral.html.twig', array('planteles' => $planteles));
            //}
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function scAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $referencia = $request->get('referencia');
                $monto = $request->get('totalS');


                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $pago = $em->getRepository('CmBundle:Pagos')
                    ->findOneBy(array('cveAlu' => $ideAlu, 'staPag' => 1, 'numero' => -1));

                $pago->setReferencia($referencia);
                $pago->setStaPag(2);
                if ($alumno->getModalidad() == 'SEMESTRAL') {
                    $pago->setDescripcion("PAGO SEMESTRAL");
                } else {
                    $pago->setDescripcion("PAGO CUATRIMESTRAL");
                }

                $pago->setTipPag($request->get("modoPago"));
                $pago->setMonto($monto);
                $pago->setCveUsu($session->get('identificador'));
                //$pago->setNumRecibo($cveRazSoz->getContador());
                $pago->setNumRecibo("");

//                $cveRazSoz->setContador($cveRazSoz->getContador() + 1);
//                $em->persist($cveRazSoz);
//                $em->flush();

                $ingreso = new Ingresos();
                $ingreso->setCveAlu($alumno);
                $ingreso->setReferencia($referencia);
                $ingreso->setMonto($monto);
                $ingreso->setBeca(0);
                $ingreso->setRecargos(0);
                $ingreso->setTotal($monto);
                if ($alumno->getModalidad() == 'SEMESTRAL') {
                    $ingreso->setDescripcion("PAGO SEMESTRAL");
                } else {
                    $ingreso->setDescripcion("PAGO CUATRIMESTRAL");
                }
                $ingreso->setTipPag($request->get("modoPago"));
                //$ingreso->setCveRazSoz($cveRazSoz);
                $ingreso->setCveRazSoz(null);
                $ingreso->setCvePla($alumno->getCvePla());
                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                $ingreso->setCveUsu($session->get('identificador'));

                $em->persist($ingreso);
                $em->flush();

                $pago->setCveIng($ingreso->getIdeIng());
                $em->persist($pago);
                $em->flush();

                $listaPagos = $em->getRepository('CmBundle:Pagos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()));

                return $this->render('CmBundle:Caja:correctoMensualidad.html.twig', array('pagos' => $listaPagos));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function saAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {
                //      [name=""][propiedad]
                //$_FILES['archivo']['name']

                if ($_FILES['archivo']['error'] > 0) {

                } else {
                    move_uploaded_file($_FILES['archivo']['tmp_name'], 'archivo/' . $_FILES['archivo']['name']);
                }

                $fp = fopen('archivo/' . $_FILES['archivo']['name'], 'r');
                $datos = [];
                $i = 0;
                while ($data = fgetcsv($fp, 1000, ", ", '"')) {
                    $datos[$i] = $data;
                    $i++;
                }
                return $this->render('CmBundle:Caja:sa.html.twig', array('datos' => $datos));
            } else { // NO FUE POST
                return $this->render('CmBundle:Caja:sa.html.twig');
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function ciDetalleAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 3 || $session->get("rol") == 1 || $session->get("rol") == 99 || $session->get("rol") == 4 || $session->get("rol") == 101)) {
            $session->set("vista", "caja");
            if ($request->getMethod() == "POST") {
                $fA = $request->get('fA');
                $fB = $request->get('fB');
                $plantel = $request->get('idePla');

                $em = $this->getDoctrine()->getManager();

                $ingresosDosTodos = 0;
                $ingresosDetalles = [];
                if ($fA != "" & $fB != "") { // AMBAS FECHAS
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE (i.fecMov BETWEEN :fA AND :fB)";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();

                        foreach ($ingresosDosTodos as $key => $value) {
                            $auxPago = [];
                            if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                // varios valores
                                $auxPago = $em->getRepository('CmBundle:Pagos')
                                    ->findBy(array('numRecibo' => $value->getNumRecibo()));
                            } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                // un único valor
                                $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                    ->findOneBy(array('idePagCon' => $value->getCveCon()));
                            } else {

                            }
                            $ingresosDetalles[] = array($value, $auxPago);
                        }
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE (i.fecMov BETWEEN :fA AND :fB) "
                                . "AND i.cveUsu IN (" . $listaEmp . ") ";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();

                            foreach ($ingresosDosTodos as $key => $value) {
                                $auxPago = [];
                                if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                    // varios valores
                                    $auxPago = $em->getRepository('CmBundle:Pagos')
                                        ->findBy(array('numRecibo' => $value->getNumRecibo()));
                                } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                    // un único valor
                                    $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                        ->findOneBy(array('idePagCon' => $value->getCveCon()));
                                } else {

                                }
                                $ingresosDetalles[] = array($value, $auxPago);
                            }
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA != "" & $fB == "") { // SOLO FECHA A
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fA ";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fA', $fA);
                        $ingresosDosTodos = $query->getResult();

                        foreach ($ingresosDosTodos as $key => $value) {
                            $auxPago = [];
                            if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                // varios valores
                                $auxPago = $em->getRepository('CmBundle:Pagos')
                                    ->findBy(array('numRecibo' => $value->getNumRecibo()));
                            } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                // un único valor
                                $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                    ->findOneBy(array('idePagCon' => $value->getCveCon()));
                            } else {

                            }
                            $ingresosDetalles[] = array($value, $auxPago);
                        }
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fA "
                                . "AND i.cveUsu IN (" . $listaEmp . ") ";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fA', $fA);
                            $ingresosDosTodos = $query->getResult();

                            foreach ($ingresosDosTodos as $key => $value) {
                                $auxPago = [];
                                if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                    // varios valores
                                    $auxPago = $em->getRepository('CmBundle:Pagos')
                                        ->findBy(array('numRecibo' => $value->getNumRecibo()));
                                } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                    // un único valor
                                    $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                        ->findOneBy(array('idePagCon' => $value->getCveCon()));
                                } else {

                                }
                                $ingresosDetalles[] = array($value, $auxPago);
                            }
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } elseif ($fA == "" & $fB != "") { // SOLO FECHA B
                    if ($plantel == "default") { // todos los planteles
                        $ingresosTodos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                        $dql = "SELECT i "
                            . "FROM CmBundle:Ingresos i "
                            . "WHERE i.fecMov = :fB ";
                        $query = $em->createQuery($dql);
                        $query->setParameter('fB', $fB);
                        $ingresosDosTodos = $query->getResult();

                        foreach ($ingresosDosTodos as $key => $value) {
                            $auxPago = [];
                            if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                // varios valores
                                $auxPago = $em->getRepository('CmBundle:Pagos')
                                    ->findBy(array('numRecibo' => $value->getNumRecibo()));
                            } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                // un único valor
                                $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                    ->findOneBy(array('idePagCon' => $value->getCveCon()));
                            } else {

                            }
                            $ingresosDetalles[] = array($value, $auxPago);
                        }
                    } elseif ($plantel != "default") { // un plantel en específico
                        /*
                         * PASO UNO: BUSCAR A LOS USUARIOS QUE PERTENECEN AL PLANTEL SELECCIONADO
                         */
                        $empleados = $em->getRepository('CmBundle:Empleados')->findBy(array('cvePlantel' => $plantel));
                        if ($empleados != null) {
                            $listaEmp = "'";
                            foreach ($empleados as $key => $value) {
                                $listaEmp = $listaEmp . $value->getIdentificador() . "','";
                            }
                            $listaEmp = $listaEmp . "'";

                            $ingresosTodos = $em->getRepository('CmBundle:Ingresos')->findBy(array('fecMov' => new \DateTime(date('Y-m-d'))));

                            $dql = "SELECT i "
                                . "FROM CmBundle:Ingresos i "
                                . "WHERE i.fecMov = :fB "
                                . "AND i.cveUsu IN (" . $listaEmp . ") ";
                            $query = $em->createQuery($dql);
                            $query->setParameter('fB', $fB);
                            $ingresosDosTodos = $query->getResult();

                            foreach ($ingresosDosTodos as $key => $value) {
                                $auxPago = [];
                                if ($value->getDescripcion() == "PAGO DE MENSUALIDAD" | $value->getDescripcion() == "PAGO DE REINSCRIPCION" | $value->getDescripcion() == "PAGO DE INSCRIPCIÓN") {
                                    // varios valores
                                    $auxPago = $em->getRepository('CmBundle:Pagos')
                                        ->findBy(array('numRecibo' => $value->getNumRecibo()));
                                } elseif ($value->getDescripcion() == "ABONO CONVENIO") {
                                    // un único valor
                                    $auxPago = $em->getRepository('CmBundle:PagosConvenios')
                                        ->findOneBy(array('idePagCon' => $value->getCveCon()));
                                } else {

                                }


                                $ingresosDetalles[] = array($value, $auxPago);
                            }
                        } else {
                            /*
                             * NO HAY RESULTADOS
                             */
                        }
                    } // FIN IF PLANTEL
                } else { // NO HAY FECHAS
                }

                return $this->render('CmBundle:Caja:tablaCiDetalle.html.twig', array(
                    'ingresosDetalles' => $ingresosDetalles, 'ingresos' => $ingresosDosTodos
                ));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $planteles = $em->getRepository('CmBundle:Planteles')->findBy(array('idePla' => array(1, 2, 3, 4, 9)));
                return $this->render('CmBundle:Caja:vistaCiDetalle.html.twig', array('planteles' => $planteles));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function editTablaPAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && $session->get("rol") == 99) {

            if ($request->getMethod() == "POST") {
                $em = $this->getDoctrine()->getManager();

                $idePag = $request->get('idePag');
                $action = $request->get('accion');

                $pago = $em->getRepository('CmBundle:Pagos')->findOneBy(array('idePag' => $idePag));

                switch ($action) {
                    case 666:
                        //BLOAQUEAR PAGO
                        print_r("BLOQUEAR");
                        $pago->setStaPag(2);
                        $pago->setTipPag(666);
                        $pago->setDescripcion("BLOQUEADO");
                        $em->persist($pago);
                        $em->flush();
                        break;

                    case 555:
                        //DESBLOQUEAR PAGO
                        print_r("DESBLOQUEAR");
                        $pago->setStaPag(1);
                        $pago->setTipPag("");
                        $pago->setDescripcion(null);
                        $em->persist($pago);
                        $em->flush();
                        break;

                    case 333:
                        //ELIMINAR PAGO DEFINITIVAMENTE
                        print_r("ELIMINAR");
                        $em->remove($pago);
                        $em->flush();
                        break;
                }

                return $this->render('CmBundle:Caja:correcto-editar-tabla-pagos.html.twig', array('accion' => $action));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $idePag = $request->get('idePag');

                $pago = $em->getRepository('CmBundle:Pagos')->findOneBy(array('idePag' => $idePag));

                return $this->render('CmBundle:Caja:editar-tabla-pagos.html.twig', array('pago' => $pago));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function reporteFoliosPagoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && $session->get("rol") == 99) {

            if ($request->getMethod() == "POST") {
                $em = $this->getDoctrine()->getManager();

                $p = $request->get('p');

                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('idePla' => $p));

                $alumnos = $em->getRepository('CmBundle:Alumnos')
                    ->findBy(array('cvePla' => $plantel));

                $pagos = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumnos));

                return $this->render('CmBundle:Reportes:tabla-folios-pagos.html.twig',
                    array(
                        'pagos' => $pagos
                    )
                );
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $planteles = $em->getRepository('CmBundle:Planteles')
                    ->findBy(array(), array('nomPla' => 'ASC'));


                return $this->render('CmBundle:Reportes:vista-reporte-folios-pagos.html.twig',
                    array('planteles' => $planteles)
                );
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function carteraVTPAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && $session->get("rol") == 99) {

            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $dql = "SELECT p.idePla, p.nomPla, p.nomenclatura, COUNT(a.ideAlu) AS total "
                    . "FROM "
                    . "CmBundle:Alumnos a "
                    . "INNER JOIN CmBundle:Planteles p WITH a.cvePla = p.idePla "
                    . "WHERE "
                    . "a.estatus = 12 "
                    . "GROUP BY p.idePla, p.nomPla "
                    . "ORDER BY p.nomenclatura";

                $query = $em->createQuery($dql);
                $datosEscolarizado = $query->getResult();

                $listaEstatus = [];

                $tramitesEscolarizado = [];
                foreach ($datosEscolarizado as $de) {
                    $tramitesEscolarizado[$de['nomPla']] = [];
                    $tramitesEscolarizado[$de['nomPla']]['nomenclatura'] = $de['nomenclatura'];
                    $tramitesEscolarizado[$de['nomPla']]['total'] = $de['total'];
                    $tramitesEscolarizado[$de['nomPla']]['idePla'] = $de['idePla'];
                    $listaEstatus = [
                        'SIN TABLA',
                        "SIN INGRESAR",
                        "INGRESADO",
                        "INVASIÓN",
                        "ENTREGADO",
                        "DOCUMENTACIÓN INCOMPLETA",
                        "POR PAGO",
                        "ESTÁ AQUÍ",
                        "BAJA",
                        "EN TRÁMITE"
                    ];
                    foreach ($listaEstatus as $le) {
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['total'] = 0;
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                    }
                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                        ->findBy(['cvePla' => $de['idePla'], 'estatus' => 12]);
                    $estatus = "";
                    foreach ($alumnos as $a) {
                        $auxEst = "";
                        $totalPagar = 0;
                        $totalAbonado = 0;
                        $totalDebe = 0;

                        $auxTit = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(['cveAlu' => $a]);
                        $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $a));
                        if ($auxTit != null) {
                            //SACAR EL ESTATUS
                            if ($auxTit->getEstatus() != null) {
                                $auxEst = $auxTit->getEstatus();
                            } else {
                                $auxEst = 1;
                            }
                            if ($auxPagTit != null) {
                                $totalPagar = $auxPagTit->getMonto();
                                $totalAbonado = $auxPagTit->getAbonado();
                                $totalDebe = $auxPagTit->getDebe();
                            }
                        } else {
                            $auxEst = 0;
                        }
                        switch ($auxEst) {
                            case 0:
                                $estatus = "SIN TABLA";
                                break;
                            case 1:
                                $estatus = "SIN INGRESAR";
                                break;
                            case 2:
                                $estatus = "INGRESADO";
                                break;
                            case 3:
                                $estatus = "INVASIÓN";
                                break;
                            case 4:
                                $estatus = "ENTREGADO";
                                break;
                            case 5:
                                $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                break;
                            case 6:
                                $estatus = "POR PAGO";
                                break;
                            case 7:
                                $estatus = "ESTÁ AQUÍ";
                                break;
                            case 8:
                                $estatus = "BAJA";
                                break;
                            case 9:
                                $estatus = "EN TRÁMITE";
                                break;

                        }
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                        $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                    }
                }

                //dump($tramitesEscolarizado);

                $dql = "SELECT p.idePla, p.nomPla, p.nomenclatura, ct.ideCorTit, COUNT(a.ideAlu) AS total "
                    . "FROM "
                    . "CmBundle:Alumnos a "
                    . "INNER JOIN CmBundle:Titulaciones t WITH t.cveAlu = a.ideAlu "
                    . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                    . "INNER JOIN CmBundle:Planteles p WITH ct.cvePla = p.idePla "
                    . "WHERE "
                    . "a.tipoAlumno = 8 "
                    . "GROUP BY p.idePla, p.nomPla, ct.ideCorTit "
                    . "ORDER BY p.nomenclatura";

                $query = $em->createQuery($dql);
                $datosDirecta = $query->getResult();

                $tramitesDirecta = [];
                foreach ($datosDirecta as $de) {
                    $tramitesDirecta[$de['nomPla']] = [];
                    $tramitesDirecta[$de['nomPla']]['nomenclatura'] = $de['nomenclatura'];
                    $tramitesDirecta[$de['nomPla']]['total'] = $de['total'];
                    $tramitesDirecta[$de['nomPla']]['idePla'] = $de['idePla'];
                    $listaEstatus = [
                        'SIN TABLA',
                        "SIN INGRESAR",
                        "INGRESADO",
                        "INVASIÓN",
                        "ENTREGADO",
                        "DOCUMENTACIÓN INCOMPLETA",
                        "POR PAGO",
                        "ESTÁ AQUÍ",
                        "BAJA",
                        "EN TRÁMITE"
                    ];
                    foreach ($listaEstatus as $le) {
                        $tramitesDirecta[$de['nomPla']]['estatus'][$le]['total'] = 0;
                        $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                        $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                        $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                    }

                    $dql = "SELECT IDENTITY(t.cveAlu) AS ideAlu "
                        . "FROM "
                        . "CmBundle:Titulaciones t "
                        . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                        . "WHERE "
                        . "t.cord = " . $de['ideCorTit'];

                    $query = $em->createQuery($dql);
                    $idesAlumnos = $query->getResult();

                    $auxIdesAlumnos = [];
                    foreach ($idesAlumnos as $ide) {
                        $auxIdesAlumnos[] = $ide['ideAlu'];
                    }

//                    print_r($auxIdesAlumnos);
//                    print_r("<br>");
//                    dump($auxIdesAlumnos);

                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                        ->findBy(['ideAlu' => $auxIdesAlumnos]);
//                    print_r("<br>" . count($alumnos));
//                    die();
                    $estatus = "";
                    foreach ($alumnos as $a) {
                        $auxEst = "";
                        $totalPagar = 0;
                        $totalAbonado = 0;
                        $totalDebe = 0;

                        $auxTit = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(['cveAlu' => $a]);
                        $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                            ->findOneBy(array('cveAlu' => $a));
                        if ($auxTit != null) {
                            //SACAR EL ESTATUS
                            if ($auxTit->getEstatus() != null) {
                                $auxEst = $auxTit->getEstatus();
                            } else {
                                $auxEst = 1;
                            }
                            if ($auxPagTit != null) {
                                $totalPagar = $auxPagTit->getMonto();
                                $totalAbonado = $auxPagTit->getAbonado();
                                $totalDebe = $auxPagTit->getDebe();
                            }
                        } else {
                            $auxEst = 0;
                        }
                        switch ($auxEst) {
                            case 0:
                                $estatus = "SIN TABLA";
                                break;
                            case 1:
                                $estatus = "SIN INGRESAR";
                                break;
                            case 2:
                                $estatus = "INGRESADO";
                                break;
                            case 3:
                                $estatus = "INVASIÓN";
                                break;
                            case 4:
                                $estatus = "ENTREGADO";
                                break;
                            case 5:
                                $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                break;
                            case 6:
                                $estatus = "POR PAGO";
                                break;
                            case 7:
                                $estatus = "ESTÁ AQUÍ";
                                break;
                            case 8:
                                $estatus = "BAJA";
                                break;
                            case 9:
                                $estatus = "EN TRÁMITE";
                                break;

                        }
                        $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                        $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                        $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                        $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                    }
                }

                return $this->render('CmBundle:Reportes:vista-reporte-cartera-VTP.html.twig',
                    array(
                        'escolarizado' => $tramitesEscolarizado,
                        'directa' => $tramitesDirecta,
                        'estatus' => $listaEstatus
                    )
                );
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function carteraVTPExportarAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && $session->get("rol") == 99) {

            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $tipoReporte = $request->get('tipoReporte');

                if ($tipoReporte == 1) { // GENERAR EXCEL ESCOLARIZADO
                    $dql = "SELECT p.idePla, p.nomPla, COUNT(a.ideAlu) AS total "
                        . "FROM "
                        . "CmBundle:Alumnos a "
                        . "INNER JOIN CmBundle:Planteles p WITH a.cvePla = p.idePla "
                        . "WHERE "
                        . "a.estatus = 12 "
                        . "GROUP BY p.idePla, p.nomPla "
                        . "ORDER BY p.nomPla";

                    $query = $em->createQuery($dql);
                    $datosEscolarizado = $query->getResult();

                    $listaEstatus = [];

                    $tramitesEscolarizado = [];
                    foreach ($datosEscolarizado as $de) {
                        $tramitesEscolarizado[$de['nomPla']] = [];
                        $tramitesEscolarizado[$de['nomPla']]['total'] = $de['total'];
                        $tramitesEscolarizado[$de['nomPla']]['idePla'] = $de['idePla'];
                        $listaEstatus = [
                            'SIN TABLA',
                            "SIN INGRESAR",
                            "INGRESADO",
                            "INVASIÓN",
                            "ENTREGADO",
                            "DOCUMENTACIÓN INCOMPLETA",
                            "POR PAGO",
                            "ESTÁ AQUÍ",
                            "BAJA",
                            "EN TRÁMITE"
                        ];
                        foreach ($listaEstatus as $le) {
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['total'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                        }
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(['cvePla' => $de['idePla'], 'estatus' => 12]);
                        $estatus = "";
                        foreach ($alumnos as $a) {
                            $auxEst = "";
                            $totalPagar = 0;
                            $totalAbonado = 0;
                            $totalDebe = 0;

                            $auxTit = $em->getRepository('CmBundle:Titulaciones')
                                ->findOneBy(['cveAlu' => $a]);
                            $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                                ->findOneBy(array('cveAlu' => $a));
                            if ($auxTit != null) {
                                //SACAR EL ESTATUS
                                if ($auxTit->getEstatus() != null) {
                                    $auxEst = $auxTit->getEstatus();
                                } else {
                                    $auxEst = 1;
                                }
                                if ($auxPagTit != null) {
                                    $totalPagar = $auxPagTit->getMonto();
                                    $totalAbonado = $auxPagTit->getAbonado();
                                    $totalDebe = $auxPagTit->getDebe();
                                }
                            } else {
                                $auxEst = 0;
                            }
                            switch ($auxEst) {
                                case 0:
                                    $estatus = "SIN TABLA";
                                    break;
                                case 1:
                                    $estatus = "SIN INGRESAR";
                                    break;
                                case 2:
                                    $estatus = "INGRESADO";
                                    break;
                                case 3:
                                    $estatus = "INVASIÓN";
                                    break;
                                case 4:
                                    $estatus = "ENTREGADO";
                                    break;
                                case 5:
                                    $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                    break;
                                case 6:
                                    $estatus = "POR PAGO";
                                    break;
                                case 7:
                                    $estatus = "ESTÁ AQUÍ";
                                    break;
                                case 8:
                                    $estatus = "BAJA";
                                    break;
                                case 9:
                                    $estatus = "EN TRÁMITE";
                                    break;

                            }
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                        }
                    }


                } elseif ($tipoReporte == 2) { // GENERAR EXCEL DIRECTA

                    $dql = "SELECT p.idePla, p.nomPla, ct.ideCorTit, COUNT(a.ideAlu) AS total "
                        . "FROM "
                        . "CmBundle:Alumnos a "
                        . "INNER JOIN CmBundle:Titulaciones t WITH t.cveAlu = a.ideAlu "
                        . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                        . "INNER JOIN CmBundle:Planteles p WITH ct.cvePla = p.idePla "
                        . "WHERE "
                        . "a.tipoAlumno = 8 "
                        . "GROUP BY p.idePla, p.nomPla, ct.ideCorTit "
                        . "ORDER BY p.nomPla";

                    $query = $em->createQuery($dql);
                    $datosDirecta = $query->getResult();

                    $tramitesDirecta = [];
                    foreach ($datosDirecta as $de) {
                        $tramitesDirecta[$de['nomPla']] = [];
                        $tramitesDirecta[$de['nomPla']]['total'] = $de['total'];
                        $tramitesDirecta[$de['nomPla']]['idePla'] = $de['idePla'];
                        $listaEstatus = [
                            'SIN TABLA',
                            "SIN INGRESAR",
                            "INGRESADO",
                            "INVASIÓN",
                            "ENTREGADO",
                            "DOCUMENTACIÓN INCOMPLETA",
                            "POR PAGO",
                            "ESTÁ AQUÍ",
                            "BAJA",
                            "EN TRÁMITE"
                        ];
                        foreach ($listaEstatus as $le) {
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['total'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                        }

                        $dql = "SELECT IDENTITY(t.cveAlu) AS ideAlu "
                            . "FROM "
                            . "CmBundle:Titulaciones t "
                            . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                            . "WHERE "
                            . "t.cord = " . $de['ideCorTit'];

                        $query = $em->createQuery($dql);
                        $idesAlumnos = $query->getResult();

                        $auxIdesAlumnos = [];
                        foreach ($idesAlumnos as $ide) {
                            $auxIdesAlumnos[] = $ide['ideAlu'];
                        }

                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(['ideAlu' => $auxIdesAlumnos]);

                        $estatus = "";
                        foreach ($alumnos as $a) {
                            $auxEst = "";
                            $totalPagar = 0;
                            $totalAbonado = 0;
                            $totalDebe = 0;

                            $auxTit = $em->getRepository('CmBundle:Titulaciones')
                                ->findOneBy(['cveAlu' => $a]);
                            $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                                ->findOneBy(array('cveAlu' => $a));
                            if ($auxTit != null) {
                                //SACAR EL ESTATUS
                                if ($auxTit->getEstatus() != null) {
                                    $auxEst = $auxTit->getEstatus();
                                } else {
                                    $auxEst = 1;
                                }
                                if ($auxPagTit != null) {
                                    $totalPagar = $auxPagTit->getMonto();
                                    $totalAbonado = $auxPagTit->getAbonado();
                                    $totalDebe = $auxPagTit->getDebe();
                                }
                            } else {
                                $auxEst = 0;
                            }
                            switch ($auxEst) {
                                case 0:
                                    $estatus = "SIN TABLA";
                                    break;
                                case 1:
                                    $estatus = "SIN INGRESAR";
                                    break;
                                case 2:
                                    $estatus = "INGRESADO";
                                    break;
                                case 3:
                                    $estatus = "INVASIÓN";
                                    break;
                                case 4:
                                    $estatus = "ENTREGADO";
                                    break;
                                case 5:
                                    $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                    break;
                                case 6:
                                    $estatus = "POR PAGO";
                                    break;
                                case 7:
                                    $estatus = "ESTÁ AQUÍ";
                                    break;
                                case 8:
                                    $estatus = "BAJA";
                                    break;
                                case 9:
                                    $estatus = "EN TRÁMITE";
                                    break;

                            }
                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                        }
                    }

                }

                $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();

                $phpExcelObject->getProperties()->setCreator("El Inge")
                    ->setLastModifiedBy("El Inge")
                    ->setTitle("Office 2007 XLSX Test Document")
                    ->setSubject("Office 2007 XLSX Test Document")
                    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                    ->setKeywords("office 2007 openxml php")
                    ->setCategory("Test result file");

                $LETRA = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];

                //ENCABEZADOS
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('A1', "N.C.");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('B1', "PLANTEL");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('C1', "TOTAL TRÁMITES");

                $index = 3;
                foreach ($listaEstatus as $e) {
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index] . '1', $e);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 1] . '1', "TOTAL");
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 2] . '1', "ABONADO");
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 3] . '1', "DEBE");
                    $index = $index + 4;
                }


                $indice = 0;
                $numero = 2;
                $nc = 0;

                $datosExcel = "";

                if ($tipoReporte == 1) {
                    $datosExcel = $tramitesEscolarizado;
                } elseif ($tipoReporte == 2) {
                    $datosExcel = $tramitesDirecta;
                }

                foreach ($datosExcel as $k => $v) {
                    $nc++;
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice] . $numero, $nc);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 1] . $numero, $k);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 2] . $numero, $v['total']);

                    $contador = 3;
                    foreach ($v['estatus'] as $kk => $vv) {
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + $contador] . $numero, $vv['total']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 1)] . $numero, $vv['pagos']['total']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 2)] . $numero, $vv['pagos']['abonado']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 3)] . $numero, $vv['pagos']['debe']);
                        $contador = $contador + 4;
                    }

                    $numero++;
                }


                if ($tipoReporte == 1) {
                    $phpExcelObject->getActiveSheet()->setTitle('ESCOLARIZADO');
                } elseif ($tipoReporte == 2) {
                    $phpExcelObject->getActiveSheet()->setTitle('DIRECTA');
                }


                // Set active sheet index to the first sheet, so Excel opens this as the first sheet
                $phpExcelObject->setActiveSheetIndex(0);

                // create the writer
                $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel2007');
                // create the response
                $response = $this->get('phpexcel')->createStreamedResponse($writer);
                // adding headers

                $NOMBRE_EXCEL = "";
                if ($tipoReporte == 1) {
                    $NOMBRE_EXCEL = "CVTP_VENCIDA_ESCOLARIZADO";
                } elseif ($tipoReporte == 2) {
                    $NOMBRE_EXCEL = "CVTP_VENCIDA_DIRECTA";
                }

                $dispositionHeader = $response->headers->makeDisposition(
                    ResponseHeaderBag::DISPOSITION_ATTACHMENT, $NOMBRE_EXCEL . '.xlsx'
                );

                $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
                $response->headers->set('Pragma', 'public');
                $response->headers->set('Cache-Control', 'maxage=1');
                $response->headers->set('Content-Disposition', $dispositionHeader);

                return $response;
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function carteraVTPPExportarAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && $session->get("rol") == 99) {

            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $tipoReporte = $request->get('tipoReporte');
                $idePla = $request->get('p');
                $ESCUELA = "";
                $NOMENCLATURA = "";

                if ($tipoReporte == 1) { // GENERAR EXCEL ESCOLARIZADO
                    $dql = "SELECT p.idePla, p.nomPla, p.nomenclatura, COUNT(a.ideAlu) AS total "
                        . "FROM "
                        . "CmBundle:Alumnos a "
                        . "INNER JOIN CmBundle:Planteles p WITH a.cvePla = p.idePla "
                        . "WHERE "
                        . "a.estatus = 12 "
                        . "AND "
                        . "a.cvePla = " . $idePla . " "
                        . "GROUP BY p.idePla, p.nomPla "
                        . "ORDER BY p.nomPla";

                    $query = $em->createQuery($dql);
                    $datosEscolarizado = $query->getResult();

                    $listaEstatus = [];

                    $tramitesEscolarizado = [];
                    foreach ($datosEscolarizado as $de) {
                        $tramitesEscolarizado[$de['nomPla']] = [];
                        $tramitesEscolarizado[$de['nomPla']]['nomenclatura'] = $de['nomenclatura'];
                        $tramitesEscolarizado[$de['nomPla']]['total'] = $de['total'];
                        $tramitesEscolarizado[$de['nomPla']]['idePla'] = $de['idePla'];
                        $tramitesEscolarizado[$de['nomPla']]['alumnos'] = [];
                        $listaEstatus = [
                            'SIN TABLA',
                            "SIN INGRESAR",
                            "INGRESADO",
                            "INVASIÓN",
                            "ENTREGADO",
                            "DOCUMENTACIÓN INCOMPLETA",
                            "POR PAGO",
                            "ESTÁ AQUÍ",
                            "BAJA",
                            "EN TRÁMITE"
                        ];
                        foreach ($listaEstatus as $le) {
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['total'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                        }
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(['cvePla' => $de['idePla'], 'estatus' => 12]);
                        $estatus = "";
                        foreach ($alumnos as $a) {
                            $auxEst = "";
                            $totalPagar = 0;
                            $totalAbonado = 0;
                            $totalDebe = 0;

                            $auxTit = $em->getRepository('CmBundle:Titulaciones')
                                ->findOneBy(['cveAlu' => $a]);
                            $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                                ->findOneBy(array('cveAlu' => $a));
                            if ($auxTit != null) {
                                //SACAR EL ESTATUS
                                if ($auxTit->getEstatus() != null) {
                                    $auxEst = $auxTit->getEstatus();
                                } else {
                                    $auxEst = 1;
                                }
                                if ($auxPagTit != null) {
                                    $totalPagar = $auxPagTit->getMonto();
                                    $totalAbonado = $auxPagTit->getAbonado();
                                    $totalDebe = $auxPagTit->getDebe();
                                }
                            } else {
                                $auxEst = 0;
                            }
                            switch ($auxEst) {
                                case 0:
                                    $estatus = "SIN TABLA";
                                    break;
                                case 1:
                                    $estatus = "SIN INGRESAR";
                                    break;
                                case 2:
                                    $estatus = "INGRESADO";
                                    break;
                                case 3:
                                    $estatus = "INVASIÓN";
                                    break;
                                case 4:
                                    $estatus = "ENTREGADO";
                                    break;
                                case 5:
                                    $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                    break;
                                case 6:
                                    $estatus = "POR PAGO";
                                    break;
                                case 7:
                                    $estatus = "ESTÁ AQUÍ";
                                    break;
                                case 8:
                                    $estatus = "BAJA";
                                    break;
                                case 9:
                                    $estatus = "EN TRÁMITE";
                                    break;

                            }

                            $tramitesEscolarizado[$de['nomPla']]['alumnos'][$a->getCveCtl()]['A'] = $a;
                            $tramitesEscolarizado[$de['nomPla']]['alumnos'][$a->getCveCtl()]['estatus'] = $estatus;
                            $tramitesEscolarizado[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['total'] = $totalPagar;
                            $tramitesEscolarizado[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['abonado'] = $totalAbonado;
                            $tramitesEscolarizado[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['debe'] = $totalDebe;

                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                            $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesEscolarizado[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                        }
                    }


                } elseif ($tipoReporte == 2) { // GENERAR EXCEL DIRECTA

                    $dql = "SELECT p.idePla, p.nomPla, p.nomenclatura, ct.ideCorTit, COUNT(a.ideAlu) AS total "
                        . "FROM "
                        . "CmBundle:Alumnos a "
                        . "INNER JOIN CmBundle:Titulaciones t WITH t.cveAlu = a.ideAlu "
                        . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                        . "INNER JOIN CmBundle:Planteles p WITH ct.cvePla = p.idePla "
                        . "WHERE "
                        . "a.tipoAlumno = 8 "
                        . "AND "
                        . "ct.cvePla = " . $idePla . " "
                        . "GROUP BY p.idePla, p.nomPla, ct.ideCorTit "
                        . "ORDER BY p.nomPla";

                    $query = $em->createQuery($dql);
                    $datosDirecta = $query->getResult();

                    $tramitesDirecta = [];
                    foreach ($datosDirecta as $de) {
                        $tramitesDirecta[$de['nomPla']] = [];
                        $tramitesDirecta[$de['nomPla']]['nomenclatura'] = $de['nomenclatura'];
                        $tramitesDirecta[$de['nomPla']]['total'] = $de['total'];
                        $tramitesDirecta[$de['nomPla']]['idePla'] = $de['idePla'];
                        $tramitesDirecta[$de['nomPla']]['alumnos'] = [];
                        $listaEstatus = [
                            'SIN TABLA',
                            "SIN INGRESAR",
                            "INGRESADO",
                            "INVASIÓN",
                            "ENTREGADO",
                            "DOCUMENTACIÓN INCOMPLETA",
                            "POR PAGO",
                            "ESTÁ AQUÍ",
                            "BAJA",
                            "EN TRÁMITE"
                        ];
                        foreach ($listaEstatus as $le) {
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['total'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['total'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['abonado'] = 0;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$le]['pagos']['debe'] = 0;
                        }

                        $dql = "SELECT IDENTITY(t.cveAlu) AS ideAlu "
                            . "FROM "
                            . "CmBundle:Titulaciones t "
                            . "INNER JOIN CmBundle:CordinadoresTitulacion ct WITH t.cord = ct.ideCorTit "
                            . "WHERE "
                            . "t.cord = " . $de['ideCorTit'];

                        $query = $em->createQuery($dql);
                        $idesAlumnos = $query->getResult();

                        $auxIdesAlumnos = [];
                        foreach ($idesAlumnos as $ide) {
                            $auxIdesAlumnos[] = $ide['ideAlu'];
                        }

                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(['ideAlu' => $auxIdesAlumnos]);
                        $estatus = "";
                        foreach ($alumnos as $a) {
                            $auxEst = "";
                            $totalPagar = 0;
                            $totalAbonado = 0;
                            $totalDebe = 0;

                            $auxTit = $em->getRepository('CmBundle:Titulaciones')
                                ->findOneBy(['cveAlu' => $a]);
                            $auxPagTit = $em->getRepository('CmBundle:PagosTitulacion')
                                ->findOneBy(array('cveAlu' => $a));
                            if ($auxTit != null) {
                                //SACAR EL ESTATUS
                                if ($auxTit->getEstatus() != null) {
                                    $auxEst = $auxTit->getEstatus();
                                } else {
                                    $auxEst = 1;
                                }
                                if ($auxPagTit != null) {
                                    $totalPagar = $auxPagTit->getMonto();
                                    $totalAbonado = $auxPagTit->getAbonado();
                                    $totalDebe = $auxPagTit->getDebe();
                                }
                            } else {
                                $auxEst = 0;
                            }
                            switch ($auxEst) {
                                case 0:
                                    $estatus = "SIN TABLA";
                                    break;
                                case 1:
                                    $estatus = "SIN INGRESAR";
                                    break;
                                case 2:
                                    $estatus = "INGRESADO";
                                    break;
                                case 3:
                                    $estatus = "INVASIÓN";
                                    break;
                                case 4:
                                    $estatus = "ENTREGADO";
                                    break;
                                case 5:
                                    $estatus = "DOCUMENTACIÓN INCOMPLETA";
                                    break;
                                case 6:
                                    $estatus = "POR PAGO";
                                    break;
                                case 7:
                                    $estatus = "ESTÁ AQUÍ";
                                    break;
                                case 8:
                                    $estatus = "BAJA";
                                    break;
                                case 9:
                                    $estatus = "EN TRÁMITE";
                                    break;

                            }

                            $tramitesDirecta[$de['nomPla']]['alumnos'][$a->getCveCtl()]['A'] = $a;
                            $tramitesDirecta[$de['nomPla']]['alumnos'][$a->getCveCtl()]['estatus'] = $estatus;
                            $tramitesDirecta[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['total'] = $totalPagar;
                            $tramitesDirecta[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['abonado'] = $totalAbonado;
                            $tramitesDirecta[$de['nomPla']]['alumnos'][$a->getCveCtl()]['pagos']['debe'] = $totalDebe;

                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['total'] + 1;

                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['total'] + $totalPagar;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['abonado'] + $totalAbonado;
                            $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] = $tramitesDirecta[$de['nomPla']]['estatus'][$estatus]['pagos']['debe'] + $totalDebe;

                        }
                    }

                }

                $datosExcel = "";

                if ($tipoReporte == 1) {
                    $datosExcel = $tramitesEscolarizado;
                } elseif ($tipoReporte == 2) {
                    $datosExcel = $tramitesDirecta;
                }

                foreach ($datosExcel as $key => $de) {
                    $ESCUELA = $key;
                    $NOMENCLATURA = $de['nomenclatura'];
                    break;
                }

                $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();

                $phpExcelObject->getProperties()->setCreator("El Inge")
                    ->setLastModifiedBy("El Inge")
                    ->setTitle("Office 2007 XLSX Test Document")
                    ->setSubject("Office 2007 XLSX Test Document")
                    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                    ->setKeywords("office 2007 openxml php")
                    ->setCategory("Test result file");

                $LETRA = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];

                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('A1', $ESCUELA);

                //ENCABEZADOS
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('A3', "N.C.");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue('B3', "TOTAL TRÁMITES");

                $index = 2;
                foreach ($listaEstatus as $e) {
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index] . '3', $e);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 1] . '3', "TOTAL");
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 2] . '3', "ABONADO");
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$index + 3] . '3', "DEBE");
                    $index = $index + 4;
                }


                $indice = 0;
                $numero = 4;
                $nc = 0;

                foreach ($datosExcel as $k => $v) {
                    $nc++;
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice] . $numero, $nc);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 1] . $numero, $v['total']);

                    $contador = 2;
                    foreach ($v['estatus'] as $kk => $vv) {
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + $contador] . $numero, $vv['total']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 1)] . $numero, $vv['pagos']['total']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 2)] . $numero, $vv['pagos']['abonado']);
                        $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + ($contador + 3)] . $numero, $vv['pagos']['debe']);
                        $contador = $contador + 4;
                    }

                    $numero++;
                }


                //ENCABEZADOS LISTA ALUMNOS
                $indice = 0;
                $numero++;
                $numero++;

                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice] . $numero, "N.C.");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 1] . $numero, "MATRÍCULA");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 2] . $numero, "NOMBRE DEL ALUMNO");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 3] . $numero, "ESTATUS");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 4] . $numero, "COSTO DEL TRÁMITE");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 5] . $numero, "ABONADO");
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 6] . $numero, "DEBE");

                $indice = 0;
                $nc = 0;
                $numero++;
                foreach ($datosExcel[$ESCUELA]['alumnos'] as $key => $da) {
                    $nc++;
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice] . $numero, $nc);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 1] . $numero, $key);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 2] . $numero, $da['A']->getNomAlu() . " " . $da['A']->getApePat() . " " . $da['A']->getApeMat());
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 3] . $numero, $da['estatus']);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 4] . $numero, $da['pagos']['total']);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 5] . $numero, $da['pagos']['abonado']);
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 6] . $numero, $da['pagos']['debe']);

                    $numero++;
                }


                if ($tipoReporte == 1) {
                    $phpExcelObject->getActiveSheet()->setTitle('ESCOLARIZADO');
                } elseif ($tipoReporte == 2) {
                    $phpExcelObject->getActiveSheet()->setTitle('DIRECTA');
                }


                // Set active sheet index to the first sheet, so Excel opens this as the first sheet
                $phpExcelObject->setActiveSheetIndex(0);

                // create the writer
                $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel2007');
                // create the response
                $response = $this->get('phpexcel')->createStreamedResponse($writer);
                // adding headers

                $NOMBRE_EXCEL = "";
                if ($tipoReporte == 1) {
                    $NOMBRE_EXCEL = "CVTP_VENCIDA_ESCOLARIZADO";
                } elseif ($tipoReporte == 2) {
                    $NOMBRE_EXCEL = "CVTP_VENCIDA_DIRECTA";
                }
                $NOMBRE_EXCEL = $NOMBRE_EXCEL . "_" . $NOMENCLATURA;

                $dispositionHeader = $response->headers->makeDisposition(
                    ResponseHeaderBag::DISPOSITION_ATTACHMENT, $NOMBRE_EXCEL . '.xlsx'
                );

                $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
                $response->headers->set('Pragma', 'public');
                $response->headers->set('Cache-Control', 'maxage=1');
                $response->headers->set('Content-Disposition', $dispositionHeader);

                return $response;
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    function base64_to_png($base64_string, $output_file)
    {
        // open the output file for writing
        $ifp = fopen($output_file, 'wb');

        // split the string on commas
        // $data[ 0 ] == "data:image/png;base64"
        // $data[ 1 ] == <actual base64 string>
        $data = explode(',', $base64_string);

        // we could add validation here with ensuring count( $data ) > 1
        fwrite($ifp, base64_decode($data[1]));

        // clean up the file resource
        fclose($ifp);

        return $output_file;
    }

}
