src/MDS/GreenPatioBundle/Controller/ReservationsAdminServicesController.php line 261

Open in your IDE?
  1. <?php
  2. namespace App\MDS\GreenPatioBundle\Controller;
  3. use App\Entity\Supplier;
  4. use App\MDS\GreenPatioBundle\Entity\CvrReservationInvoice;
  5. use App\MDS\GreenPatioBundle\Entity\CvrReservationInvoiceItems;
  6. use App\MDS\GreenPatioBundle\Entity\ReservationInvoice;
  7. use App\MDS\GreenPatioBundle\Entity\ReservationInvoiceItems;
  8. use App\MDS\GreenPatioBundle\Entity\ReservationLoungeDetails;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. class ReservationsAdminServicesController extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/servicestathome/",  name="reservations_greenpatio_services_stat_home")
  16.      * Formulario para consultar las estadisticas de los servicios
  17.      */
  18.     public function servicesStatHomeAction(Request $request)
  19.     {
  20.         $em $this->getDoctrine()->getManager();
  21.         $listSupplier $em->getRepository(Supplier::class)->findAll();
  22.         return $this->render('MDS/GreenPatioBundle/reservations/services-stats.html.twig', array( 'listSupplier' => $listSupplier'data' => null, ));
  23.     }
  24.     /**
  25.      * @Route("/servicestatreq/",  name="reservations_greenpatio_services_stat")
  26.      * Se consulta para un periodo dado los servicios de un proveedor
  27.      */
  28.     public function createForecastAction(Request $request)
  29.     {
  30.         $em $this->getDoctrine()->getManager();
  31.         $newRequest $request->request->get('reservation_services_req');
  32.         $hoy = new \DateTime("now"NULL);
  33.         $dateStartReq = empty($newRequest['date_start']) ? $hoy $newRequest['date_start'];
  34.         $dateEndReq = empty($newRequest['date_end']) ? $hoy $newRequest['date_end'];
  35.         $supplierId = empty($newRequest['supplierId']) ? 'All' $newRequest['supplierId'];
  36.         $data = array();
  37.         $data $this->baseStatisticSupplier($dateStartReq$dateEndReq$supplierId);
  38.         $listSupplier $em->getRepository(Supplier::class)->findAll();
  39.         // Poner la leyenda ($legend) y ($dataDonut) en funcion de la eleccion del status
  40.         $dataDonut = array();
  41.         $dataDonutTwo = array();
  42.         $dataDonutThree = array();
  43.         $dataDonutFour = array();
  44.         $legend = array();
  45.         $legendTwo = array();
  46.         $legendThree = array();
  47.         $legendFour = array();
  48.         foreach ($data['arrayFiles'] as $dataFile)
  49.         {
  50.             if (array_key_exists('invoice',$dataFile)){
  51.                 $dataDonut[] = ['name'=> $dataFile['reservation']->getId(), 'value'=> $dataFile['invoice']['Calculos_Totales_Neto_Expediente']];
  52.                 $legend[] = $dataFile['reservation']->getId();
  53.             }
  54.         }
  55.         $legend = array();
  56.         foreach ($data['arraySupToServ'] as $key => $dataSup)
  57.         {
  58.             if($key == 0){
  59.                 $dataDonutTwo[] = ['name'=> 'Sin Proveedor''value'=> $dataSup['Calculos_Totales_Neto_Proveedor']];
  60.                 $legendTwo[$key] = 'Sin Proveedor';
  61.             } else {
  62.                 $dataDonutTwo[] = ['name'=> $dataSup['supplier']->getCompany(), 'value'=> $dataSup['Calculos_Totales_Neto_Proveedor']];
  63.                 $legendTwo[$key] = $dataSup['supplier']->getCompany();
  64.             }
  65.         }
  66.         foreach ($data['arrayServToSup'] as $key => $dataServ)
  67.         {
  68.             switch ($key){
  69.                 case 'Accommodation'// Alojamiento
  70.                     $dataDonutThree[] = ['name'=> 'Alojamiento''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  71.                     $legendThree[$key] = 'Alojamiento';
  72.                     break;
  73.                 case 'Activities'//Actividades
  74.                     $dataDonutThree[] = ['name'=> 'Actividades''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  75.                     $legendThree[$key] = 'Actividades';
  76.                     break;
  77.                 case 'Av'// AV
  78.                     $dataDonutThree[] = ['name'=> 'Av''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  79.                     $legendThree[$key] = 'Av';
  80.                     break;
  81.                 case 'Creative'//Creativo
  82.                     $dataDonutThree[] = ['name'=> 'Creativo''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  83.                     $legendThree[$key] = 'Creativo';
  84.                     break;
  85.                 case 'Cruise'//Crucero
  86.                     $dataDonutThree[] = ['name'=> 'Crucero''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  87.                     $legendThree[$key] = 'Crucero';
  88.                     break;
  89.                 case 'Entertainment'//Entretenimiento
  90.                     $dataDonutThree[] = ['name'=> 'Entretenimiento''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  91.                     $legendThree[$key] = 'Entretenimiento';
  92.                     break;
  93.                 case 'Gifts'// Regalos
  94.                     $dataDonutThree[] = ['name'=> 'Regalos''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  95.                     $legendThree[$key] = 'Regalos';
  96.                     break;
  97.                 case 'Guide'//Guía
  98.                     $dataDonutThree[] = ['name'=> 'Guía''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  99.                     $legendThree[$key] = 'Guía';
  100.                     break;
  101.                 case 'Itineraries'//Itinerarios
  102.                     $dataDonutThree[] = ['name'=> 'Itinerarios''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  103.                     $legendThree[$key] = 'Itinerarios';
  104.                     break;
  105.                 case 'Lounge'//Lounge  -- No Aplica
  106.                     $dataDonutThree[] = ['name'=> 'Salón''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  107.                     $legendThree[$key] = 'Salón';
  108.                     break;
  109.                 case 'Menu'//Catering
  110.                     $dataDonutThree[] = ['name'=> 'Catering''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  111.                     $legendThree[$key] = 'Catering';
  112.                     break;
  113.                 case 'Others'//Otros
  114.                     $dataDonutThree[] = ['name'=> 'Otros''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  115.                     $legendThree[$key] = 'Otros';
  116.                     break;
  117.                 case 'Transport'//Transporte
  118.                     $dataDonutThree[] = ['name'=> 'Transporte''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  119.                     $legendThree[$key] = 'Transporte';
  120.                     break;
  121.                 case 'Technology'//Tecnología
  122.                     $dataDonutThree[] = ['name'=> 'Tecnología''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  123.                     $legendThree[$key] = 'Tecnología';
  124.                     break;
  125.                 case 'Assisstant'//Asistencia
  126.                     $dataDonutThree[] = ['name'=> 'Asistencia''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  127.                     $legendThree[$key] = 'Asistencia';
  128.                     break;
  129.                 case 'DDR'//DDR
  130.                     $dataDonutThree[] = ['name'=> 'DDR''value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  131.                     $legendThree[$key] = 'DDR';
  132.                     break;
  133.                 default:
  134.                     $dataDonutThree[] = ['name'=> $key'value'=> $dataServ['Calculos_Totales_Neto_Catalogo']];
  135.                     $legendThree[$key] = $key;
  136.                     break;
  137.             }
  138.         }
  139.         foreach ($data['arrayLounges'] as $key => $dataSup)
  140.         {
  141.             if($key == 0){
  142.                 $dataDonutFour[] = ['name'=> 'Advertencia: No se encontró información de la sala''value'=> $dataSup['Calculos_Totales_Neto_Sala']];
  143.                 $legendFour[$key] = 'Advertencia: No se encontró información de la sala';
  144.             } else {
  145.                 $dataDonutFour[] = ['name'=> $dataSup['Lounge']->getName(), 'value'=> $dataSup['Calculos_Totales_Neto_Sala']];
  146.                 $legendFour[$key] = $dataSup['Lounge']->getName();
  147.             }
  148.         }
  149.         return $this->render('MDS/GreenPatioBundle/Statistics/invoice-statistics.html.twig',
  150.             array(
  151.                 'listSupplier' => $listSupplier,
  152.                 'data' => $data,
  153.                 'desde' => $dateStartReq,
  154.                 'hasta' => $dateEndReq,
  155.                 'dataDonut' => $dataDonut,
  156.                 'dataDonutTwo' => $dataDonutTwo,
  157.                 'dataDonutThree' => $dataDonutThree,
  158.                 'dataDonutFour' => $dataDonutFour,
  159.                 'legend' => $legend,
  160.                 'legendTwo' => $legendTwo,
  161.                 'legendThree' => $legendThree,
  162.                 'legendFour' => $legendFour,
  163.                 )
  164.         );
  165.     }
  166.     /**
  167.      * @Route("/ocupacystatreq/",  name="reservations_greenpatio_ocupacy_stat")
  168.      * Se consulta para un periodo dado la ocupacion de las salas
  169.      */
  170.     public function createOcupacyForecastAction(Request $request)
  171.     {
  172.         $em $this->getDoctrine()->getManager();
  173.         $newRequest $request->request->get('reservation_services_req');
  174.         $hoy = new \DateTime("now"NULL);
  175.         $dateStartReq = empty($newRequest['date_start']) ? $hoy $newRequest['date_start'];
  176.         $dateEndReq = empty($newRequest['date_end']) ? $hoy $newRequest['date_end'];
  177.         $data = array();
  178.         $data $this->baseStatisticOcupacy($dateStartReq$dateEndReq);
  179.         $dataDonut = array();
  180.         $dataDonutTwo = array();
  181.         $legend = array();
  182.         $legendTwo = array();
  183.         $dataDonut[] = ['name'=> 'Lunes''value'=> $data['sizeDays']['Lunes']];
  184.         $legend[] = 'Lunes';
  185.         $dataDonut[] = ['name'=> 'Martes''value'=>  $data['sizeDays']['Martes']];
  186.         $legend[] = 'Martes';
  187.         $dataDonut[] = ['name'=> 'Miercoles''value'=>  $data['sizeDays']['Miercoles']];
  188.         $legend[] = 'Miercol';
  189.         $dataDonut[] = ['name'=> 'Jueves''value'=>  $data['sizeDays']['Jueves']];
  190.         $legend[] = 'Jueves';
  191.         $dataDonut[] = ['name'=> 'Viernes''value'=>  $data['sizeDays']['Viernes']];
  192.         $legend[] = 'Viernes';
  193.         $dataDonut[] = ['name'=> 'Sábado''value'=>  $data['sizeDays']['Sábado']];
  194.         $legend[] = 'Sábado';
  195.         $dataDonut[] = ['name'=> 'Domingo''value'=>  $data['sizeDays']['Domingo']];
  196.         $legend[] = 'Domingo';
  197.         $dataDonutTwo[] = ['name'=> 'Enero''value'=> $data['sizeMonths']['Enero']];
  198.         $legendTwo[] = 'Enero';
  199.         $dataDonutTwo[] = ['name'=> 'Febrero''value'=> $data['sizeMonths']['Febrero']];
  200.         $legendTwo[] = 'Febrero';
  201.         $dataDonutTwo[] = ['name'=> 'Marzo''value'=> $data['sizeMonths']['Marzo']];
  202.         $legendTwo[] = 'Marzo';
  203.         $dataDonutTwo[] = ['name'=> 'Abril''value'=> $data['sizeMonths']['Abril']];
  204.         $legendTwo[] = 'Abril';
  205.         $dataDonutTwo[] = ['name'=> 'Mayo''value'=> $data['sizeMonths']['Mayo']];
  206.         $legendTwo[] = 'Mayo';
  207.         $dataDonutTwo[] = ['name'=> 'Junio''value'=> $data['sizeMonths']['Junio']];
  208.         $legendTwo[] = 'Junio';
  209.         $dataDonutTwo[] = ['name'=> 'Julio''value'=> $data['sizeMonths']['Julio']];
  210.         $legendTwo[] = 'Julio';
  211.         $dataDonutTwo[] = ['name'=> 'Agosto''value'=> $data['sizeMonths']['Agosto']];
  212.         $legendTwo[] = 'Agosto';
  213.         $dataDonutTwo[] = ['name'=> 'Septiembre''value'=> $data['sizeMonths']['Septiembre']];
  214.         $legendTwo[] = 'Septiembre';
  215.         $dataDonutTwo[] = ['name'=> 'Octubre''value'=> $data['sizeMonths']['Octubre']];
  216.         $legendTwo[] = 'Octubre';
  217.         $dataDonutTwo[] = ['name'=> 'Noviembre''value'=> $data['sizeMonths']['Noviembre']];
  218.         $legendTwo[] = 'Noviembre';
  219.         $dataDonutTwo[] = ['name'=> 'Diciembre''value'=> $data['sizeMonths']['Diciembre']];
  220.         $legendTwo[] = 'Diciembre';
  221.         return $this->render('MDS/GreenPatioBundle/Statistics/ocupacy-statistics.html.twig',
  222.             array(
  223.                 'data' => $data,
  224.                 'desde' => $dateStartReq,
  225.                 'hasta' => $dateEndReq,
  226.                 'dataDonut' => $dataDonut,
  227.                 'dataDonutTwo' => $dataDonutTwo,
  228.                 'legend' => $legend,
  229.                 'legendTwo' => $legendTwo,
  230.             )
  231.         );
  232.     }
  233.     private function baseStatisticSupplier($dateStartReq$dateEndReq$supplierId)
  234.     {
  235.         $em $this->getDoctrine()->getManager();
  236.         $data = array();
  237.         $arraySupToServ = array();
  238.         $arrayServToSup = array();
  239.         $arrayFiles = array();
  240.         $arrayLounges = array();
  241.         // Inicializamos los totales de las reservas
  242.         $arrayFiles['CalculosTotales']['Neto'] = 0;
  243.         $arrayFiles['CalculosTotales']['Total'] = 0;
  244.         if (!empty($dateEndReq) and !empty($dateStartReq) and empty($yearReq) and empty($monthReq)){
  245.             $parameters = array( 'start' => $dateStartReq'end'=> $dateEndReq'facturado'=> 'Invoiced',);
  246.             $dql "SELECT p
  247.                     FROM App\MDS\GreenPatioBundle\Entity\Reservation p
  248.                     WHERE p.dateStart BETWEEN :start AND :end AND p.status = :facturado  
  249.                     ORDER BY p.dateStart ASC
  250.                   ";
  251.             $query $em->createQuery($dql)->setParameters($parameters);
  252.             $data $query->getResult();
  253.         }
  254.         foreach ($data as $item){
  255.             // Arreglo de los expedientes
  256.             $invoice $em->getRepository(ReservationInvoice::class)->findBy( array('reservationId'=>$item->getId()));
  257.             $itemsInvoice $em->getRepository(ReservationInvoiceItems::class)->findBy( array('reservationId'=>$item->getId()));
  258.             if (empty($invoice)){
  259.                 // Factura de Covarrubia
  260.                 $invoice $em->getRepository(CvrReservationInvoice::class)->findBy( array('reservationId'=>$item->getId()));
  261.                 $itemsInvoice $em->getRepository(CvrReservationInvoiceItems::class)->findBy( array('reservationId'=>$item->getId()));
  262.             }
  263.             $arrayFiles[$item->getId()]['reservation'] = $item;
  264.             foreach ($invoice as $elem){
  265.                 $arrayFiles[$item->getId()]['invoice'][$elem->getId()] = $elem;
  266.                 $arrayFiles[$item->getId()]['invoice']['Calculos_Totales_Neto_Expediente'] =
  267.                     array_key_exists('Calculos_Totales_Neto_Expediente',$arrayFiles[$item->getId()]['invoice']) ?
  268.                         ($arrayFiles[$item->getId()]['invoice']['Calculos_Totales_Neto_Expediente'] + $elem->getTotalNet()) : $elem->getTotalNet();
  269.                 $arrayFiles[$item->getId()]['invoice']['Calculos_Totales_Iva_Expediente'] =
  270.                     array_key_exists('Calculos_Totales_Iva_Expediente',$arrayFiles[$item->getId()]['invoice']) ?
  271.                         ($arrayFiles[$item->getId()]['invoice']['Calculos_Totales_Iva_Expediente'] + $elem->getTotal()) : $elem->getTotal();
  272.             }
  273.             foreach ($itemsInvoice as $elem){ $arrayFiles[$item->getId()]['itemsInvoice'][$elem->getId()] = $elem; }
  274.             $arrayFiles['CalculosTotales']['Neto'] = $arrayFiles['CalculosTotales']['Neto'] + $invoice[0]->getTotalNet();
  275.             $arrayFiles['CalculosTotales']['Total'] = $arrayFiles['CalculosTotales']['Total'] + $invoice[0]->getTotal();
  276.             foreach ($itemsInvoice as $itemInv){
  277.                 if($itemInv->getItemType() == 'SERVICE'){
  278.                     $supplier $em->getRepository(Supplier::class)->findOneById$itemInv->getSrvSupplierId() );
  279.                     $calculoNetoItem $this->calculosItem($itemInv->getId(), 'N');
  280.                     $calculoIvaItem $this->calculosItem($itemInv->getId(), 'I');
  281.                     if(!empty($supplier)){
  282.                         // Arreglo de proveedor->servicios
  283.                         $arraySupToServ[$supplier->getId()]['supplier'] = $supplier;
  284.                         $arraySupToServ[$supplier->getId()]['services'][$itemInv->getId()]['item'] = $itemInv;
  285.                         $arraySupToServ[$supplier->getId()]['services'][$itemInv->getId()]['CalculosTotales_Neto'] =
  286.                             array_key_exists('CalculosTotales_Neto',$arraySupToServ[$supplier->getId()]['supplier']) ?
  287.                                 ($arraySupToServ[$supplier->getId()]['supplier']['CalculosTotales_Neto'] + $calculoNetoItem) : $calculoNetoItem;
  288.                         $arraySupToServ[$supplier->getId()]['services'][$itemInv->getId()]['CalculosTotales_Iva'] =
  289.                             array_key_exists('CalculosTotales_Iva',$arraySupToServ[$supplier->getId()]['supplier']) ?
  290.                                 ($arraySupToServ[$supplier->getId()]['supplier']['CalculosTotales_Iva'] + $calculoIvaItem) : $calculoIvaItem;
  291.                         $arraySupToServ[$supplier->getId()]['Calculos_Totales_Neto_Proveedor'] =
  292.                             array_key_exists('Calculos_Totales_Neto_Proveedor',$arraySupToServ[$supplier->getId()]) ?
  293.                                 ($arraySupToServ[$supplier->getId()]['Calculos_Totales_Neto_Proveedor'] + $calculoNetoItem) : $calculoNetoItem;
  294.                         $arraySupToServ[$supplier->getId()]['Calculos_Totales_Iva_Proveedor'] =
  295.                             array_key_exists('Calculos_Totales_Iva_Proveedor',$arraySupToServ[$supplier->getId()]) ?
  296.                                 ($arraySupToServ[$supplier->getId()]['Calculos_Totales_Iva_Proveedor'] + $calculoIvaItem) : $calculoIvaItem;
  297.                         // Arreglo de servicios->proveedor
  298.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['supplier'] = $supplier;
  299.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['services'][] = $itemInv;
  300.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Neto'] =
  301.                             array_key_exists('CalculosTotales_Neto',$arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]) ?
  302.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Neto'] + $calculoNetoItem) : $calculoNetoItem;
  303.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Iva'] =
  304.                             array_key_exists('CalculosTotales_Iva',$arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]) ?
  305.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Iva'] + $calculoIvaItem) : $calculoIvaItem;
  306.                         $arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Neto_Catalogo'] =
  307.                             array_key_exists('Calculos_Totales_Neto_Catalogo',$arrayServToSup[$itemInv->getSrvServiceCatName()]) ?
  308.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Neto_Catalogo'] + $calculoNetoItem) : $calculoNetoItem;
  309.                         $arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Iva_Catalogo'] =
  310.                             array_key_exists('Calculos_Totales_Iva_Catalogo',$arrayServToSup[$itemInv->getSrvServiceCatName()]) ?
  311.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Iva_Catalogo'] + $calculoIvaItem) : $calculoIvaItem;
  312.                     } else {
  313.                         // Arreglo de proveedor->servicios
  314.                         $arraySupToServ['0']['supplier'] = 'Sin Proveedor';
  315.                         $arraySupToServ['0']['services'][$itemInv->getId()]['item'] = $itemInv;
  316.                         $arraySupToServ['0']['services'][$itemInv->getId()]['CalculosTotales_Neto'] =
  317.                             array_key_exists('CalculosTotales_Neto',$arraySupToServ['0']['services'][$itemInv->getId()]) ?
  318.                                 ($arraySupToServ['0']['supplier']['CalculosTotales_Neto'] + $calculoNetoItem) : $calculoNetoItem;
  319.                         $arraySupToServ['0']['services'][$itemInv->getId()]['CalculosTotales_Iva'] =
  320.                             array_key_exists('CalculosTotales_Iva',$arraySupToServ['0']['services'][$itemInv->getId()]) ?
  321.                                 ($arraySupToServ['0']['supplier']['CalculosTotales_Iva'] + $calculoIvaItem) : $calculoIvaItem;
  322.                         $arraySupToServ['0']['Calculos_Totales_Neto_Proveedor'] =
  323.                             array_key_exists('Calculos_Totales_Neto_Proveedor',$arraySupToServ['0']) ?
  324.                                 ($arraySupToServ['0']['Calculos_Totales_Neto_Proveedor'] + $calculoNetoItem) : $calculoNetoItem;
  325.                         $arraySupToServ['0']['Calculos_Totales_Iva_Proveedor'] =
  326.                             array_key_exists('Calculos_Totales_Iva_Proveedor',$arraySupToServ['0']) ?
  327.                                 ($arraySupToServ['0']['Calculos_Totales_Iva_Proveedor'] + $calculoIvaItem) : $calculoIvaItem;
  328.                         // Arreglo de servicios->proveedor
  329.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['supplier'] = 'Sin Proveedor';
  330.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['services'][] = $itemInv;
  331.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Neto'] =
  332.                             array_key_exists('CalculosTotales_Neto',$arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]) ?
  333.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Neto'] + $calculoNetoItem) : $calculoNetoItem;
  334.                         $arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Iva'] =
  335.                             array_key_exists('CalculosTotales_Iva',$arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]) ?
  336.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()][$itemInv->getId()]['CalculosTotales_Iva'] + $calculoIvaItem) : $calculoIvaItem;
  337.                         $arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Neto_Catalogo'] =
  338.                             array_key_exists('Calculos_Totales_Neto_Catalogo',$arrayServToSup[$itemInv->getSrvServiceCatName()]) ?
  339.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Neto_Catalogo'] + $calculoNetoItem) : $calculoNetoItem;
  340.                         $arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Iva_Catalogo'] =
  341.                             array_key_exists('Calculos_Totales_Iva_Catalogo',$arrayServToSup[$itemInv->getSrvServiceCatName()]) ?
  342.                                 ($arrayServToSup[$itemInv->getSrvServiceCatName()]['Calculos_Totales_Iva_Catalogo'] + $calculoIvaItem) : $calculoIvaItem;
  343.                     }
  344.                 }
  345.                 // Arreglo de las salas
  346.                 if($itemInv->getItemType() == 'LOUNGE'){
  347.                     $arrayLounges[$itemInv->getLngIdLounge()]['IdLounge'] = $itemInv->getLngIdLounge();
  348.                     $loungeDetails $em->getRepository(ReservationLoungeDetails::class)->findOneById$itemInv->getLngIdLounge() );
  349.                     $arrayLounges[$itemInv->getLngIdLounge()]['Lounge'] = empty($loungeDetails) ? 'No se encontró información de la sala' $loungeDetails;
  350.                     $arrayLounges[$itemInv->getLngIdLounge()]['ItemSold'][$itemInv->getId()]['item'] = $itemInv;
  351.                     $arrayLounges[$itemInv->getLngIdLounge()]['ItemSold'][$itemInv->getId()]['CalculosTotales_Neto'] = $itemInv->getLngServicePrice();
  352.                     if (strpos($itemInv->getLngServicePrice(), ',') !== false) {
  353.                         $itemInv->setLngServicePrice(str_replace(',''.'$itemInv->getLngServicePrice()));
  354.                     }
  355.                     $arrayLounges[$itemInv->getLngIdLounge()]['ItemSold'][$itemInv->getId()]['CalculosTotales_Iva'] = $itemInv->getLngServicePrice() * 1.21;
  356.                     $arrayLounges[$itemInv->getLngIdLounge()]['Calculos_Totales_Neto_Sala'] =
  357.                         array_key_exists('Calculos_Totales_Neto_Sala',$arrayLounges[$itemInv->getLngIdLounge()]) ?
  358.                             ($arrayLounges[$itemInv->getLngIdLounge()]['Calculos_Totales_Neto_Sala'] + $itemInv->getLngServicePrice()) : $itemInv->getLngServicePrice();
  359.                     $arrayLounges[$itemInv->getLngIdLounge()]['Calculos_Totales_Iva_Sala'] =
  360.                         array_key_exists('Calculos_Totales_Iva_Sala',$arrayLounges[$itemInv->getLngIdLounge()]) ?
  361.                             ($arrayLounges[$itemInv->getLngIdLounge()]['Calculos_Totales_Iva_Sala'] + ($itemInv->getLngServicePrice() * 1.21) ) : ($itemInv->getLngServicePrice() * 1.21);
  362.                 }
  363.             }
  364.         }
  365.         $data = array(
  366.             'arrayFiles' => $arrayFiles,
  367.             'arraySupToServ' => $arraySupToServ,
  368.             'arrayServToSup' => $arrayServToSup,
  369.             'arrayLounges' => $arrayLounges,
  370.         );
  371.         return $data;
  372.     }
  373.     private function calculosItem($id$type){
  374.         $em $this->getDoctrine()->getManager();
  375.         $item $em->getRepository(ReservationInvoiceItems::class)->findOneById$id );
  376.         switch ($item->getSrvServiceCatId()){
  377.             case 1// Alojamiento
  378.                 $numNoches = (($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days;
  379.                 // La personas no afectan este calculo
  380.                 $price $item->getSrvPrice();
  381.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  382.                 $com $item->getSrvCommission() * $opCom;
  383.                 $price $price + (($price $com)/100);
  384.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  385.                 $over $item->getSrvOver() * $opOver;
  386.                 $price $price $over;
  387.                 $neto $price $numNoches $item->getSrvUnits();
  388.                 break;
  389.             case 2//Actividades
  390.                 // El número de personas es considerado en el calculo
  391.                 $pax $item->getSrvPax();
  392.                 if (empty($pax) or $pax == "0") { $pax 1; }
  393.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  394.                 $price $item->getSrvPrice();
  395.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  396.                 $com $item->getSrvCommission() * $opCom;
  397.                 $price $price + (($price $com)/100);
  398.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  399.                 $over $item->getSrvOver() * $opOver;
  400.                 $price $price $over;
  401.                 $neto $price $days $item->getSrvUnits();
  402.                 break;
  403.             case 3// AV
  404.                 $pax $item->getSrvPax();
  405.                 if (empty($pax) or $pax == "0") { $pax 1; }
  406.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  407.                 $unitsServ $item->getSrvUnits();
  408.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  409.                 $price $item->getSrvPrice();
  410.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  411.                 $com $item->getSrvCommission() * $opCom;
  412.                 $price $price + (($price $com)/100);
  413.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  414.                 $over $item->getSrvOver() * $opOver;
  415.                 $price $price $over;
  416.                 $neto $price $days $unitsServ $pax;
  417.                 break;
  418.             case 4//Creative
  419.                 $pax $item->getSrvPax();
  420.                 if (empty($pax) or $pax == "0") { $pax 1; }
  421.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  422.                 $unitsServ $item->getSrvUnits();
  423.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  424.                 $price $item->getSrvPrice();
  425.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  426.                 $com $item->getSrvCommission() * $opCom;
  427.                 $price $price + (($price $com)/100);
  428.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  429.                 $over $item->getSrvOver() * $opOver;
  430.                 $price $price $over;
  431.                 $neto $price $days $unitsServ $pax;
  432.                 break;
  433.             case 5//Cruise
  434.                 $pax $item->getSrvPax();
  435.                 if (empty($pax) or $pax == "0") { $pax 1; }
  436.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days);
  437.                 $unitsServ $item->getSrvUnits();
  438.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  439.                 $price $item->getSrvPrice();
  440.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  441.                 $com $item->getSrvCommission() * $opCom;
  442.                 $price $price + (($price $com)/100);
  443.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  444.                 $over $item->getSrvOver() * $opOver;
  445.                 $price $price $over;
  446.                 $neto $price $days $unitsServ $pax;
  447.                 break;
  448.             case 6//Entertaiment
  449.                 $pax $item->getSrvPax();
  450.                 if (empty($pax) or $pax == "0") { $pax 1; }
  451.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  452.                 $unitsServ $item->getSrvUnits();
  453.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  454.                 $price $item->getSrvPrice();
  455.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  456.                 $com $item->getSrvCommission() * $opCom;
  457.                 $price $price + (($price $com)/100);
  458.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  459.                 $over $item->getSrvOver() * $opOver;
  460.                 $price $price $over;
  461.                 $neto $price $days $unitsServ $pax;
  462.                 break;
  463.             case 7// Gifts
  464.                 $pax $item->getSrvPax();
  465.                 if (empty($pax) or $pax == "0") { $pax 1; }
  466.                 $days 1;
  467.                 $unitsServ $item->getSrvUnits();
  468.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  469.                 $price $item->getSrvPrice();
  470.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  471.                 $com $item->getSrvCommission() * $opCom;
  472.                 $price $price + (($price $com)/100);
  473.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  474.                 $over $item->getSrvOver() * $opOver;
  475.                 $price $price $over;
  476.                 $neto $price $days $unitsServ $pax;
  477.                 break;
  478.             case 8//Guide
  479.                 $pax $item->getSrvPax();
  480.                 if (empty($pax) or $pax == "0") { $pax 1; }
  481.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  482.                 $unitsServ $item->getSrvUnits();
  483.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  484.                 $price $item->getSrvPrice();
  485.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  486.                 $com $item->getSrvCommission() * $opCom;
  487.                 $price $price + (($price $com)/100);
  488.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  489.                 $over $item->getSrvOver() * $opOver;
  490.                 $price $price $over;
  491.                 $neto $price $days $unitsServ $pax;
  492.                 break;
  493.             case 9//Itineraries
  494.                 $pax $item->getSrvPax();
  495.                 if (empty($pax) or $pax == "0") { $pax 1; }
  496.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  497.                 $unitsServ $item->getSrvUnits();
  498.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  499.                 $price $item->getSrvPrice();
  500.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  501.                 $com $item->getSrvCommission() * $opCom;
  502.                 $price $price + (($price $com)/100);
  503.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  504.                 $over $item->getSrvOver() * $opOver;
  505.                 $price $price $over;
  506.                 $neto $price $days $unitsServ $pax;
  507.                 break;
  508.             case 10//Lounge  -- No Aplica
  509.                 $neto 0; break;
  510.             case 11//Menu
  511.                 $pax $item->getSrvPax();
  512.                 if (empty($pax) or $pax == "0") { $pax 1; }
  513.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  514.                 $unitsServ $item->getSrvUnits();
  515.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  516.                 $price $item->getSrvPrice();
  517.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  518.                 $com $item->getSrvCommission() * $opCom;
  519.                 $price $price + (($price $com)/100);
  520.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  521.                 $over $item->getSrvOver() * $opOver;
  522.                 $price $price $over;
  523.                 $neto $price $days $unitsServ $pax;
  524.                 break;
  525.             case 12//Others
  526.                 $pax $item->getSrvPax();
  527.                 if (empty($pax) or $pax == "0") { $pax 1; }
  528.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  529.                 $unitsServ $item->getSrvUnits();
  530.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  531.                 $price $item->getSrvPrice();
  532.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  533.                 $com $item->getSrvCommission() * $opCom;
  534.                 $price $price + (($price $com)/100);
  535.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  536.                 $over $item->getSrvOver() * $opOver;
  537.                 $price $price $over;
  538.                 $neto $price $days $unitsServ $pax;
  539.                 break;
  540.             case 13//Transport
  541.                 $pax $item->getSrvPax();
  542.                 if (empty($pax) or $pax == "0") { $pax 1; }
  543.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  544.                 $unitsServ $item->getSrvUnits();
  545.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  546.                 $price $item->getSrvPrice();
  547.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  548.                 $com $item->getSrvCommission() * $opCom;
  549.                 $price $price + (($price $com)/100);
  550.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  551.                 $over $item->getSrvOver() * $opOver;
  552.                 $price $price $over;
  553.                 $neto $price $days $unitsServ $pax;
  554.                 break;
  555.             case 14//Technology
  556.                 $pax $item->getSrvPax();
  557.                 if (empty($pax) or $pax == "0") { $pax 1; }
  558.                 $days 1;
  559.                 $unitsServ $item->getSrvUnits();
  560.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  561.                 $price $item->getSrvPrice();
  562.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  563.                 $com $item->getSrvCommission() * $opCom;
  564.                 $price $price + (($price $com)/100);
  565.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  566.                 $over $item->getSrvOver() * $opOver;
  567.                 $price $price $over;
  568.                 $neto $price $days $unitsServ $pax;
  569.                 break;
  570.             case 15//Assisstant
  571.                 $pax $item->getSrvPax();
  572.                 if (empty($pax) or $pax == "0") { $pax 1; }
  573.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  574.                 $unitsServ $item->getSrvUnits();
  575.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  576.                 $price $item->getSrvPrice();
  577.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  578.                 $com $item->getSrvCommission() * $opCom;
  579.                 $price $price + (($price $com)/100);
  580.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  581.                 $over $item->getSrvOver() * $opOver;
  582.                 $price $price $over;
  583.                 $neto $price $days $unitsServ $pax;
  584.                 break;
  585.             case 16//DDR
  586.                 $pax $item->getSrvPax();
  587.                 if (empty($pax) or $pax == "0") { $pax 1; }
  588.                 $days = ((($item->getSrvDateOutAt())->diff($item->getSrvDateInAt()))->days 1);
  589.                 $unitsServ $item->getSrvUnits();
  590.                 if (empty($unitsServ) or $unitsServ == "0") { $unitsServ 1; }
  591.                 $price $item->getSrvPrice();
  592.                 $opCom = (empty($item->getSrvOpCommission()) or ($item->getSrvOpCommission() == '0')) ? -1;
  593.                 $com $item->getSrvCommission() * $opCom;
  594.                 $price $price + (($price $com)/100);
  595.                 $opOver = (empty($item->getSrvOpOver()) or ($item->getSrvOpOver() == '0')) ? -1;
  596.                 $over $item->getSrvOver() * $opOver;
  597.                 $price $price $over;
  598.                 $neto $price $days $unitsServ $pax;
  599.                 break;
  600.             default:
  601.                 $neto 0;
  602.                 break;
  603.         }
  604.         if ($type == 'N'){
  605.             return $neto;
  606.         } else {
  607.             $opIva = ($item->getSrvOpIva() == '0') ? -1;
  608.             $iva = (empty($item->getSrvIva())) ? 21 $item->getSrvIva();
  609.             $iva $iva $opIva;
  610.             // Aplicamos el IVA
  611.             $neto $neto + (($neto $iva)/100);
  612.             return $neto;
  613.         }
  614.     }
  615.     private function baseStatisticOcupacy($dateStartReq$dateEndReq)
  616.     {
  617.         $em $this->getDoctrine()->getManager();
  618.         $data = array();
  619.         // Arreglo de reservas facturadas, agrupado por dias
  620.         $arrayDays = array(
  621.             'Lunes' => array(),
  622.             'Martes' => array(),
  623.             'Miercoles' => array(),
  624.             'Jueves' => array(),
  625.             'Viernes' => array(),
  626.             'Sábado' => array(),
  627.             'Domingo' => array(),
  628.         );
  629.         // Arreglo de reservas facturadas, agrupado por meses
  630.         $arrayMonths = array(
  631.             'Enero' => array(),
  632.             'Febrero' => array(),
  633.             'Marzo' => array(),
  634.             'Abril' => array(),
  635.             'Mayo' => array(),
  636.             'Junio' => array(),
  637.             'Julio' => array(),
  638.             'Agosto' => array(),
  639.             'Septiembre' => array(),
  640.             'Octubre' => array(),
  641.             'Noviembre' => array(),
  642.             'Diciembre' => array(),
  643.         );
  644.         if (!empty($dateEndReq) and !empty($dateStartReq)){
  645.             $parameters = array( 'start' => $dateStartReq'end'=> $dateEndReq'facturado'=> 'Invoiced',);
  646.             $dql "SELECT p
  647.                     FROM App\MDS\GreenPatioBundle\Entity\Reservation p
  648.                     WHERE p.dateStart BETWEEN :start AND :end AND p.status = :facturado  
  649.                     ORDER BY p.dateStart ASC
  650.                   ";
  651.             $query $em->createQuery($dql)->setParameters($parameters);
  652.             $data $query->getResult();
  653.         }
  654.         foreach ($data as $item){
  655.             // Arreglo de los expedientes
  656.             $invoice $em->getRepository(ReservationInvoice::class)->findBy( array('reservationId'=>$item->getId()));
  657.             $itemsInvoice $em->getRepository(ReservationInvoiceItems::class)->findBy( array('reservationId'=>$item->getId()));
  658.             if (empty($invoice)){
  659.                 // Factura de Covarrubia
  660.                 $invoice $em->getRepository(CvrReservationInvoice::class)->findBy( array('reservationId'=>$item->getId()));
  661.                 $itemsInvoice $em->getRepository(CvrReservationInvoiceItems::class)->findBy( array('reservationId'=>$item->getId()));
  662.             }
  663.             foreach ($itemsInvoice as $elem){
  664.                 if (!empty($elem->getLngDateStart())) {
  665.                     $fecha $elem->getLngDateStart()->format('Y-m-d');
  666.                     $dia_de_semana date('N'strtotime($fecha));
  667.                     switch ($dia_de_semana) {
  668.                         case 1:                                                             //d('Lunes');
  669.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Lunes'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  670.                             break;
  671.                         case 2:                                                             //d('Martes');
  672.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Martes'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  673.                             break;
  674.                         case 3:                                                             //d('Miércoles');
  675.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Miercoles'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  676.                             break;
  677.                         case 4:                                                             //d('Jueves');
  678.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Jueves'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  679.                             break;
  680.                         case 5:                                                             //d('Viernes');
  681.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Viernes'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  682.                             break;
  683.                         case 6:                                                             //d('Sábado');
  684.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Sábado'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  685.                             break;
  686.                         case 7:                                                             //d('Domingo');
  687.                             if (!empty($elem->getLngLoungeName())){ $arrayDays['Domingo'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  688.                             break;
  689.                         default:                                                            //d('Error al calcular el día');
  690.                             break;
  691.                     }
  692.                     $mes $elem->getLngDateStart()->format('m');
  693.                     switch ($mes) {
  694.                         case 1:                                                             //d('Enero');
  695.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Enero'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  696.                             break;
  697.                         case 2:                                                             //d('Febrero');
  698.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Febrero'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  699.                             break;
  700.                         case 3:                                                             //d('Marzo');
  701.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Marzo'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  702.                             break;
  703.                         case 4:                                                             //d('Abril');
  704.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Abril'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  705.                             break;
  706.                         case 5:                                                             //d('Mayo');
  707.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Mayo'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  708.                             break;
  709.                         case 6:                                                             //d('Junio');
  710.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Junio'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  711.                             break;
  712.                         case 7:                                                             //d('Julio');
  713.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Julio'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  714.                             break;
  715.                         case 8:                                                             //d('Agosto');
  716.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Agosto'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  717.                             break;
  718.                         case 9:                                                             //d('Septiembre');
  719.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Septiembre'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  720.                             break;
  721.                         case 10:                                                             //d('Octubre');
  722.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Octubre'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  723.                             break;
  724.                         case 11:                                                             //d('Noviembre');
  725.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Noviembre'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  726.                             break;
  727.                         case 12:                                                             //d('Diciembre');
  728.                             if (!empty($elem->getLngLoungeName())){ $arrayMonths['Diciembre'][] = array( 'reservationId' => $item->getId(), 'title' => $item->getTitle(), 'clientName' => $invoice[0]->getClientName(), 'nameLounge' => $elem->getLngLoungeName(),); }
  729.                             break;
  730.                         default:                                                            //d('Error al calcular el mes');
  731.                             break;
  732.                     }
  733.                 }
  734.             }
  735.         }
  736.         $sizeDays = array(
  737.             'Lunes' => sizeof($arrayDays['Lunes']),
  738.             'Martes' => sizeof($arrayDays['Martes']),
  739.             'Miercoles' => sizeof($arrayDays['Miercoles']),
  740.             'Jueves' => sizeof($arrayDays['Jueves']),
  741.             'Viernes' => sizeof($arrayDays['Viernes']),
  742.             'Sábado' => sizeof($arrayDays['Sábado']),
  743.             'Domingo' => sizeof($arrayDays['Domingo']),
  744.         );
  745.         arsort($sizeDays);      // Ordenamos en funcion de los dias de ocupacion
  746.         $arraySorted = array();
  747.         foreach ($sizeDays as $key => $item){ $arraySorted[$key] = $arrayDays[$key]; }
  748.         $arrayDays $arraySorted;
  749.         $sizeMonths = array(
  750.             'Enero' => sizeof($arrayMonths['Enero']),
  751.             'Febrero' => sizeof($arrayMonths['Febrero']),
  752.             'Marzo' => sizeof($arrayMonths['Marzo']),
  753.             'Abril' => sizeof($arrayMonths['Abril']),
  754.             'Mayo' => sizeof($arrayMonths['Mayo']),
  755.             'Junio' => sizeof($arrayMonths['Junio']),
  756.             'Julio' => sizeof($arrayMonths['Julio']),
  757.             'Agosto' => sizeof($arrayMonths['Agosto']),
  758.             'Septiembre' => sizeof($arrayMonths['Septiembre']),
  759.             'Octubre' => sizeof($arrayMonths['Octubre']),
  760.             'Noviembre' => sizeof($arrayMonths['Noviembre']),
  761.             'Diciembre' => sizeof($arrayMonths['Diciembre']),
  762.         );
  763.         arsort($sizeMonths);      // Ordenamos en funcion de los dias de ocupacion
  764.         $arraySorted = array();
  765.         foreach ($sizeMonths as $key => $item){ $arraySorted[$key] = $arrayMonths[$key]; }
  766.         $arrayMonths $arraySorted;
  767.         $data = array(
  768.             'arrayDays' => $arrayDays,
  769.             'arrayMonths' => $arrayMonths,
  770.             'sizeDays' => $sizeDays,
  771.             'sizeMonths' => $sizeMonths,
  772.         );
  773.         return $data;
  774.     }
  775. };